今天来写一个简单的人机pk的小游戏
具体的效果请看下面的图片
![40acf826ce105b0c1de8ea99abacdb4c.png](https://i-blog.csdnimg.cn/blog_migrate/a1b0c55aeb78076c2612a27638c6affd.jpeg)
这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。
另外,这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。
![1a40ce33993ac0ad1a1abd8a70cd6782.png](https://i-blog.csdnimg.cn/blog_migrate/63034b9e0dcc5c98c27a375e52249310.png)
开始写这个小游戏前我们要理清逻辑,这里我把这个小游戏的编写分成3大块
- 双方属性的设置(随机生成)
- 战斗时扣血及打印战斗过程
- 进行3局PK,最终判定胜负
还有其他的一些小的注意点我们遇到了再解决
接下来就开始编写这个小游戏啦
- 双方属性的设置
因为要随机生成整数,所以我们用到random模块里的randint()函数,括号里放的是两个整数,划定随机生成整数的范围。
import random
#调用random模块,与
a = random.randint(1,100)
# 随机生成1-100范围内(含1和100)的一个整数,并赋值给变量a
这里我是这样生成双方的属性的
import random
player_life=random.randint(100,150)
player_attack=random.randint(30,50)
enemy_life=random.randint(100,150)
enemy_attack=random.randint(30,50)
2.战斗时扣血及打印战斗过程
这里我使用了while循环,当我和敌人的血量都大于0 时就继续战斗,直到有一方或双方都没血了
while (player_life>0)and(enemy_life>0):
player_life-=enemy_attack
enemy_life-=player_attack
print('You attack enemy ! [Player] Life : '+str(player_life)+'n')
print('Enemy attack you ! [Enemy] Life : '+str(enemy_life)+'n')
print('---------------------------------------')
#打印一排'-'只是为了好看点 =.=
虽然这样可以打印出战斗过程,但是实际运行时会发现它一股脑儿把所有战斗信息全都打印出来了,让人来不及看,所以要在每次战斗之后延时一会儿再打印下次战斗信息。
这时就要使用time模块里的sleep()函数,其中括号里的是想要延时的秒数。
3.进行3局PK,最终判定胜负
![627cac38d6bb40b55a2ade416844d7e9.png](https://i-blog.csdnimg.cn/blog_migrate/77265827cd3104d8035021f5a33a663a.png)
我们现在已经实现了图上前五个过程,现在要做的就是把其中几个过程重复3次,再用变量保存3局的结果,最后输出结果就可以了。
整个小游戏的代码如下
import time
import random
print('========Begin!!!=======')
while(input('press 0 to exit 1 to conutine : n')=='1'):
player_win=0;
enemy_win=0;
for i in range(3):
player_life=random.randint(100,150)
player_attack=random.randint(30,50)
enemy_life=random.randint(100,150)
enemy_attack=random.randint(30,50)
if (i==0):
print('----------------First----------------')
elif (i==1):
print('----------------Second---------------')
else:
print('----------------Third----------------')
print('[Player] n')
print('Life : '+str(player_life)+'n')
print('ATK : '+str(player_attack)+'n')
print('---------------------------------------')
time.sleep(1)
print('[Enemy] n')
print('Life : '+str(enemy_life)+'n')
print('ATK : '+str(enemy_attack)+'n')
print('---------------------------------------')
time.sleep(1)
while (player_life>0)and(enemy_life>0):
player_life-=enemy_attack
enemy_life-=player_attack
print('You attack enemy ! [Player] Life : '+str(player_life)+'n')
print('Enemy attack you ! [Enemy] Life : '+str(enemy_life)+'n')
print('---------------------------------------')
time.sleep(1)
if (player_life>0):
player_win+=1
print('Good Luck ! You Win ! n')
elif (enemy_life>0):
enemy_win+=1
print('Bad Luck ! You Lost ! n')
else:
print('Draw ! n')
time.sleep(1)
if (player_win>enemy_win):
print('---------------------------------------')
print('[Final Winner] Player!!!n')
elif (player_win<enemy_win):
print('---------------------------------------')
print('[Final Winner] Enemy!!!n')
else:
print('---------------------------------------')
print('Dogfall!!!n')
print('Exit!')
input('n')
这里我用player_win和enemy_win保存我和敌人胜利的局数,这样对最后的平局判断会写的更清楚一些,我还在整个小游戏的最外层加上了while循环,这样玩好一把以后输入1就可以继续下一轮的较量了。
现在将我写的代码运行一下
![661b568446105a6c837e0a775ca28f03.png](https://i-blog.csdnimg.cn/blog_migrate/5882841064a80af19b284cdeea23abd1.jpeg)
![1b73050bebc44a23ba731f0276c9836c.png](https://i-blog.csdnimg.cn/blog_migrate/ab685d3253077f4eedd6d6d8127521b4.png)
大体上完成了这个小游戏 >.< ,第一次用python写完一个小游戏还是很有成就感的,希望在以后的学习中可以写出更复杂的代码。