python项目实战-小游戏1
项目规则:
1、玩家和敌人分别从现有的角色中选择3个角色
2、随机生成目前的血量,和攻击量
3、游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理
4、3局两胜
5、自定义玩家出场的顺序和敌人出场的顺序
- import time,random
- # 需要的数据和变量放在开头
- player_list = ['【狂血战士】','【森林箭手】','【光明骑士】','【独行剑客】','【格斗大师】','【枪弹专家】']
- enemy_list = ['【暗黑战士】','【黑暗弩手】','【暗夜骑士】','【嗜血刀客】','【首席刺客】','【陷阱之王】']
- players = random.sample(player_list,3) #从player_list中随机选取3个
- enemies = random.sample(enemy_list,3)
- player_info = {}
- enemy_info = {}
- # 随机生成角色的属性
- def born_role():
- life = random.randint(100,180) #在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()
- # 展示我方的3个角色
- 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 攻击:%d'
- %(enemies[i],enemy_info[enemies[i]][0],enemy_info[enemies[i]][1]))
- print('--------------------------------------------')
- input('请按回车键继续。\n') # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。
- # 角色排序,选择出场顺序。
- def order_role():
- global players
- order_dict = {}
- for i in range(3):
- order = int(input('你想将 %s 放在第几个上场?(输入数字1~3)'% players[i]))
- order_dict[order] = players[i]
- players = []
- for i in range(1,4):
- players.append(order_dict[i])
- print('\n我方角色的出场顺序是:%s、%s、%s' %(players[0],players[1],players[2]))
- print('敌方角色的出场顺序是:%s、%s、%s' %(enemies[0],enemies[1],enemies[2]))
- # 角色PK
- def pk_role():
- round = 1
- score = 0
- for i in range(3): # 一共要打三局
- player_name = players[i]
- enemy_name = enemies[i]
- player_life = player_info[players[i]][0]
- player_attack = player_info[players[i]][1]
- enemy_life = enemy_info[enemies[i]][0]
- enemy_attack = enemy_info[enemies[i]][1]
- # 每一局开战前展示战斗信息
- print('\n----------------- 【第%d局】 -----------------' % round)
- print('玩家角色:%s vs 敌方角色:%s ' %(player_name,enemy_name)) #格式化输出
- print('%s 血量:%d 攻击:%d' %(player_name,player_life,player_attack))
- print('%s 血量:%d 攻击:%d' %(enemy_name,enemy_life,enemy_attack))
- print('--------------------------------------------')
- input('请按回车键继续。\n')
- # 开始判断血量是否都大于零,然后互扣血量。
- while player_life > 0 and enemy_life > 0:
- enemy_life = enemy_life - player_attack
- player_life = player_life - enemy_attack
- print('%s发起了攻击,%s剩余血量%d' % (player_name,enemy_name,enemy_life))
- print('%s发起了攻击,%s剩余血量%d' % (enemy_name,player_name,player_life))
- print('--------------------------------------------')
- time.sleep(1)
- else: # 每局的战果展示,以及分数score和局数的变化。
- # 调用show_result()函数,打印返回元组中的result。
- print(show_result(player_life,enemy_life)[1])
- # 调用show_result()函数,完成计分变动。
- score += int(show_result(player_life,enemy_life)[0])
- round += 1
- input('\n点击回车,查看比赛的最终结果\n')
- if score > 0:
- print('【最终结果:你赢了!】\n')
- elif score < 0:
- print('【最终结果:你输了!】\n')
- else:
- print('【最终结果:平局!】\n')
- # 返回单局战果和计分法所加分数。
- def show_result(player_life,enemy_life): # 注意:该函数要设定参数,才能判断单局战果。
- if player_life > 0 and enemy_life <= 0:
- result = '\n敌人死翘翘了,你赢了!'
- return 1,result # 返回元组(1,'\n敌人死翘翘了,你赢了!'),类似角色属性的传递。
- elif player_life <= 0 and enemy_life > 0:
- result = '\n悲催,敌人把你干掉了!'
- return -1,result
- else :
- result = '\n哎呀,你和敌人同归于尽了!'
- return 0,result
- # (主函数)展开战斗流程
- def main():
- show_role()
- order_role()
- pk_role()
- # 启动程序(即调用主函数)
- main()
python项目实战-小游戏1的更多相关文章
- Python开发转盘小游戏
Python开发转盘小游戏 Python 一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...
- 用Python实现童年小游戏贪吃蛇
贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中.
- 教你用Python自制拼图小游戏,一起来制作吧
摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...
- python 小鸡飞行小游戏
python 小鸡飞行小游戏 用空格键控制小鸡飞行 代码 import pygame.freetype import sys import random pygame.init() screen = ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- Python项目实战:福布斯系列之数据采集
1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...
- 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词
一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...
- c语言----<项目>_小游戏<2048>
2048 小游戏 主要是针对逻辑思维的一个训练. 主要学习方面:1.随机数产生的概率.2.行与列在进行移动的时候几种情况.3.MessageBox的使用 #include <iostream&g ...
随机推荐
- POJ Oulipo KMP 模板题
http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4 ...
- rman 备份并异机恢复
1.RMAN 备份脚本 RUN { CONFIGURE RETENTION POLICY DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CO ...
- Linux系统中命令提示符解释-Linux中命令格式、分类-bash中的快捷键
1.命令提示符 [root@mysqlserver01 opt]# [root@mysqlserver01 ~]# root 当前用户名 @ 固定的(格式) mysqlserver01 主机名 opt ...
- https soap链接示例
1.先安装soap扩展sudo yum install php-soap 2.安装openssL 3.function issure($sn){//通过soap链接接口 进行确认是否是正确的sn码 ...
- 【Henu ACM Round#14 B】Duff in Love
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你在n的因子里面找一个最大的数字x 且x的因子全都不是完全平方数(y^2,y>1) O(sqrt(n))找出n的所有因子. ...
- int long long 的取值范围
unsigned int 0-4294967295 //整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明 ...
- kettle(一)概述
近期两个月一直和kettle打交道,从開始的没听说过,到如今能够熟练运用,不得不说项目驱动下,学习东西是最快的.好了,尽管使用kettle应付项目的任务绰绰有余.可是还是想系统的学习一下,总结一下.比 ...
- Scott Hanselman的问题-1
Scott Hanselman的问题 .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题) 过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西. ...
- 53.遇到SyntaxError: Unexpected token
转自:https://segmentfault.com/q/1010000002649920/a-1020000002655984 不知道你自己现在已经发现问题没, Unexpected token ...
- 38.C语言字符串总结
1.自己实现三个常用函数 strlen,strcpy,strstr 自己实现strstr函数,如果找到返回首地址,找不到则返回NULL //查找元素,返回首地址 char *mystrstr(cons ...