Statistics: Posted by Anthony.R.Brown — Thu Aug 19, 2021 8:06 am
Statistics: Posted by Anthony.R.Brown — Mon May 31, 2021 1:48 pm
Statistics: Posted by Anthony.R.Brown — Tue May 25, 2021 4:53 am
Statistics: Posted by Anthony.R.Brown — Tue May 25, 2021 4:51 am
Statistics: Posted by Anthony.R.Brown — Tue May 25, 2021 4:50 am
Statistics: Posted by Anthony.R.Brown — Sun May 23, 2021 2:19 pm
Statistics: Posted by Anthony.R.Brown — Fri May 21, 2021 1:46 pm
Statistics: Posted by Anthony.R.Brown — Sun May 16, 2021 1:29 pm
Statistics: Posted by Anthony.R.Brown — Fri Apr 23, 2021 5:49 am
Statistics: Posted by Anthony.R.Brown — Thu Apr 15, 2021 5:18 am
Statistics: Posted by Anthony.R.Brown — Sun Feb 07, 2021 2:10 pm
Code:
DECLARE FUNCTION XWIN% (B1 AS INTEGER, B2 AS INTEGER, B3 AS INTEGER, L AS INTEGER)DECLARE FUNCTION OWIN% (B1 AS INTEGER, B2 AS INTEGER, B3 AS INTEGER, L AS INTEGER)DECLARE SUB WINNER (LINEUP AS INTEGER)DECLARE SUB SHOWWIN (B1 AS INTEGER, B2 AS INTEGER, B3 AS INTEGER)DECLARE SUB GETUSERSIGNAL ()DECLARE SUB ENABLEMOUSE (C%)DECLARE SUB DRAWSCREEN ()DECLARE SUB XO (ROW%, COL%, SYMBOL%)DIM SHARED FALSE AS INTEGER, TRUE AS INTEGER: TRUE = NOT FALSEDIM SHARED SYMBOLBOX(6000) AS INTEGER '<---NOTEDIM SHARED CH AS INTEGER: 'CURSOR POSITION HORIZONTALDIM SHARED CV AS INTEGER: 'CURSOR POSITION VERTICALDIM SHARED CLICK AS INTEGER: ' 0=NO CLICK, 1=LEFT CLICK, 2=RIGHT' ENABLEMOUSE 1 = TURN CURSOR ON, RETURN COORDINATES' ENABLEMOUSE 0 = TURN CURSOR OFF IN ORDER TO DRAW STUFF, ETC.DIM SHARED CC AS STRING: 'USER PRESSED KEY' GETUSERSIGNAL WILL SET RETURN CC OR WILL RETURN CLICKDIM I AS INTEGER, J AS INTEGER, K AS INTEGERDIM WHOWON AS INTEGERDIM MADEAMOVE AS INTEGER, MOVESMADE AS INTEGER' ----------------------------------------------------------' TITLE SCREEN (MAIN PROGRAM)' -----------------------------------------------------------SCREEN 12RANDOMIZE TIMERDIM COMMAND AS INTEGER, HARD AS INTEGERGOSUB INITIALIZESCREENDO DO: GETUSERSIGNAL: LOOP UNTIL CLICK = 1 GOSUB FINDCLICKEDCOMMAND SELECT CASE COMMAND CASE 1: HARD = FALSE WHOWON = 0 GOSUB PLAYGAME GOSUB SHOWWHOWON GOSUB INITIALIZESCREEN CASE 2: HARD = TRUE WHOWON = 0 GOSUB PLAYGAME GOSUB SHOWWHOWON GOSUB INITIALIZESCREEN CASE 3: GOSUB DOHELP GOSUB INITIALIZESCREEN CASE 4: EXIT DO END SELECTLOOPCOLOR 7: CLSSYSTEM' ----------------------------------------------------------' GAME SCREEN' -----------------------------------------------------------DIM SHARED ZX(9) AS INTEGER: ' WHERE ALL X'S ARE PLACEDDIM SHARED ZO(9) AS INTEGER: ' WHERE ALL O'S ARE PLACEDDIM SHARED ZE(9) AS INTEGER: ' WHERE EMPTY SQUARES AREDIM THEROW AS INTEGER, THECOLUMN AS INTEGER, THEBOX AS INTEGERFINDCLICKEDPOSITION:CONST DELTA = 4THEROW = 0: THECOLUMN = 0: THEBOX = 0SELECT CASE CH CASE IS < 170 + DELTA: RETURN CASE IS < 269 - DELTA: THECOLUMN = 1 CASE IS < 269 + DELTA: RETURN CASE IS < 368 - DELTA: THECOLUMN = 2 CASE IS < 368 + DELTA: RETURN CASE IS < 467 - DELTA: THECOLUMN = 3 CASE ELSE: RETURNEND SELECTSELECT CASE CV CASE IS < 91 + DELTA: RETURN CASE IS < 190 - DELTA: THEROW = 1 CASE IS < 190 + DELTA: RETURN CASE IS < 289 - DELTA: THEROW = 2 CASE IS < 289 + DELTA: RETURN CASE IS < 388 - DELTA: THEROW = 3 CASE ELSE: RETURNEND SELECTTHEBOX = (3 * (THEROW - 1)) + THECOLUMNRETURN' ----------------------------------------------------------' PLAY GAME' -----------------------------------------------------------PLAYGAME:DRAWSCREEN 'DRAW THE SCREEN AND CREATE X AND O SYMBOLS.FOR I = 1 TO 9: ZO(I) = FALSE: ZX(I) = FALSE: ZE(I) = TRUE: NEXT IMOVESMADE = 0DO GETUSERSIGNAL IF CLICK THEN MADEAMOVE = FALSE GOSUB MAKEX IF MADEAMOVE THEN WHOWON = 1: GOSUB COMPUTEWIN: IF WHOWON = 1 THEN RETURN T% = 0 FOR I = 1 TO 9: T% = T% + ZX(I): NEXT I IF T% = -5 THEN WHOWON = 0: RETURN MOVESMADE = MOVESMADE + 1 GOSUB MAKEO WHOWON = 2: GOSUB COMPUTEWIN: IF WHOWON = 2 THEN RETURN END IF END IF IF CC = "D" OR CC = CHR$(27) THEN WHOWON = 3 IF WHOWON > 0 THEN RETURNLOOPMAKEX:GOSUB FINDCLICKEDPOSITIONIF THEBOX = 0 THEN RETURNIF NOT ZE(THEBOX) THEN RETURNXO THEROW, THECOLUMN, 1: ' PLACES AN XZX(THEBOX) = TRUE: ZE(THEBOX) = FALSEMADEAMOVE = TRUERETURNMAKEO:GOSUB FINDPLACEFOROSLEEP 1: WHILE INKEY$ <> "": WENDXO THEROW, THECOLUMN, 0: 'PLACES AN OZO(THEBOX) = TRUE: ZE(THEBOX) = FALSERETURNCOMPUTEWIN:IF WHOWON = 1 THEN IF XWIN(1, 2, 3, 1) THEN RETURN IF XWIN(4, 5, 6, 2) THEN RETURN IF XWIN(7, 8, 9, 3) THEN RETURN IF XWIN(1, 4, 7, 4) THEN RETURN IF XWIN(2, 5, 8, 5) THEN RETURN IF XWIN(3, 6, 9, 6) THEN RETURN IF XWIN(1, 5, 9, 7) THEN RETURN IF XWIN(3, 5, 7, 8) THEN RETURNELSE IF OWIN(1, 2, 3, 1) THEN RETURN IF OWIN(4, 5, 6, 2) THEN RETURN IF OWIN(7, 8, 9, 3) THEN RETURN IF OWIN(1, 4, 7, 4) THEN RETURN IF OWIN(2, 5, 8, 5) THEN RETURN IF OWIN(3, 6, 9, 6) THEN RETURN IF OWIN(1, 5, 9, 7) THEN RETURN IF OWIN(3, 5, 7, 8) THEN RETURNEND IFWHOWON = 0RETURNFINDPLACEFORO:' SEE IF THERE IS A WIN FOR O. IF SO, TAKE IT.' SEE IF THERE IS A THREAT OF A WIN FOR X. IF SO, BLOCK IT.FOR TESTTYPE% = 1 TO 2 THEBOX = 0 FOR THEROW = 1 TO 3: FOR THECOLUMN = 1 TO 3 THEBOX = THEBOX + 1 IF ZE(THEBOX) THEN TK$ = "" SELECT CASE THEBOX CASE 1: TK$ = "234759" CASE 2: TK$ = "1358" CASE 3: TK$ = "126957" CASE 4: TK$ = "1756" CASE 5: TK$ = "19283746" CASE 6: TK$ = "4539" CASE 7: TK$ = "148935" CASE 8: TK$ = "2579" CASE 9: TK$ = "153678" END SELECT FOR I = 1 TO LEN(TK$) STEP 2 J = VAL(MID$(TK$, I, 1)) K = VAL(MID$(TK$, I + 1, 1)) IF TESTTYPE% = 1 THEN IF ZO(J) + ZO(K) < -1 THEN RETURN ELSE IF ZX(J) + ZX(K) < -1 THEN RETURN END IF NEXT I END IF NEXT THECOLUMN: NEXT THEROWNEXT TESTTYPE%' NO MOVE SELECTED ABOVE TO WIN OR BLOCK WIN, SOIF HARD THEN IF MOVESMADE = 1 THEN IF ZE(5) THEN THEROW = 2: THECOLUMN = 2: THEBOX = 5 ELSE IF RND > .5 THEN THEROW = 1 ELSE THEROW = 3 IF RND > .5 THEN THECOLUMN = 1 ELSE THECOLUMN = 3 THEBOX = (3 * (THEROW - 1)) + THECOLUMN END IF RETURN ELSEIF MOVESMADE = 2 THEN IF ZX(5) THEN TK$ = "" IF ZO(1) AND ZX(9) THEN TK$ = "37" ELSEIF ZO(3) AND ZX(7) THEN TK$ = "19" ELSEIF ZO(7) AND ZX(3) THEN TK$ = "19" ELSEIF ZO(9) AND ZX(1) THEN TK$ = "37" END IF IF TK$ <> "" THEN IF RND > .5 THEN THEBOX = VAL(LEFT$(TK$, 1)) ELSE THEBOX = VAL(LEFT$(TK$, 1)) END IF THEROW = (THEBOX + 2) \ 3 THECOLUMN = THEBOX - (3 * (THEROW - 1)) RETURN END IF ELSE DO DO: THEBOX = 2 * INT(1 + (RND * 4)): LOOP WHILE NOT ZE(THEBOX) SELECT CASE THEBOX CASE 2: IF NOT ZX(8) THEN EXIT DO CASE 4: IF NOT ZX(6) THEN EXIT DO CASE 6: IF NOT ZX(4) THEN EXIT DO CASE 8: IF NOT ZX(2) THEN EXIT DO END SELECT LOOP THEROW = (THEBOX + 2) \ 3 THECOLUMN = THEBOX - (3 * (THEROW - 1)) RETURN END IF END IFEND IF' OK, NO GOOD MOVE WAS FOUND. MAKE A RANDOM ONEDO: THEBOX = 1 + INT(RND * 9): LOOP WHILE NOT ZE(THEBOX)THEROW = (THEBOX + 2) \ 3THECOLUMN = THEBOX - (3 * (THEROW - 1))RETURNSHUFFLE:DO WHILE LEN(W1$) < 4 R% = 1 + INT(RND * 4) IF MID$(W2$, R%, 1) <> "X" THEN W1$ = W1$ + MID$(W2$, R%, 1) MID$(W2$, R%, 1) = "X" END IFLOOPRETURNSHOWWHOWON:SELECT CASE WHOWON CASE 0: C$ = "TIE! " CASE 1: C$ = "YOU WIN! " CASE 2: C$ = "YOU LOSE! " CASE 3: C$ = "YOU RESIGNED?"END SELECTIF WHOWON < 3 THEN SLEEP 2: WHILE INKEY$ <> "": WENDCLSFOR I = 1 TO 30 COLOR 1 + INT(RND * 15) LOCATE I, I + 20 PRINT C$;NEXT ISLEEP 3: WHILE INKEY$ <> "": WENDRETURNINITIALIZESCREEN:CLSCOLOR 15LOCATE 4, 23: PRINT "TIC TAC TOE BY PAUL MEYER & THEBOB"LOCATE 6, 27: PRINT "(C) 2004 - 2007 DOS-ID GAMES"COLOR 3DS% = 131: DD% = 97: DZ% = 75LINE (DS%, 343)-(DS% + DZ%, 380), , BFLINE (DS% + (1 * DD%), 343)-(DS% + (1 * DD%) + DZ%, 380), , BFLINE (DS% + (2 * DD%), 343)-(DS% + (2 * DD%) + DZ%, 380), , BFLINE (DS% + (3 * DD%), 343)-(DS% + (3 * DD%) + DZ%, 380), , BFLOCATE 23, 19: PRINT " EASY ";LOCATE , 31: PRINT " HARD ";LOCATE , 43: PRINT " INFO ";LOCATE , 55: PRINT " QUIT "RETURNFINDCLICKEDCOMMAND:COMMAND = 0SELECT CASE CV CASE IS < 343: RETURN CASE IS > 380: RETURNEND SELECTSELECT CASE CH CASE IS < 130: RETURN CASE IS < 205: COMMAND = 1 CASE IS < 227: RETURN CASE IS < 303: COMMAND = 2 CASE IS < 325: RETURN CASE IS < 400: COMMAND = 3 CASE IS < 421: RETURN CASE IS < 497: COMMAND = 4END SELECTRETURNDOHELP:CLSCOLOR 2LOCATE 3, 1PRINT "CREDITS"PRINT "-------"PRINT "THIS GAME WAS CREATED BY PAUL MEYER IN THE YEAR 2007."PRINT: PRINT "GRAPHICS BY THEBOB"PRINT: PRINT "IMPROVED MOUSE DRIVER, MODULARITY, MACHINE PLAY-TO-WIN";PRINT " BY QBASIC MAC"PRINT: PRINT "HISTORY:"PRINT "HTTP://WWW.NETWORK54.COM/FORUM/190883/MESSAGE/1175106480"PRINTPRINT "THIS IS FREEWARE, YOU MAY CHANGE THIS AS MUCH AS YOU WANT"PRINT "AS LONG AS YOU DON'T CLAIM IT AS YOURS."PRINTPRINTPRINT "ABOUT"PRINT "-----"PRINT "THIS IS JUST A SIMPLE TIC TAC TOE GAME WITH MOUSE DRIVERS."PRINT "THIS GAME WAS CREATED IN QUICKBASIC."CALL GETUSERSIGNALCLSRETURNSUB DRAWSCREEN DIM X AS INTEGER, Y AS INTEGER STATIC FINISHED AS INTEGER CLS OUT &H3C8, 0: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 18 OUT &H3C8, 4: OUT &H3C9, 63: OUT &H3C9, 0: OUT &H3C9, 0 OUT &H3C8, 9: OUT &H3C9, 0: OUT &H3C9, 12: OUT &H3C9, 48 OUT &H3C8, 11: OUT &H3C9, 0: OUT &H3C9, 18: OUT &H3C9, 54 COLOR 7: LOCATE 3, 31: PRINT "T I C - T A C - T O E" LINE (170, 90)-(490, 410), 0, BF LINE (160, 81)-(479, 399), 1, BF LINE (155, 76)-(483, 404), 8, B LINE (152, 73)-(487, 407), 8, B LINE (160, 81)-(160, 399), 9 LINE (160, 81)-(479, 81), 9 LINE (371, 92)-(372, 393), 0, B LINE (271, 92)-(272, 392), 0, B LINE (171, 191)-(472, 192), 0, B LINE (171, 291)-(472, 292), 0, B LINE (369, 90)-(370, 390), 13, B LINE (269, 90)-(270, 390), 13, B LINE (169, 189)-(470, 190), 13, B LINE (169, 289)-(470, 290), 13, B LINE (5, 5)-(634, 474), 8, B LINE (10, 10)-(629, 469), 8, B IF FINISHED THEN EXIT SUB FINISHED = TRUE FOR X = 194 TO 500 FOR Y = 32 TO 46 IF POINT(X, Y) = 8 THEN PSET (X, Y), 7 NEXT Y NEXT X PSET (188, 108), 0 DRAW "E3 F30 E30 F6 G30 F30 G6 H30 G30 H6 E30 H30 E3 BF2 P0,0" PSET (186, 106), 10 DRAW "E3 F30 E30 F6 G30 F30 G6 H30 G30 H6 E30 H30 E3 BF2 P10,10" CIRCLE (322, 141), 31, 0 CIRCLE (322, 141), 37, 0 PAINT STEP(0, 35), 0 PSET STEP(0, -35), 0 CIRCLE (320, 139), 31, 4 CIRCLE (320, 139), 37, 4 PAINT STEP(0, 35), 4 PSET STEP(0, -35), 1 GET STEP(-40, -40)-STEP(81, 81), SYMBOLBOX() GET (179, 98)-(260, 178), SYMBOLBOX(3000) XO 1, 1, 2: XO 1, 2, 2END SUBSUB ENABLEMOUSE (C%) STATIC STATUS AS INTEGER IF STATUS = 0 AND C% = 0 THEN EXIT SUB STATIC MX AS STRING IF MX = "" THEN M$ = "58E85080585080585080850815510C358508058508085080850815C00" N$ = "595BECB70BEAB70BE8BFBE6B7B8E7D33BEC978BEA97BE89FBE697DA80" MX = SPACE$(57) FOR I% = 1 TO 57 H$ = CHR$(VAL("&H" + MID$(M$, I%, 1) + MID$(N$, I%, 1))) MID$(MX, I%, 1) = H$ NEXT I% END IF IF C% = 0 THEN CALL ABSOLUTE(2, CLICK, CH, CV, SADD(MX)) STATUS = 0 EXIT SUB END IF IF STATUS = 0 THEN CALL ABSOLUTE(1, CLICK, CH, CV, SADD(MX)) STATUS = 1 CALL ABSOLUTE(3, CLICK, CH, CV, SADD(MX))END SUBSUB GETUSERSIGNAL DO IF 0 THEN ' SET TO 1 FOR DEBUGGING PRINTOUT, OTHERWISE 0 LOCATE 2, 1 PRINT CLICK; "<CLICK" PRINT CH; "CH (HORIZONTAL)" PRINT CV; "CV (VERTICLE)" END IF ENABLEMOUSE 1 IF CLICK > 0 THEN K% = CLICK WHILE CLICK <> 0: ENABLEMOUSE 1: WEND CLICK = K% EXIT DO END IF CC = INKEY$ LOOP WHILE CC = "" ENABLEMOUSE 0END SUBFUNCTION OWIN% (B1 AS INTEGER, B2 AS INTEGER, B3 AS INTEGER, L AS INTEGER) IF ZO(B1) = 0 OR ZO(B2) = 0 OR ZO(B3) = 0 THEN EXIT FUNCTION WINNER L OWIN% = -1END FUNCTIONSUB WINNER (LINEUP AS INTEGER) SELECT CASE LINEUP CASE 1: LINE (200, 140)-(440, 142), 14, BF: LINE (200, 143)-(440, 144), 0, B CASE 2: LINE (200, 240)-(440, 242), 14, BF: LINE (200, 243)-(440, 244), 0, B CASE 3: LINE (200, 340)-(440, 342), 14, BF: LINE (200, 343)-(440, 344), 0, B CASE 4: LINE (220, 120)-(222, 360), 14, BF: LINE (223, 120)-(223, 360), 0 CASE 5: LINE (320, 120)-(322, 360), 14, BF: LINE (323, 120)-(323, 360), 0 CASE 6: LINE (420, 120)-(422, 360), 14, BF: LINE (423, 120)-(423, 360), 0 CASE 7: PSET (200, 120), 14: DRAW "F240 D H240 D F240 D H240 D C0 F240 D H240" CASE 8: PSET (440, 120), 14: DRAW "G240 D E240 D G240 D E240 D C0 G240 D E240" END SELECTEND SUBSUB XO (ROW AS INTEGER, COL AS INTEGER, SYMBOL AS INTEGER) DIM INDEX AS INTEGER, X AS INTEGER, Y AS INTEGER X = (COL - 1) * 100 + 180 Y = (ROW - 1) * 100 + 100 INDEX = SYMBOL * 3000 IF INDEX < 6000 THEN PUT (X, Y), SYMBOLBOX(INDEX), PSET ELSE LINE (X, Y)-(X + 80, Y + 80), 1, BF END IFEND SUBFUNCTION XWIN% (B1 AS INTEGER, B2 AS INTEGER, B3 AS INTEGER, L AS INTEGER) IF ZX(B1) = 0 OR ZX(B2) = 0 OR ZX(B3) = 0 THEN EXIT FUNCTION WINNER L XWIN% = -1END FUNCTION
Statistics: Posted by Anthony.R.Brown — Sun Feb 07, 2021 1:58 pm
Code:
nWinO, nWinX, nDraw = 0, 0, 0 def recurse(board, toMove): global nWinO, nWinX, nDraw def win(board, player): return (any(all(board[i][j] == player for j in range(3)) for i in range(3)) or any(all(board[i][j] == player for i in range(3)) for j in range(3)) or all(board[i][i] == player for i in range(3)) or all(board[i][2-i] == player for i in range(3))) def draw(board): return all(board[i][j] != '' for i in range(3) for j in range(3)) if win(board, 'O'): nWinO += 1 elif win(board, 'X'): nWinX += 1 elif draw(board): nDraw += 1 else: for i in range(3): for j in range(3): if board[i][j] == '': board[i][j] = toMove recurse(board, 'X' if toMove == 'O' else 'O') board[i][j] = '' recurse([['','',''],['','',''],['','','']], 'O') print("There are %d possible games (excluding symmetry), of which O wins %d, X wins %d and %d are drawn." % (nWinO+nWinX+nDraw,nWinO,nWinX,nDraw))
Code:
#include <stdio.h>#include <conio.h>char square[10] = { 'o', '1', '2', '3', '4', '5', '6', '7', '8', '9' };int checkwin();void board();int main(){ int player = 1, i, choice; char mark; do { board(); player = (player % 2) ? 1 : 2; printf("Player %d, enter a number: ", player); scanf("%d", &choice); mark = (player == 1) ? 'X' : 'O'; if (choice == 1 && square[1] == '1') square[1] = mark; else if (choice == 2 && square[2] == '2') square[2] = mark; else if (choice == 3 && square[3] == '3') square[3] = mark; else if (choice == 4 && square[4] == '4') square[4] = mark; else if (choice == 5 && square[5] == '5') square[5] = mark; else if (choice == 6 && square[6] == '6') square[6] = mark; else if (choice == 7 && square[7] == '7') square[7] = mark; else if (choice == 8 && square[8] == '8') square[8] = mark; else if (choice == 9 && square[9] == '9') square[9] = mark; else { printf("Invalid move "); player--; getch(); } i = checkwin(); player++; }while (i == - 1); board(); if (i == 1) printf("==>\aPlayer %d win ", --player); else printf("==>\aGame draw"); getch(); return 0;}/*********************************************FUNCTION TO RETURN GAME STATUS1 FOR GAME IS OVER WITH RESULT-1 FOR GAME IS IN PROGRESSO GAME IS OVER AND NO RESULT **********************************************/int checkwin(){ if (square[1] == square[2] && square[2] == square[3]) return 1; else if (square[4] == square[5] && square[5] == square[6]) return 1; else if (square[7] == square[8] && square[8] == square[9]) return 1; else if (square[1] == square[4] && square[4] == square[7]) return 1; else if (square[2] == square[5] && square[5] == square[8]) return 1; else if (square[3] == square[6] && square[6] == square[9]) return 1; else if (square[1] == square[5] && square[5] == square[9]) return 1; else if (square[3] == square[5] && square[5] == square[7]) return 1; else if (square[1] != '1' && square[2] != '2' && square[3] != '3' && square[4] != '4' && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square[9] != '9') return 0; else return - 1;}/*******************************************************************FUNCTION TO DRAW BOARD OF TIC TAC TOE WITH PLAYERS MARK ********************************************************************/void board(){ system("cls"); printf("\n\n\tTic Tac Toe\n\n"); printf("Player 1 (X) - Player 2 (O)\n\n\n"); printf(" | | \n"); printf(" %c | %c | %c \n", square[1], square[2], square[3]); printf("_____|_____|_____\n"); printf(" | | \n"); printf(" %c | %c | %c \n", square[4], square[5], square[6]); printf("_____|_____|_____\n"); printf(" | | \n"); printf(" %c | %c | %c \n", square[7], square[8], square[9]); printf(" | | \n\n");}/*******************************************************************END OF PROJECT ********************************************************************/
Code:
square = [0,1,2,3,4,5,6,7,8,9]def main(): player = 1 status = -1 while status== -1: board() if player%2 == 1: player = 1 else: player = 2 print('\nPlayer', player) choice = int(input('Enter a number:')) if player == 1: mark = 'X' else: mark = 'O' if choice == 1 and square[1] == 1: square[1] = mark elif choice == 2 and square[2] == 2: square[2] = mark elif choice == 3 and square[3] == 3: square[3] = mark elif choice == 4 and square[4] == 4: square[4] = mark elif choice == 5 and square[5] == 5: square[5] = mark elif choice == 6 and square[6] == 6: square[6] = mark elif choice == 7 and square[7] == 7: square[7] = mark elif choice == 8 and square[8] == 8: square[8] = mark elif choice == 9 and square[9] == 9: square[9] = mark else: print('Invalid move ') player -= 1 status = game_status() player += 1 print('RESULT') if status == 1: print('Player',player-1,'win') else: print('Game draw')################################################ FUNCTION TO RETURN GAME STATUS# 1 FOR GAME IS OVER WITH RESULT# -1 FOR GAME IS IN PROGRESS# O GAME IS OVER AND NO RESULT###############################################def game_status(): if square[1] == square[2] and square[2] == square[3]: return 1 elif square[4] == square[5] and square[5] == square[6]: return 1 elif square[7] == square[8] and square[8] == square[9]: return 1 elif square[1] == square[4] and square[4] == square[7]: return 1 elif square[2] == square[5] and square[5] == square[8]: return 1 elif square[3] == square[6] and square[6] == square[9]: return 1 elif square[1] == square[5] and square[5] == square[9]: return 1 elif square[3] == square[5] and square[5] == square[7]: return 1 elif square[1] != 1 and square[2] != 2 and square[3] != 3 and square[4] != 4 and square[5] != 5 and square[6] != 6 and square[7] != 7 and square[8] != 8 and square[9] != 9: return 0 else: return -1################################################ FUNCTION TO DRAW BOARD# OF TIC TAC TOE WITH PLAYERS MARK###############################################def board(): print('\n\n\tTic Tac Toe\n\n') print('Player 1 (X) - Player 2 (O)' ) print() print(' | | ' ) print(' ' ,square[1] ,' | ' ,square[2] ,' | ' ,square[3] ) print('_____|_____|_____' ) print(' | | ' ) print(' ' ,square[4] ,' | ' ,square[5] ,' | ' ,square[6] ) print('_____|_____|_____' ) print(' | | ' ) print(' ' ,square[7] ,' | ' ,square[8] ,' | ' ,square[9] ) print(' | | ' )main()
Statistics: Posted by Anthony.R.Brown — Sun Feb 07, 2021 1:51 pm