Python面向对象——人机猜拳小游戏

面向对象之人机猜拳小游戏


实现步骤如下:
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

文本:

在这里插入图片描述

  • 21
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我可以给你一个简单的 Python 面向对象人机猜拳游戏的代码示例: ```python import random class Player: def __init__(self, name): self.name = name self.score = 0 self.choice = None def choose(self): self.choice = input("请出拳(剪刀/石头/布):") def random_choose(self): self.choice = random.choice(["剪刀", "石头", "布"]) class Game: def __init__(self, player): self.player = player self.computer = Player("电脑") def play(self): print("游戏开始!") while True: self.player.choose() self.computer.random_choose() print(f"{self.player.name} 出了 {self.player.choice},{self.computer.name} 出了 {self.computer.choice}") if self.player.choice == self.computer.choice: print("平局!") elif (self.player.choice == "剪刀" and self.computer.choice == "布") or \ (self.player.choice == "石头" and self.computer.choice == "剪刀") or \ (self.player.choice == "布" and self.computer.choice == "石头"): print(f"{self.player.name} 获胜!") self.player.score += 1 else: print(f"{self.computer.name} 获胜!") self.computer.score += 1 print(f"当前得分:{self.player.name} {self.player.score}:{self.computer.score} {self.computer.name}") if self.player.score >= 3 or self.computer.score >= 3: break if self.player.score > self.computer.score: print(f"{self.player.name} 获胜!") else: print(f"{self.computer.name} 获胜!") if __name__ == "__main__": name = input("请输入你的名字:") player = Player(name) game = Game(player) game.play() ``` 这个程序中定义了两个类:`Player` 和 `Game`,其中 `Player` 表示玩家,`Game` 表示游戏。`Player` 类中包括了玩家的名字、得分和出拳的方法,`Game` 类中包括了玩家和电脑的实例以及游戏的方法。在程序运行时,会首先让玩家输入名字,然后进入游戏。在游戏中,玩家和电脑每次都会出一个随机的拳,然后判断胜负并更新得分,直到某一方得分达到 3 分为止。最后输出胜者的名字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值