82 lines
1.8 KiB
Plaintext
82 lines
1.8 KiB
Plaintext
REM >penney
|
|
PRINT "*** Penney's Game ***"
|
|
REPEAT
|
|
PRINT ' "Heads you pick first, tails I pick first."
|
|
PRINT "And it is... ";
|
|
WAIT 100
|
|
ht% = RND(0 - TIME) AND 1
|
|
IF ht% THEN
|
|
PRINT "heads!"
|
|
PROC_player_chooses(player$)
|
|
computer$ = FN_optimal(player$)
|
|
PRINT "I choose "; computer$; "."
|
|
ELSE
|
|
PRINT "tails!"
|
|
computer$ = FN_random
|
|
PRINT "I choose "; computer$; "."
|
|
PROC_player_chooses(player$)
|
|
ENDIF
|
|
PRINT "Starting the game..." ' SPC 5;
|
|
sequence$ = ""
|
|
winner% = FALSE
|
|
REPEAT
|
|
WAIT 100
|
|
roll% = RND AND 1
|
|
IF roll% THEN
|
|
sequence$ += "H"
|
|
PRINT "H ";
|
|
ELSE
|
|
PRINT "T ";
|
|
sequence$ += "T"
|
|
ENDIF
|
|
IF RIGHT$(sequence$, 3) = computer$ THEN
|
|
PRINT ' "I won!"
|
|
winner% = TRUE
|
|
ELSE
|
|
IF RIGHT$(sequence$, 3) = player$ THEN
|
|
PRINT ' "Congratulations! You won."
|
|
winner% = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
UNTIL winner%
|
|
REPEAT
|
|
valid% = FALSE
|
|
INPUT "Another game? (Y/N) " another$
|
|
IF INSTR("YN", another$) THEN valid% = TRUE
|
|
UNTIL valid%
|
|
UNTIL another$ = "N"
|
|
PRINT "Thank you for playing!"
|
|
END
|
|
:
|
|
DEF PROC_player_chooses(RETURN sequence$)
|
|
LOCAL choice$, valid%, i%
|
|
REPEAT
|
|
valid% = TRUE
|
|
PRINT "Enter a sequence of three choices, each of them either H or T:"
|
|
INPUT "> " sequence$
|
|
IF LEN sequence$ <> 3 THEN valid% = FALSE
|
|
IF valid% THEN
|
|
FOR i% = 1 TO 3
|
|
choice$ = MID$(sequence$, i%, 1)
|
|
IF choice$ <> "H" AND choice$ <> "T" THEN valid% = FALSE
|
|
NEXT
|
|
ENDIF
|
|
UNTIL valid%
|
|
ENDPROC
|
|
:
|
|
DEF FN_random
|
|
LOCAL sequence$, choice%, i%
|
|
sequence$ = ""
|
|
FOR i% = 1 TO 3
|
|
choice% = RND AND 1
|
|
IF choice% THEN sequence$ += "H" ELSE sequence$ += "T"
|
|
NEXT
|
|
= sequence$
|
|
:
|
|
DEF FN_optimal(sequence$)
|
|
IF MID$(sequence$, 2, 1) = "H" THEN
|
|
= "T" + LEFT$(sequence$, 2)
|
|
ELSE
|
|
= "H" + LEFT$(sequence$, 2)
|
|
ENDIF
|