Python编程:人机大战之划拳游戏
题目:
- 用面向对象的思想
-
玩家猜拳:1 剪刀 2 石头 3 布 玩家输入一个1-3的数字
电脑出拳:随机产生一个1-3的数字,提示电脑出拳结果
本局对战结束,输出谁赢,是否继续
- 输出结果:玩家赢几局 电脑赢几局 平局几次 游戏结束
代码:
import random
#定义一个人类
class person():
def play(self):
while True: #做一个死循环,直到选择正确为止
finger = input("请输入要出拳的选项:\n1---石头 2---剪刀 3---布\n")
if finger.isdigit(): #isdigit() 方法检测字符串是否只由数字组成
finger = int(finger) #将input默认输入的为字符类型,将它转化为数字类型
if finger == 1: #用if判断玩家的出拳
print("[玩家]选择出---石头") #输出玩家的出拳
break #选择正确时,结束死循环
elif finger == 2:
print("[玩家]选择出---剪刀")
break
elif finger == 3:
print("[玩家]选择出--- 布 ")
break
else:
print("输入数字有误!请重新输入---")
else:
print("输入选项有误!请输入数字---")
return finger #返回玩家的出拳
#定义一个电脑类
class computer():
def stochastic(self):
random_number = random.randint(1,3) #用random.randint(1,3)产生一个1到3的随机整数
if random_number == 1: #用if判断电脑的出拳
print("[电脑]选择出---石头") #输出电脑的出拳
elif random_number == 2:
print("[电脑]选择出---剪刀")
else:
print("[电脑]选择出--- 布 ")
return random_number #返回电脑的出拳
#定义一个过程类
class process():
print("---------------人机大战---------------\n")
case1 = 0 #case1表示玩家胜利的次数
case2 = 0 #case2表示平局的次数
case3 = 0 #case1表示电脑胜利的次数
def _init_(self):
person_object = person() #person类 对象
computer_object = computer() #computer类 对象
while True: #做一个死循环,一直进行游戏,直到玩家想要结束游戏
person_result = person_object.play() #用person_result接受玩家的出拳
computer_result = computer_object.stochastic() #用computer_result接受电脑的出拳
#1:石头,2:剪刀,3:布,比较结果,判断此次游戏谁赢
if person_result == 1 and computer_result == 2 or \
person_result == 2 and computer_result == 3 or \
person_result == 3 and computer_result == 1:
print("------------------------玩家赢!")
self.case1 += 1 #此时玩家胜利的次数case1+1
elif person_result == computer_result:
print("------------------------ 平局! ")
self.case2 += 1 #此时平局的次数case2+1
else:
print("------------------------电脑赢!")
self.case3 += 1 #此时电脑胜利的次数case3+1
if input("是否继续游戏:yes or no ?\n按任意键继续,输入n或者N结束游戏\n").lower()=="n": #接收输入,玩家是否想要继续游戏,将接收的输入转化为小写,和'n'进行比较,如果等于结束游戏,反之继续
break
if self.case1 > self.case3: #玩家选择结束游戏之后,对之前所有的战局进行统计对比,判断谁赢
result = "玩家胜利!"
elif self.case1 == self.case3:
result = "平局"
else:
result = "电脑胜利"
print("---------------人机大战---------------\n游戏结束:\n"
"玩家共赢{0}次---电脑共赢{1}次---平局次数{2}次\n---总结果为:{3}"\
.format(self.case1,self.case3,self.case2,result)) #输出整个游戏的结束,其中\在Python语言中表示一行未结束,下一行紧跟上一行,相当于一行
#主函数,开始游戏
game_object = process()._init_()