62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
# 入机猜拳
|
|
|
|
|
|
import random
|
|
|
|
class Player:
|
|
def __init__(self):
|
|
self.dict_gesture = {0: '剪刀', 1: '石头', 2: '布'}
|
|
|
|
def gesture(self, num):
|
|
return self.dict_gesture[num]
|
|
|
|
class AIPlayer(Player):
|
|
play_data = [] # 存储玩家猜拳手势(类属性)
|
|
|
|
def ai_gesture(self):
|
|
while True:
|
|
computer = random.randint(0, 2)
|
|
if len(self.play_data) >= 4:
|
|
# 获取玩家出拳的最大概率
|
|
max_prob = max(self.play_data, key=self.play_data.count)
|
|
if max_prob == '剪刀':
|
|
return '石头'
|
|
elif max_prob == '石头':
|
|
return '布'
|
|
else:
|
|
return '剪刀'
|
|
else:
|
|
return self.dict_gesture[computer]
|
|
|
|
class Game(Player):
|
|
def game_judge(self):
|
|
player_num = int(input("请输入(0剪刀、1石头、2布:)")) # 玩家输入的手势
|
|
player = self.gesture(player_num)
|
|
AIPlayer().play_data.append(player)
|
|
ai_player = AIPlayer().ai_gesture()
|
|
|
|
if (player == '剪刀' and ai_player == '布') or \
|
|
(player == '石头' and ai_player == '剪刀') or \
|
|
(player == '布' and ai_player == '石头'):
|
|
print(f"电脑出的手势是{ai_player},恭喜,你赢了!")
|
|
elif (player == '剪刀' and ai_player == '剪刀') or \
|
|
(player == '石头' and ai_player == '石头') or \
|
|
(player == '布' and ai_player == '布'):
|
|
print(f"电脑出的手势是{ai_player},打成平局了!")
|
|
else:
|
|
print(f"电脑出的手势是{ai_player},你输了,再接再厉!")
|
|
|
|
def main(self):
|
|
self.game_judge()
|
|
while True:
|
|
option = input("是否继续:y/n\n")
|
|
if option == 'y':
|
|
self.game_judge()
|
|
else:
|
|
break
|
|
|
|
# 程序入口
|
|
if __name__ == "__main__":
|
|
game = Game()
|
|
game.main()
|