实现步骤如下:
1.1设计玩家类,电脑类,游戏game类
1.2玩家类player定义一个属性name和方法,出拳,1:石头 2:剪刀 3:布
1.3电脑类基本和玩家类基本一样,但是电脑出拳是随机产生1 2 3
1.4游戏类中包含玩家类和电脑类,定义一个游戏开始方法,调用玩家和电脑类出拳方法,判断游戏结果,谁赢了,把结果保存在一个电脑文件中
1.5玩家可以玩N次游戏,当输入不想玩的时候,则结束整个游戏
设计代码如下:
模块导入
import random
import time
定义一个玩家类
class Player:
def __init__(self,action):
self.name='玩家'
self.action=action
#定义函数来输出玩家的出拳方式
def Action(self):
if self.action == 1:
print(f'{self.name}出拳方式为:[石头]')
elif self.action==2:
print(f'{self.name}出拳方式为:[剪刀]')
elif self.action==3:
print(f'{self.name}出拳方式为:[布]')
定义一个电脑类
class Computer:
def __init__(self):
self.name='电脑'
#定义一个函数获取电脑的出拳方式
def Action(self,random_num):
if random_num==1:
print('电脑出拳方式为:[石头]')
elif random_num==2:
print('电脑出拳方式为:[剪刀]')
elif random_num==3:
print('电脑出拳方式为:[布]')
定义一个游戏类,控制游戏的规则
class game:
print('请按对应编号选择您的出拳方式:\n1 石头 2 剪刀 3 布 4 退出游戏')
def judge(self):
#这是一个while循环,保证游戏重复进行
while True:
#利用时间模块获取系统当前时间
strtime=time.strftime("%Y-%m-%d %H:%M:%S")
#创建文本存储对战记录
with open('battle.txt', 'a+',encoding='utf-8' ) as x:
#玩家从键盘输入出拳方式
action1 = int(input('请选择您的出拳方式:'))
#调用玩家类并传入玩家输入的参数
person = Player(action1)
person.Action()
#调用电脑类
computer = Computer()
#获取随机数1 2 3
random_num = random.randint(1, 3)
#将随机数传入电脑类的Action方法
computer.Action(random_num)
if action1==1:
if random_num == 1:
#判断比赛结果
print('本局平局')
#将对战记录写入文本
x.write('玩家:【石头】'+' '+'电脑:【石头】'+' '+'平局'+' '+strtime+'\n')
print('-' * 80)
elif random_num == 2:
print('本局玩家获胜')
x.write('玩家:【石头】' + ' '+'电脑:【剪刀】' +' '+ '玩家获胜' + ' '+strtime + '\n')
print('-' * 80)
elif random_num == 3:
print('本局电脑获胜')
x.write('玩家:【石头】' +' '+ '电脑:【布】'+' '+ '电脑获胜' +' '+ strtime + '\n')
print('-' * 80)
elif action1 == 2:
if random_num == 1:
print('本局电脑获胜')
x.write('玩家:【剪刀】' +' '+ '电脑:【石头】'+' '+ '电脑获胜' +' '+ strtime + '\n')
print('-' * 80)
elif random_num == 2:
print('本局平局')
x.write('玩家:【剪刀】' +' '+ '电脑:【剪刀】' +' '+ '平局' +' '+ strtime + '\n')
print('-' * 80)
elif random_num == 3:
print('本局玩家获胜')
x.write('玩家:【剪刀】' +' '+ '电脑:【布】' +' '+ '玩家获胜' +' '+ strtime + '\n')
print('-' * 80)
elif action1 == 3:
if random_num == 1:
print('本局玩家获胜')
x.write('玩家:【布】' +' '+ '电脑:【石头】' +' '+ '玩家获胜' +' '+ strtime + '\n')
print('-' * 80)
elif random_num == 2:
print('本局电脑获胜')
x.write('玩家:【布】' +' '+ '电脑:【剪刀】' +' '+ '电脑获胜' +' '+ strtime + '\n')
print('-' * 80)
elif random_num == 3:
print('本局平局')
x.write('玩家:【布】' +' '+ '电脑:【布】'+' '+ '平局' +' '+ strtime + '\n')
print('-' * 80)
elif action1 == 4:
print('游戏结束')
print('-' * 80)
break
else:
print('您输入有误!')
x.write('错误的对局' +' '+ strtime +' '+ '\n')
print('-' * 80)
print('-'*80)
#调用game类
c=game()
c.judge()
“”" 还有个bug找半天也没找到问题:
1 石头 2 剪刀 3 布 4 退出游戏
请选择您的出拳方式:4
电脑出拳方式为:[剪刀]
#选择结束游戏时还是会输出电脑的出拳方式
效果如下:
C:\Users\61410\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/61410/Desktop/石头剪刀布.py
请按对应编号选择您的出拳方式:
1 石头 2 剪刀 3 布 4 退出游戏
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[布]
本局电脑获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[石头]
本局平局
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[剪刀]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[剪刀]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[布]
本局电脑获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[剪刀]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:1
玩家出拳方式为:[石头]
电脑出拳方式为:[剪刀]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:2
玩家出拳方式为:[剪刀]
电脑出拳方式为:[布]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:2
玩家出拳方式为:[剪刀]
电脑出拳方式为:[布]
本局玩家获胜
--------------------------------------------------------------------------------
请选择您的出拳方式:3
玩家出拳方式为:[布]
电脑出拳方式为:[布]
本局平局
--------------------------------------------------------------------------------
请选择您的出拳方式:4
电脑出拳方式为:[石头]
游戏结束
--------------------------------------------------------------------------------
Process finished with exit code 0
文本: