python笔记 基础语法·第10课 【田忌赛马游戏,代码拆分,过程代码】

故事原型

齐国使者到大梁来,孙膑以刑徒的身份秘密拜见,劝说齐国使者。齐国使者觉得此人是个奇人,就偷偷地把他载回齐国。齐国将军田忌非常赏识他,并且待如上宾。田忌经常与齐国众公子赛马,设重金赌注。孙膑发现他们的马脚力都差不多,马分为上、中、下三等,于是对田忌说:“您只管下大赌注,我能让您取胜。”田忌相信并答应了他,与齐王和各位公子用千金来赌注。比赛即将开始,孙膑说:“现在用您的下等马对付他们的上等马,用您的上等马对付他们的中等马,用您的中等马对付他们的下等马。”三场比赛结束后,田忌一场败而两场胜,最终赢得齐王的千金赌注。因此田忌把孙膑推荐给齐威王。齐威王向他请教了兵法,于是把他当成老师。

开发者项目思维

1.明确项目目标
2.分析过程,拆解项目
3.逐步执行,代码实现

项目目标

在这里插入图片描述
在这里插入图片描述

三个开发阶段

版本1.0 完成基础代码,调整后用函数封装并调用
版本2.0 从角色池为双方随机选出3个角色,并随机生成血量值和攻击值
版本3.0 询问玩家角色出场顺序,并打印出来
版本4.0 根据出场顺序和对方进行三轮PK,并输出战果

1.0版本
(函数的封装和调用)

主要函数的作用:main()

import time     #展示角色
def show_role(player_life,player_attack,enemy_life,enemy_attack):
    print('【玩家】\n血量:%s\n攻击:%s'%(player_life,player_attack))
    print('------------------------')
    time.sleep(1)
    print('【敌人】\n血量:%s\n攻击:%s'%(enemy_life,enemy_attack))
    print('-----------------------')
#双方PK
def pk_role(player_life,player_attack,enemy_life,enemy_attack):
    while player_life > 0 and enemy_life > 0:
        player_life = player_life - enemy_attack
        enemy_life = enemy_life - player_attack
        time.sleep(1)
        print('你发起了攻击,【敌人】剩余血量'+str(enemy_life))
        print('敌人向你发起了攻击,【玩家】剩余血量'+str(player_life))
        print('-----------------------')
		show_result(player_life,enemy_life) 
 
#打印战果
def show_result(player_life,enemy_life):
    if player_life > 0 and enemy_life <= 0:
        print('敌人死翘翘了,这局你赢了')
    elif player_life <= 0 and enemy_life > 0:
        print('悲催,这局敌人把你干掉了!')
    else:
        print('哎呀,这局你和敌人同归于尽了!')
    print('-----------------------')

#(主函数)展开战斗全流程
def main(player_life,player_attack,enemy_life,enemy_attack):
    show_role(player_life,player_attack,enemy_life,enemy_attack)
    pk_role(player_life,player_attack,enemy_life,enemy_attack)
    
main(100,35,105,33)
main(120,36,100,45)
main(100,35,100,35)
2.0版本
(随机生成角色,为角色生成随机属性)

random模块的使用方法 random.sample(player_list3,)
函数数据的返回和传递:return life,attack

import random,time    #初始定义
#展示角色
player_list =  ['【狂血战士】','【森林箭手】','【光明骑士】','【独行剑客】','【格斗大师】','【枪弹专家】']
enemy_list = ['【暗黑战士】','【黑暗弩手】','【骷髅骑士】','【嗜血刀客】','【首席刺客】','【陷阱之王】']
players =random.sample(player_list,3)
enemies = random.sample(enemy_list,3)
player_info = {}
enemy_info = {}
def born_role():
    life = random.randint(100,180)
    attack = random.randint(30,50)
    return life,attack
def show_role():
    for i in range(3):
        player_info[players[i]] = born_role()
        enemy_info[enemies[i]] = born_role()
    print('----------------- 角色信息 -----------------')
    print('你的人物:')
    for i in range(3):
        print('%s  血量:%d  攻击:%d'%(players[i],player_info[players[i]][0],player_info[players[i]][1]))
    print('--------------------------------------------')
    print('电脑敌人:')
    # 展示敌方的3个角色
    for i in range(3):
        print('%s  血量:%d
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值