Game Kéo-Búa-Bao đối kháng máy tính. Người chơi chọn 1/2/3, máy random, so sánh theo luật: Búa > Kéo, Kéo > Bao, Bao > Búa.
Luật chơi
- Búa (Rock) đập vỡ Kéo (Scissors)
- Kéo (Scissors) cắt Bao (Paper)
- Bao (Paper) gói Búa (Rock)
Code hoàn chỉnh
import random
rules = """
Luật chơi:
Rock vs Paper → Paper wins
Rock vs Scissors → Rock wins
Paper vs Scissors → Scissors wins
"""
print(rules)
choices = {1: 'Rock', 2: 'Paper', 3: 'Scissors'}
while True:
print("\nChọn: 1.Rock 2.Paper 3.Scissors")
try:
user = int(input("Bạn chọn: "))
if user not in choices:
print("Chỉ nhập 1, 2 hoặc 3!")
continue
except ValueError:
print("Nhập số!")
continue
user_choice = choices[user]
print(f"Bạn: {user_choice}")
# Máy chọn khác người (tùy chọn: cho phép trùng)
comp = random.randint(1, 3)
while comp == user: # Bỏ dòng này nếu cho phép hòa
comp = random.randint(1, 3)
comp_choice = choices[comp]
print(f"Máy: {comp_choice}")
# Xác định thắng thua
if (user == 1 and comp == 3) or (user == 3 and comp == 1):
winner, win_choice = ("Bạn", "Rock") if user == 1 else ("Máy", "Rock")
elif (user == 1 and comp == 2) or (user == 2 and comp == 1):
winner, win_choice = ("Bạn", "Paper") if user == 2 else ("Máy", "Paper")
else: # 2 vs 3
winner, win_choice = ("Bạn", "Scissors") if user == 3 else ("Máy", "Scissors")
print(f"{win_choice} wins → {winner} thắng!")
again = input("Chơi lại? (y/n): ").lower()
if again != 'y':
print("Cảm ơn đã chơi!")
break
Kết quả mẫu
Chọn: 1.Rock 2.Paper 3.Scissors
Bạn chọn: 1
Bạn: Rock
Máy: Paper
Paper wins → Máy thắng!
Chơi lại? (y/n): y
Chọn: 1.Rock 2.Paper 3.Scissors
Bạn chọn: 2
Bạn: Paper
Máy: Rock
Paper wins → Bạn thắng!
Chơi lại? (y/n): n
Cảm ơn đã chơi!
Mở rộng
- Thêm chế độ "Best of 3/5".
- Thống kê thắng/thua/hòa.
- GUI với Tkinter/PyGame.
- AI học thói quen người chơi (Markov chain).