54 lines
1.7 KiB
Plaintext
54 lines
1.7 KiB
Plaintext
100 PROGRAM "Rock.bas"
|
|
110 RANDOMIZE
|
|
120 STRING CH$(1 TO 3)*8,K$*1
|
|
130 NUMERIC PLWINS(1 TO 3),SCORE(1 TO 3),PLSTAT(1 TO 3),CMSTAT(1 TO 3),PLCHOICE,CMCHOICE
|
|
140 CALL INIC
|
|
150 DO
|
|
160 CALL GUESS
|
|
170 PRINT :PRINT "Rock, paper, or scissors (1 = rock, 2 = paper, 3 = scissors, ESC = quit)"
|
|
180 DO
|
|
190 LET K$=INKEY$
|
|
200 LOOP UNTIL K$>="1" AND K$<="3" OR K$=CHR$(27)
|
|
210 IF K$=CHR$(27) THEN EXIT DO
|
|
220 LET PLCHOICE=VAL(K$)
|
|
230 LET CMSTAT(CMCHOICE)=CMSTAT(CMCHOICE)+1:LET PLSTAT(PLCHOICE)=PLSTAT(PLCHOICE)+1
|
|
240 PRINT "You chose ";CH$(PLCHOICE);" and I chose ";CH$(CMCHOICE);"."
|
|
250 SET #102:INK 3
|
|
260 IF PLCHOICE=CMCHOICE THEN
|
|
270 PRINT "Tie!"
|
|
280 LET SCORE(3)=SCORE(3)+1
|
|
290 ELSE IF CMCHOICE=PLWINS(PLCHOICE) THEN
|
|
300 PRINT "You won!"
|
|
310 LET SCORE(1)=SCORE(1)+1
|
|
320 ELSE
|
|
330 PRINT "I won!"
|
|
340 LET SCORE(2)=SCORE(2)+1
|
|
350 END IF
|
|
360 SET #102:INK 1
|
|
370 LOOP
|
|
380 PRINT :PRINT "Some useless statistics:"
|
|
390 PRINT "You won";SCORE(1);"times, and I won";SCORE(2);"times;";SCORE(3);"ties."
|
|
400 PRINT :PRINT ,,CH$(1),CH$(2),CH$(3)
|
|
410 PRINT "You chose:",PLSTAT(1),PLSTAT(2),PLSTAT(3)
|
|
420 PRINT " I chose:",CMSTAT(1),CMSTAT(2),CMSTAT(3)
|
|
430 END
|
|
440 DEF INIC
|
|
450 LET CH$(1)="rock":LET CH$(2)="paper":LET CH$(3)="scissors"
|
|
460 LET PLWINS(1)=3:LET PLWINS(2)=1:LET PLWINS(3)=2
|
|
470 FOR I=1 TO 3
|
|
480 LET PLSTAT(I),CMSTAT(I),SCORE(I)=0
|
|
490 NEXT
|
|
500 TEXT 80
|
|
510 END DEF
|
|
520 DEF GUESS
|
|
530 LET CMCHOICE=INT(RND*(PLSTAT(1)+PLSTAT(2)+PLSTAT(3)+3))
|
|
540 SELECT CASE CMCHOICE
|
|
550 CASE 0 TO PLSTAT(1)
|
|
560 LET CMCHOICE=2
|
|
570 CASE PLSTAT(1)+1 TO PLSTAT(1)+PLSTAT(2)+1
|
|
580 LET CMCHOICE=3
|
|
590 CASE ELSE
|
|
600 LET CMCHOICE=1
|
|
610 END SELECT
|
|
620 END DEF
|