【Python习题】面向对象的人机猜拳小游戏

题目内容

编写代码,实现基于面向对象思想的人机猜拳游戏。

个人解法

import  random


# 玩家类
class Player:
    # 构造玩家函数
    def __init__(self, NUM_Custom): # 通过有(形)参构造的方式使得对象属性能够拥有不同的初始值
        self.Name = '玩家'
        self.NUM_Custom = NUM_Custom # 将形参赋值给属性
    # 实例方法定义一个输出玩家出拳方式的函数
    def Gesture_Custom(self):
        if self.NUM_Custom == 1:
            print(f'{self.Name}出拳方式为:[石头]')
        elif self.NUM_Custom == 2:
            print(f'{self.Name}出拳方式为:[剪刀]')
        elif self.NUM_Custom == 3:
            print(f'{self.Name}出拳方式为: [布] ')


# 人机类
class Computer:
    # 构造人机函数
    def __init__(self, NUM_Random): 
        self.Name = '人机'
        self.NUM_Random = NUM_Random
    # 实例方法定义一个获取人机出拳方式的函数
    def Gesture_Random(self):
        if self.NUM_Random == 1:
            print(f'{self.Name}出拳方式为:[石头]')
        elif self.NUM_Random == 2:
            print(f'{self.Name}出拳方式为:[剪刀]')
        elif self.NUM_Random == 3:
            print(f'{self.Name}出拳方式为: [布] ')


# 游戏类
class Game:
    print('请按对应编号选择您的出拳方式:\n1 [石头]\n2 [剪刀]\n3  [布]\n4 退出游戏\n'+'-' * 30)
    # 静态方法定义一个运行游戏的函数
    def Run():
        while True:
            # 由于使用了实例方法,只能通过对象来调用而无法通过类直接调用
            NUM_Custom = int(input('请选择您的出拳方式:')) # 创建实参
            person = Player(NUM_Custom) # 创建对象,并根据实参初始化属性
            person.Gesture_Custom() # 通过对象调用实例方法
            # 
            NUM_Random = random.randint(1, 3)
            computer = Computer(NUM_Random)
            computer.Gesture_Random()
            # 
            if NUM_Custom == 1:
                if NUM_Random == 1:
                    print('本局平局')
                elif NUM_Random == 2:
                    print('本局玩家获胜')
                elif NUM_Random == 3:
                    print('本局电脑获胜')
            elif NUM_Custom == 2:
                if NUM_Random == 1:
                    print('本局电脑获胜')
                elif NUM_Random == 2:
                    print('本局平局')
                elif NUM_Random == 3:
                    print('本局玩家获胜')
            elif NUM_Custom == 3:
                if NUM_Random == 1:
                    print('本局玩家获胜')
                elif NUM_Random == 2:
                    print('本局电脑获胜')
                elif NUM_Random == 3:
                    print('本局平局')
            elif NUM_Custom == 4:
                print('游戏结束')
                break
            else:
                print('输入有误!')

            print('-' * 30)


# 调用游戏类
Game.Run() # 由于使用静态方法,可以通过类直接调用

运行结果

【Python习题】面向对象的人机猜拳小游戏_第1张图片

 本人拙作,请大佬们点评。

你可能感兴趣的:(Python习题,python,OOP)