基于Python实现人机PK小游戏
作者:小脆筒style
这篇文章主要为大家详细介绍了如何基于Python实现人机PK小游戏,简单来说,就是随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零,感兴趣的小伙伴可以学习一下
1. 明确项目目标
今天且让我扮演一下产品经理的角色。我们此次要实现的需求是:人机PK小游戏。具体效果请参照下面的示意动图。
简单来说,这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。
另外,这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。
2. 分析过程,拆解项目
一个人机PK游戏最基础的元素是什么,我们可以拿最经典的拳皇游戏来脑补一下。
3. 逐步执行 代码实现
条件判断:
if 判断条件
4.版本1
import time,random #存放玩家赢的局数,敌人赢的局数 player_victory = 0 enemy_victory = 0 for i in range(1,4): time.sleep(2) # 让局与局之间有较明显的有时间间隔 print(' \n——————现在是第'+str(i)+'局——————') # 作为局的标记 player_life = random.randint(100,150) player_attack = random.randint(30,50) enemy_life = random.randint(100,150) enemy_attack = random.randint(30,50) # 展示双方角色的属性 print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack)) print('------------------------') time.sleep(1) print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack)) print('------------------------') time.sleep(1) # 双方PK while player_life > 0 and enemy_life > 0: #【敌人】剩余血量=敌人当前血量-玩家攻击,【玩家】剩余血量=玩家当前血量-敌人攻击 player_life = player_life - enemy_attack enemy_life = enemy_life - player_attack print('你发起了攻击,【敌人】剩余血量'+str(enemy_life)) print('敌人向你发起了攻击,【玩家】剩余血量'+str(player_life)) print('-----------------------') time.sleep(1.5) #打印最终战果 if player_life > 0 and enemy_life <= 0: player_victory += 1 print('敌人死翘翘了,你赢了!') elif player_life <= 0 and enemy_life > 0: enemy_victory += 1 print('悲催,敌人把你干掉了!') else: print('哎呀,你和敌人同归于尽了!') if player_victory > enemy_victory : time.sleep(1) print('【最终结果:你赢了!】') elif enemy_victory > player_victory: print('【最终结果:你输了!】') else: print('【最终结果:平局!】')
5.版本2【格式化字符串 %】
我们可以把%
想象成:图书馆里用来占位的一本书。先占一个位置,之后再填上实际的变量。举个例子:下面这两种写法是相同的,请你着重研究下第二行的语法。
print('血量:'+str(player_life)+' 攻击:'+str(player_attack)) print('血量:%s 攻击:%s' % (player_life,player_attack))
格式符%
后面有一个字母s
,这是一个类型码,用来控制数据显示的类型。
%s
就表示先占一个字符串类型的位置。
占完位置之后,我们要以%
的形式在后面补上要填充的内容,如此一来我们就免去了转换类型的烦恼。如果是多个数据,就要把它们放进括号,按顺序填充,用逗号隔开。
简化后的代码:
import time import random player_victory = 0 enemy_victory = 0 for i in range(1,4): time.sleep(1.5) print(' \n——————现在是第 %s 局——————' % i) player_life = random.randint(100,150) player_attack = random.randint(30,50) enemy_life = random.randint(100,150) enemy_attack = random.randint(30,50) print('【玩家】\n血量:%s\n攻击:%s' % (player_life,player_attack)) print('------------------------') time.sleep(1) print('【敌人】\n血量:%s\n攻击:%s' % (enemy_life,enemy_attack)) print('-----------------------') time.sleep(1) while player_life > 0 and enemy_life > 0: player_life = player_life - enemy_attack enemy_life = enemy_life - player_attack print('你发起了攻击,【敌人】剩余血量%s' % enemy_life) print('敌人向你发起了攻击,【玩家】的血量剩余%s' % player_life) print('-----------------------') time.sleep(1.2) if player_life > 0 and enemy_life <= 0: player_victory += 1 print('敌人死翘翘了,你赢了!') elif player_life <= 0 and enemy_life > 0: enemy_victory += 1 print('悲催,敌人把你干掉了!') else: print('哎呀,你和敌人同归于尽了!') if player_victory > enemy_victory : time.sleep(1) print('\n【最终结果:你赢了!】') elif enemy_victory > player_victory: print('\n【最终结果:你输了!】') else: print('\n【最终结果:平局!】')
以上就是基于Python实现人机PK小游戏的详细内容,更多关于Python人机PK游戏的资料请关注脚本之家其它相关文章!