From 50e79049ab973516027d0c82192438c4a5bcc3d4 Mon Sep 17 00:00:00 2001 From: EterIll Date: Mon, 8 Jun 2026 01:43:29 +0000 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20main.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 116 -------------------------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 main.py diff --git a/main.py b/main.py deleted file mode 100644 index 65aa188..0000000 --- a/main.py +++ /dev/null @@ -1,116 +0,0 @@ -import os - -def _draw_game(dd): - os.system('cls' if os.name == 'nt' else 'clear') - - d = ['X' if dd[i]==0 else 'O' if dd[i]==9 else i+1 for i in range(9)] - print( -f""" - Tic Tac Toe - - -Player 1 (X) - Player 2 (O) - - | | - {d[0]} | {d[1]} | {d[2]} -_____|_____|_____ - | | - {d[3]} | {d[4]} | {d[5]} -_____|_____|_____ - | | - {d[6]} | {d[7]} | {d[8]} -""") - -def _gen_win_pats(): - wi = [ - [0,1,2],[3,4,5],[6,7,8], - [0,3,6],[1,4,7],[2,5,8], - [0,4,8],[2,4,6] - ] - pats = [] - for cb in wi: - m = 0 - for pos in cb: - m |= (1 << pos) - pats.append(m) - return pats - -_win_pats = _gen_win_pats() - -def _is_winning(data, player_val): - state = 0 - for i in range(9): - if data[i] == player_val: - state |= (1 << i) - - for pat in _win_pats: - if (state & pat) == pat: - return True - return False - -def handleKBI(lmbd): - def runlambda(*args,**kwargs): - try: - return lmbd(*args,**kwargs) - except KeyboardInterrupt: - print("\n\nThanks for playing! Goodbye.") - return runlambda - -@handleKBI -def main(): - while True: - data = [-1] * 9 - cpl = True - - while True: - _draw_game(data) - - if _is_winning(data, 0): - print("RESULT\nPlayer 1 Wins!") - break - - if _is_winning(data, 9): - print("RESULT\nPlayer 2 Wins!") - break - - if sum(1 for x in data if x == -1) <= 1: - for i in range(9): - if data[i] == -1: data[i] = 0 if cpl else 9 - if _is_winning(data, 0): - print("RESULT\nPlayer 1 Wins!") - break - if _is_winning(data, 9): - print("RESULT\nPlayer 2 Wins!") - break - - print("RESULT\nGame Draw!") - break - - op = input(f"Player {1 if cpl else 2}\nEnter a number: ") - - try: - op = int(op) - idx = op - 1 - - if idx < 0 or idx > 8: - print("Invalid input. Please enter 1-9.") - continue - - if data[idx] != -1: - print("Position already taken. Try again.") - continue - - data[idx] = 0 if cpl else 9 - cpl = not cpl - - except ValueError: - print("Invalid input. Please enter a number.") - continue - - play_again = input("\nPlay again? (y/n): ").lower() - if play_again != 'y': - print("\n\nThanks for playing! Goodbye.") - break - -if __name__ == '__main__': - main()