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

文本:

Python面向对象——人机猜拳小游戏_第1张图片

你可能感兴趣的:(Python)