项目规则:

1、玩家和敌人分别从现有的角色中选择3个角色

2、随机生成目前的血量,和攻击量

3、游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理

4、3局两胜

5、自定义玩家出场的顺序和敌人出场的顺序

  1. import time,random
  2.  
  3. # 需要的数据和变量放在开头
  4. player_list = ['【狂血战士】','【森林箭手】','【光明骑士】','【独行剑客】','【格斗大师】','【枪弹专家】']
  5. enemy_list = ['【暗黑战士】','【黑暗弩手】','【暗夜骑士】','【嗜血刀客】','【首席刺客】','【陷阱之王】']
  6. players = random.sample(player_list,3) #从player_list中随机选取3个
  7. enemies = random.sample(enemy_list,3)
  8. player_info = {}
  9. enemy_info = {}
  10.  
  11. # 随机生成角色的属性
  12. def born_role():
  13. life = random.randint(100,180) #在100到180之间生成随机数,整数
  14. attack = random.randint(30,50)
  15. return life,attack
  16.  
  17. # 生成和展示角色信息
  18. def show_role():
  19. for i in range(3):
  20. player_info[players[i]] = born_role()
  21. enemy_info[enemies[i]] = born_role()
  22.  
  23. # 展示我方的3个角色
  24. print('----------------- 角色信息 -----------------')
  25. print('你的人物:')
  26. for i in range(3):
  27. print('%s 血量:%d 攻击:%d'
  28. %(players[i],player_info[players[i]][0],player_info[players[i]][1]))
  29. print('--------------------------------------------')
  30. print('电脑敌人:')
  31.  
  32. # 展示敌方的3个角色
  33. for i in range(3):
  34. print('%s 血量:%d 攻击:%d'
  35. %(enemies[i],enemy_info[enemies[i]][0],enemy_info[enemies[i]][1]))
  36. print('--------------------------------------------')
  37. input('请按回车键继续。\n') # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。
  38.  
  39. # 角色排序,选择出场顺序。
  40. def order_role():
  41. global players
  42. order_dict = {}
  43. for i in range(3):
  44. order = int(input('你想将 %s 放在第几个上场?(输入数字1~3)'% players[i]))
  45. order_dict[order] = players[i]
  46.  
  47. players = []
  48. for i in range(1,4):
  49. players.append(order_dict[i])
  50.  
  51. print('\n我方角色的出场顺序是:%s、%s、%s' %(players[0],players[1],players[2]))
  52. print('敌方角色的出场顺序是:%s、%s、%s' %(enemies[0],enemies[1],enemies[2]))
  53.  
  54. # 角色PK
  55. def pk_role():
  56. round = 1
  57. score = 0
  58. for i in range(3): # 一共要打三局
  59. player_name = players[i]
  60. enemy_name = enemies[i]
  61. player_life = player_info[players[i]][0]
  62. player_attack = player_info[players[i]][1]
  63. enemy_life = enemy_info[enemies[i]][0]
  64. enemy_attack = enemy_info[enemies[i]][1]
  65.  
  66. # 每一局开战前展示战斗信息
  67. print('\n----------------- 【第%d局】 -----------------' % round)
  68. print('玩家角色:%s vs 敌方角色:%s ' %(player_name,enemy_name)) #格式化输出
  69. print('%s 血量:%d 攻击:%d' %(player_name,player_life,player_attack))
  70. print('%s 血量:%d 攻击:%d' %(enemy_name,enemy_life,enemy_attack))
  71. print('--------------------------------------------')
  72. input('请按回车键继续。\n')
  73.  
  74. # 开始判断血量是否都大于零,然后互扣血量。
  75. while player_life > 0 and enemy_life > 0:
  76. enemy_life = enemy_life - player_attack
  77. player_life = player_life - enemy_attack
  78. print('%s发起了攻击,%s剩余血量%d' % (player_name,enemy_name,enemy_life))
  79. print('%s发起了攻击,%s剩余血量%d' % (enemy_name,player_name,player_life))
  80. print('--------------------------------------------')
  81. time.sleep(1)
  82. else: # 每局的战果展示,以及分数score和局数的变化。
  83. # 调用show_result()函数,打印返回元组中的result。
  84. print(show_result(player_life,enemy_life)[1])
  85. # 调用show_result()函数,完成计分变动。
  86. score += int(show_result(player_life,enemy_life)[0])
  87. round += 1
  88. input('\n点击回车,查看比赛的最终结果\n')
  89.  
  90. if score > 0:
  91. print('【最终结果:你赢了!】\n')
  92. elif score < 0:
  93. print('【最终结果:你输了!】\n')
  94. else:
  95. print('【最终结果:平局!】\n')
  96.  
  97. # 返回单局战果和计分法所加分数。
  98. def show_result(player_life,enemy_life): # 注意:该函数要设定参数,才能判断单局战果。
  99. if player_life > 0 and enemy_life <= 0:
  100. result = '\n敌人死翘翘了,你赢了!'
  101. return 1,result # 返回元组(1,'\n敌人死翘翘了,你赢了!'),类似角色属性的传递。
  102. elif player_life <= 0 and enemy_life > 0:
  103. result = '\n悲催,敌人把你干掉了!'
  104. return -1,result
  105. else :
  106. result = '\n哎呀,你和敌人同归于尽了!'
  107. return 0,result
  108.  
  109. # (主函数)展开战斗流程
  110. def main():
  111. show_role()
  112. order_role()
  113. pk_role()
  114.  
  115. # 启动程序(即调用主函数)
  116. main()

python项目实战-小游戏1的更多相关文章

  1. Python开发转盘小游戏

    Python开发转盘小游戏 Python  一 原理分析 Python开发一个图形界面 有12个选项和2个功能键 确定每个按钮的位置 每个按钮的间隔相同 点击开始时转动,当前选项的背景颜色为红色,其他 ...

  2. 用Python实现童年小游戏贪吃蛇

    贪吃蛇作为一款经典小游戏,早在 1976 年就面世了,我最早接触它还是在家长的诺基亚手机中.

  3. 教你用Python自制拼图小游戏,一起来制作吧

    摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...

  4. python 小鸡飞行小游戏

    python 小鸡飞行小游戏 用空格键控制小鸡飞行 代码 import pygame.freetype import sys import random pygame.init() screen = ...

  5. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  6. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  7. Python项目实战:福布斯系列之数据采集

    1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...

  8. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

  9. c语言----<项目>_小游戏<2048>

    2048 小游戏 主要是针对逻辑思维的一个训练. 主要学习方面:1.随机数产生的概率.2.行与列在进行移动的时候几种情况.3.MessageBox的使用 #include <iostream&g ...

随机推荐

  1. POJ Oulipo KMP 模板题

    http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4 ...

  2. rman 备份并异机恢复

    1.RMAN 备份脚本 RUN { CONFIGURE RETENTION POLICY DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CO ...

  3. Linux系统中命令提示符解释-Linux中命令格式、分类-bash中的快捷键

    1.命令提示符 [root@mysqlserver01 opt]# [root@mysqlserver01 ~]# root 当前用户名 @ 固定的(格式) mysqlserver01 主机名 opt ...

  4. https soap链接示例

    1.先安装soap扩展sudo yum install php-soap 2.安装openssL 3.function  issure($sn){//通过soap链接接口  进行确认是否是正确的sn码 ...

  5. 【Henu ACM Round#14 B】Duff in Love

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你在n的因子里面找一个最大的数字x 且x的因子全都不是完全平方数(y^2,y>1) O(sqrt(n))找出n的所有因子. ...

  6. int long long 的取值范围

    unsigned   int   0-4294967295   //整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明 ...

  7. kettle(一)概述

    近期两个月一直和kettle打交道,从開始的没听说过,到如今能够熟练运用,不得不说项目驱动下,学习东西是最快的.好了,尽管使用kettle应付项目的任务绰绰有余.可是还是想系统的学习一下,总结一下.比 ...

  8. Scott Hanselman的问题-1

    Scott Hanselman的问题 .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)   过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西. ...

  9. 53.遇到SyntaxError: Unexpected token

    转自:https://segmentfault.com/q/1010000002649920/a-1020000002655984 不知道你自己现在已经发现问题没, Unexpected token ...

  10. 38.C语言字符串总结

    1.自己实现三个常用函数 strlen,strcpy,strstr 自己实现strstr函数,如果找到返回首地址,找不到则返回NULL //查找元素,返回首地址 char *mystrstr(cons ...