Rock-paper-scissors: Difference between revisions
Content added Content deleted
(added qbasic) |
|||
Line 165: | Line 165: | ||
DRAW 5 |
DRAW 5 |
||
COMPUTER_WINS 21</pre> |
COMPUTER_WINS 21</pre> |
||
=={{header|BASIC}}== |
|||
{{works with|QBasic}} |
|||
Note that this was tested in [[FreeBASIC]] using the <code>-lang qb</code> switch, not actually in QBasic. |
|||
<lang qbasic>DIM pPLchoice(1 TO 3) AS INTEGER, pCMchoice(1 TO 3) AS INTEGER |
|||
DIM choices(1 TO 3) AS STRING |
|||
DIM playerwins(1 TO 3) AS INTEGER |
|||
DIM playerchoice AS INTEGER, compchoice AS INTEGER |
|||
DIM playerwon AS INTEGER, compwon AS INTEGER, tie AS INTEGER |
|||
DIM tmp AS INTEGER |
|||
' Do it this way for QBasic; FreeBASIC supports direct array assignment. |
|||
DATA "rock", "paper", "scissors" |
|||
FOR tmp = 1 to 3 |
|||
READ choices(tmp) |
|||
NEXT |
|||
DATA 3, 1, 2 |
|||
FOR tmp = 1 to 3 |
|||
READ playerwins(tmp) |
|||
NEXT |
|||
RANDOMIZE TIMER |
|||
DO |
|||
' Computer chooses first to ensure there's no "cheating". |
|||
compchoice = INT(RND * (pPLchoice(1) + pPLchoice(2) + pPLchoice(3) + 3)) |
|||
SELECT CASE compchoice |
|||
CASE 0 to (pPLchoice(1)) |
|||
' Player past choice: rock; choose paper. |
|||
compchoice = 2 |
|||
CASE (pPLchoice(1) + 1) TO (pPLchoice(1) + pPLchoice(2) + 1) |
|||
' Player past choice: paper; choose scissors. |
|||
compchoice = 3 |
|||
CASE (pPLchoice(1) + pPLchoice(2) + 2) TO (pPLchoice(1) + pPLchoice(2) + pPLchoice(3) + 2) |
|||
' Player past choice: scissors; choose rock. |
|||
compchoice = 1 |
|||
END SELECT |
|||
PRINT "Rock, paper, or scissors "; |
|||
DO |
|||
PRINT "[1 = rock, 2 = paper, 3 = scissors, 0 to quit]"; |
|||
INPUT playerchoice |
|||
LOOP WHILE (playerchoice < 0) OR (playerchoice > 3) |
|||
IF 0 = playerchoice THEN EXIT DO |
|||
pCMchoice(compchoice) = pCMchoice(compchoice) + 1 |
|||
pPLchoice(playerchoice) = pPLchoice(playerchoice) + 1 |
|||
PRINT "You chose "; choices(playerchoice); " and I chose "; choices(compchoice); ". "; |
|||
IF (playerchoice) = compchoice THEN |
|||
PRINT "Tie!" |
|||
tie = tie + 1 |
|||
ELSEIF (compchoice) = playerwins(playerchoice) THEN |
|||
PRINT "You won!" |
|||
playerwon = playerwon + 1 |
|||
ELSE |
|||
PRINT "I won!" |
|||
compwon = compwon + 1 |
|||
END IF |
|||
LOOP |
|||
PRINT "Some useless statistics:" |
|||
PRINT "You won "; STR$(playerwon); " times, and I won "; STR$(compwon); " times; "; STR$(tie); " ties." |
|||
PRINT , choices(1), choices(2), choices(3) |
|||
PRINT "You chose:", pPLchoice(1), pPLchoice(2), pPLchoice(3) |
|||
PRINT " I chose:", pCMchoice(1), pCMchoice(2), pCMchoice(3)</lang> |
|||
A sample game: |
|||
$ ./rokpprscr |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? 1 |
|||
You chose rock and I chose paper. I won! |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? 1 |
|||
You chose rock and I chose scissors. You won! |
|||
[... 56 more times choosing "rock"...] |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? 1 |
|||
You chose rock and I chose paper. I won! |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? 1 |
|||
You chose rock and I chose paper. I won! |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? 3 |
|||
You chose scissors and I chose paper. You won! |
|||
Rock, paper, or scissors [1 = rock, 2 = paper, 3 = scissors, 0 to quit]? |
|||
Some useless statistics: |
|||
You won 5 times, and I won 54 times; 2 ties. |
|||
rock paper scissors |
|||
You chose: 60 0 1 |
|||
I chose: 2 55 4 |
|||
=={{header|BBC BASIC}}== |
=={{header|BBC BASIC}}== |