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

本文介绍了一款简单的人机猜拳游戏实现方法,通过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

文本:

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 回答1: 好的,我可以帮你实现一个简单的 Python 人机猜拳游戏。以下是代码示例: ```python import random print("欢迎来到人机猜拳游戏!") print("请输入你要出的手势:1-石头,2-剪刀,3-") # 用户出拳 player = input() while player not in ['1', '2', '3']: print("输入有误,请重新输入!") player = input() player = int(player) # 电脑出拳 computer = random.randint(1, 3) # 判断胜负 if player == computer: print("平局!") elif (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1): print("恭喜你,你赢了!") else: print("很遗憾,你输了!") ``` 运行程序后,用户需要输入要出的手势,程序会随机生成电脑出的手势,并判断胜负,最后输出结果。你可以根据需要对代码进行修改和优化。 ### 回答2: Python人机猜拳游戏是一个简单而有趣的项目。在这个游戏中,用户可以与计算机进行猜拳,通过Python代码实现游戏的进行和结果的显示。 首先,我们需要定义玩家和计算机的选择。石头剪刀分别用数字1、2、3表示。然后,我们需要生成计算机的随机选择,使用random库中的randint函数。用户可以通过输入选择:1代表石头,2代表剪刀,3代表。 接下来,我们需要比较玩家和计算机的选择。根据猜拳的规则,石头战胜剪刀剪刀战胜战胜石头。根据这些规则以及用户和计算机的选择,我们可以判断出胜负关系并显示结果。 最后,我们可以给用户一个选择继续游戏还是退出游戏的选项。如果用户选择继续游戏,我们将再次执行游戏的步骤,让用户和计算机继续猜拳。如果用户选择退出游戏,我们将结束游戏。 通过以上的步骤,我们可以实现一个完整的Python人机猜拳游戏。这个游戏不仅可以帮助用户学习代码实现,还能够提供一个娱乐的方式,让用户和计算机进行互动。希望这个简要的回答能够对你有所帮助。 ### 回答3: 人机猜拳游戏是一种简单而有趣的游戏,可以用Python编写实现。下面是一个基本的人机猜拳游戏的代码示例,具体规则如下: 1. 玩家通过在控制台输入1,2或3来选择出拳,其中1代表剪刀,2代表石头,3代表。 2. 电脑会随机选择1,2或3作为出拳。 3. 根据游戏规则,剪刀石头石头剪刀,如果两者一样,则为平局。 4. 最后会输出游戏结果,显示玩家和电脑的出拳以及胜负结果。 以下是代码示例: ```python import random def play_game(player_choice): computer_choice = random.randint(1, 3) if player_choice == computer_choice: result = "平局" elif (player_choice == 1 and computer_choice == 3) or \ (player_choice == 2 and computer_choice == 1) or \ (player_choice == 3 and computer_choice == 2): result = "你赢了!" else: result = "电脑赢了!" choices = ["剪刀", "石头", ""] print("你的选择:", choices[player_choice - 1]) print("电脑的选择:", choices[computer_choice - 1]) print("结果:", result) print("欢迎来到人机猜拳游戏!") print("请按下面方式选择:") print("1.剪刀") print("2.石头") print("3.") player_choice = int(input("请选择(输入相应数字):")) if player_choice < 1 or player_choice > 3: print("请输入有效的选择!") else: play_game(player_choice) ``` 通过运行上述代码,就可以开始玩人机猜拳游戏了。玩家输入1、2或3来选择出拳,程序会显示出拳结果和胜负情况。游戏的随机性和简单规则使得整个过程既有趣又富有挑战性。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值