ChatGPT - TTT C64 (2).txt

(3 KB) Pobierz
10 REM Tic Tac Toe - C64 BASIC
20 REM Learning Edition
30 REM by OpenAI
40 REM
50 REM Initialize the game board
60 DIM BOARD(3,3)
70 FOR ROW=1 TO 3
80 FOR COL=1 TO 3
90 BOARD(ROW,COL)=" "
100 NEXT COL
110 NEXT ROW
120 REM
130 REM Display the game board
140 PRINT "TIC TAC TOE": PRINT
150 PRINT " 1 | 2 | 3 "
160 PRINT "---+--+--"
170 PRINT " 4 | 5 | 6 "
180 PRINT "---+--+--"
190 PRINT " 7 | 8 | 9 "
200 REM
210 REM Main game loop
220 FOR TURN=1 TO 9
230 REM Determine who's turn it is
240 IF (TURN MOD 2)=0 THEN 260
242 PRINT "Do you want to play with X or O? (X/O)"
244 INPUT XO
246 IF XO="X" THEN PLAYER="X" ELSE PLAYER="O"
250 PLAYER="X"
260 ELSE
270 PLAYER="O"
280 END IF
290 REM
300 REM Get player's move
310 PRINT "Player "; PLAYER; " turn. Enter move (1-9): ";
320 INPUT MOVE
330 REM
340 REM Validate move
350 IF MOVE < 1 OR MOVE > 9 THEN PRINT "Invalid move. Please enter a number between 1 and 9.": GOTO 310
360 ROW=INT((MOVE-1)/3)
370 COL=MOVE-3*(ROW-1)
380 IF BOARD(ROW,COL)<>" " THEN 310
400 BOARD(ROW,COL)=PLAYER
410 REM
420 REM Display game board
430 PRINT "TIC TAC TOE": PRINT
440 PRINT " "; BOARD(1,1); " | "; BOARD(1,2); " | "; BOARD(1,3); " "
450 PRINT "---+--+--"
460 PRINT " "; BOARD(2,1); " | "; BOARD(2,2); " | "; BOARD(2,3); " "
470 PRINT "---+--+--"
480 PRINT " "; BOARD(3,1); " | "; BOARD(3,2); " | "; BOARD(3,3); " "
490 REM
500 REM Check for win
510 IF (BOARD(1,1)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,3)=PLAYER) OR _
520 (BOARD(1,3)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,1)=PLAYER) OR _
530 (BOARD(1,1)=PLAYER AND BOARD(1,2)=PLAYER AND BOARD(1,3)=PLAYER) OR _
540 (BOARD(2,1)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(2,3)=PLAYER) OR _
550 (BOARD(3,1)=PLAYER AND BOARD(3,2)=PLAYER AND BOARD(3,3)=PLAYER) OR _
580 (BOARD(1,2)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,2)=PLAYER) THEN
590 PRINT "Player "; PLAYER; " wins!"
600 GOTO 620
610 END IF
620 REM
630 NEXT TURN
640 REM
650 REM Check for draw
660 IF TURN = 9 THEN
670 PRINT "It's a draw!"
680 END IF
690 REM
700 REM Add learning feature for BOARD
710 REM Store the previous move in a list
720 DIM MOVES(9,3)
730 FOR I=1 TO 9
740 MOVES(I,1)=I
750 NEXT I
760 REM
770 REM Store the outcome of the previous games in a list
780 DIM OUTCOMES(9)
790 REM
800 REM Update the list after each game
810 OUTCOME=-1
820 IF TURN=9 THEN OUTCOME=0
830 IF BOARD(1,1)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,3)=PLAYER THEN OUTCOME=1
840 IF BOARD(1,3)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,1)=PLAYER THEN OUTCOME=1
850 IF BOARD(1,1)=PLAYER AND BOARD(1,2)=PLAYER AND BOARD(1,3)=PLAYER THEN OUTCOME=1
860 IF BOARD(2,1)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(2,3)=PLAYER THEN OUTCOME=1
870 IF BOARD(3,1)=PLAYER AND BOARD(3,2)=PLAYER AND BOARD(3,3)=PLAYER THEN OUTCOME=1
880 IF BOARD(1,2)=PLAYER AND BOARD(2,2)=PLAYER AND BOARD(3,2)=PLAYER THEN OUTCOME=1
890 REM
900 REM Add the outcome to the list of outcomes
910 FOR I=8 TO 1 STEP -1
920 OUTCOMES(I)=OUTCOMES(I)
930 NEXT I
940 OUTCOMES(1)=OUTCOME
950 REM
960 REM Make the computer player smarter by learning from its mistakes
970 IF PLAYER="O" THEN
980 REM Check the outcomes of the previous moves
990 BESTMOVE=0
1000 BESTOUTCOME=-1
1010 FOR I=1 TO 9
1020 IF BOARD(INT((MOVES(I,1)-1)/3),MOVES(I,1)-3*(INT((MOVES(I,1)-1)/3)1))=" " THEN
1030 IF OUTCOMES(I)>BESTOUTCOME THEN
1040 BESTMOVE=MOVES(I,1)
1050 BESTOUTCOME=OUTCOMES(I)
1060 END IF
1070 END IF
1080 NEXT I
1090 MOVE=BESTMOVE
1100 END IF
1110 REM
1120 REM Repeat the main game loop
1130 GOTO 220
1140 REM
1150 END
Zgłoś jeśli naruszono regulamin