Python编程:人机大战之猜拳游戏(用定义类的方法实现)

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_()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值