上传文件至「/」

This commit is contained in:
2026-06-08 01:42:30 +00:00
parent f2d04788a8
commit 498cff0d8f

116
main.py Normal file
View File

@@ -0,0 +1,116 @@
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()