python使用面向对象思想开发一个人机对战的猜拳游戏(石头剪刀布)

  1. 使用面向对象思想开发一个人机对战的猜拳游戏(石头剪刀布)

import random

class Role:
def init(self, name=None, score=0):
self.name = name
self.score = score

def chooseRole(self):
    roleOptions = ('王铁柱', '牛小花', '李二壮')
    while True:
        choice = input('请选择角色:1. 王铁柱 2. 牛小花 3. 李二壮').strip()
        if choice in '123' and len(choice) == 1:
            self.name = roleOptions[int(choice) - 1]
            print('您选择的角色是{0}。'.format(self.name))
            return

        else:
            print('输入错误,请重新选择。')


def showFist(self):
    fistOptions = ('剪刀', '石头', '布')
    while True:
        yourstake = input('请出拳:1. 剪刀 2. 石头 3. 布').strip()
        if yourstake in '123' and len(yourstake) == 1:
            print('{0}出“{1}”'.format(self.name, fistOptions[int(yourstake) - 1]))
            return fistOptions[int(yourstake) - 1]

        else:
            print('输入错误,请重新输入。')


def __str__(self):
    return '角色名称:{}'.format(self.name)

class Computer:
def init(self, name=‘电脑’, score=0):
self.name = name
self.score = score

def showFist(self):
    rdom = random.choice(['剪刀', '石头', '布'])
    print('{0}出“{1}”'.format(self.name, rdom))
    return rdom

class Game:
noWin = 0
role = Role()
computer = Computer()

def startGame(self):
    print(' 人机猜拳 '.center(100, '-'))
    self.role.chooseRole()
    while True:
        roleFist = self.role.showFist()
        computerFist = self.computer.showFist()
        self.judgeWinner(roleFist, computerFist)
        gameOver = input('是否结束游戏?任意键继续,按“y”退出。').strip()
        if gameOver.lower() == 'y':
            break
    self.showResult()
    print('对战结束')




def judgeWinner(self, rFist, cFist):
    fistComp = ('剪刀', '石头', '布')
    if rFist == cFist:
        print('平局')
        self.noWin += 1
    elif fistComp.index(rFist) + 1 == fistComp.index(cFist) or fistComp.index(rFist) - 2 == fistComp.index(cFist):
        print('{0}赢'.format(self.computer.name))
        self.computer.score += 1
    else:
        print('{0}赢'.format(self.role.name))
        self.role.score += 1


def showResult(self):
    print(' {0} VS {1} '.center(100, '-').format(self.role.name, self.computer.name))
    print('{0}赢 {1} 局。'.format(self.role.name, self.role.score))
    print('{0}赢 {1} 局。'.format(self.computer.name, self.computer.score))
    print('平局 {0} 次。'.format(self.noWin))
    if self.role.score > self.computer.score:
        print('{0}赢了!'.format(self.role.name))

    elif self.role.score == self.computer.score:
        print('双方打平!')
    else:
        print('{0}赢了!'.format(self.computer.name))

game = Game()
game.startGame()
详细代码见链接,共同学习,加油,文末有知识点分析

在这里插入图片描述

文章所使用的知识点if lese语句:

if  条件1print(‘条件为1’)
elif 条件2print(‘条件为2’)
elif 条件3print(‘条件为3’)
elseprint(‘除了条件1,23外的结果’)

具体代码可以查看https://mp.weixin.qq.com/s/qpf_bunWOlc3X_-59K6SkA
别忘了点个关注哦!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值