要求编写出一个可以实现自动PK,且三局两胜的PK小游戏。
把这个小游戏分为三部分:
1.人为定义属性,人为PK。
这部分非常简单,只需要一个print()函数就可以搞定。
#调用time模块
import time
print('【玩家】\n血量:100 攻击力:40')
time.sleep(2)
print('【敌人】\n血量:100 攻击力:20')
#定义敌人和玩家的基本信息
print('----------------------------------')
time.sleep(2)
#使代码停留2s再运行
print('你发起了攻击,【敌人】血量剩余60')
print('敌人发起了攻击,【玩家】血量剩余80')
print('----------------------------------')
time.sleep(2)
print('你发起了攻击,【敌人】血量剩余20')
print('敌人发起了攻击,【玩家】血量剩余60')
print('----------------------------------')
time.sleep(2)
print('你发起了攻击,【敌人】血量剩余-20')
print('敌人发起了攻击,【玩家】血量剩余40')
print('----------------------------------')
time.sleep(2)
print('敌人死了,你赢了')
这是最简单的,但是这样看起来很难看,因为再这里面【玩家】和【敌人】的基本信息都是我们自己人为设定的,这样太不公平了。所以我们要随机生成玩家和敌人的基本信息。
2.随机生成数字,自动pk
python中随机生成数字的函数是random模块下的randint()函数。
import random
a=random.randint(0,10)
print(a)
>>>10
>>>4
这样我们就可以随机生成【玩家】和【敌人】的血量和攻击力等基本信息。
import random
#调用random模块
player_life=random.randint(100,200)
enemy_life=random.randint(100,200)
player_attack=random.randint(30,50)
enemy_attack=random.randint(30,50)
#随机生成【玩家】和【敌人】的血量和攻击力基本信息。
print('【玩家】\n血量:'+str(player_life)+'攻击力:'+str(player_attack))
print('【敌人】\n血量:'+str(enemy_life)+'攻击力:'+str(enemy_attack))
#打印出【玩家】和【敌人】的血量和攻击力
在自动PK时,哪个的血量先小于等于0就结束,否则一直攻击下去,要实现这个就用到了while循环。并且在循环完以后还要判断谁的血量先小于等于0,这时用到if条件判断语句。
import time
import random
#调用time,random模块。
player_life=random.randint(100,200)
enemy_life=random.randint(100,200)
player_attack=random.randint(30,50)
enemy_attack=random.randint(30,50)
print('【玩家】\n血量:'+str(player_life)+'攻击力:'+str(player_attack))
print('【敌人】\n血量:'+str(enemy_life)+'攻击力:'+str(enemy_attack))
#随机生成并打印出【玩家】【敌人】的血量和攻击力。
print('--------------------------')
time.sleep(2)
#代码停留2s运行
while(player_life>0)and (enemy_life>0):
#while循环,【玩家】和【敌人】的血量同时大于0时继续循环。
player_life=player_life-enemy_attack
enemy_life=enemy_life-player_life
print('敌人向你发起攻击,你的血量还剩'+str(player_life))
print('你向敌人发起攻击,敌人的血量还剩'+str(enemy_life))
print('-----------------------')
time.sleep(2)
#if条件判断语句,判断哪个的血量先小于等于0.
if (player_life>0)and(enemy_life<=0):
print('敌人被打败了,你赢了')
elif(player_life<=0)and(enemy_life>0):
print('你被打败了,敌人赢了')
else:
print('平局')
3.三局两胜,判断最终的胜利。
判断三局两胜,还需要定义两个新的变量player_win和enemy_win,根据player_win和enemy_win的大小作比较,得出最终的结果。
还是需要if条件判断语句判断最终胜利结果。
if player_win>enemy_win:
print('你获得了最终的胜利!!!')
elif player_win<enemy_win:
print('敌人获得了最终的胜利!!!')
else:
print('你们打成了平局!!!')
因为是要进行三局比较,所以我们需要一个循环来完成三次pk。最后生成完整程序:
import time
import random
if __name__ == '__main__':
number = 0
player_win = 0
enemy_win = 0
while number < 3:
number += 1
print('-----第' + str(number) + '局开始')
time.sleep(1)
player_life = random.randint(200, 300)
player_attack = random.randint(40, 50)
enemy_life = random.randint(200, 300)
enemy_attack = random.randint(40, 50)
print('【玩家】\n血量:' + str(player_life) + '攻击力:' + str(player_attack))
print('【敌人】\n血量:' + str(enemy_life) + '攻击力' + str(enemy_attack))
print('--------------------')
time.sleep(2)
while (player_life > 0) and (enemy_life > 0):
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('你受到敌人攻击,你的血量还剩下' + str(player_life))
print('敌人受到你的攻击,敌人的血量还剩下' + str(enemy_life))
print('---------------------')
time.sleep(2)
if (player_life > 0) and (enemy_life <= 0):
print('你赢了')
player_win += 1
elif (player_life <= 0) and (enemy_life > 0):
print('敌人赢了')
enemy_win += 1
else:
print('平局')
if player_win > enemy_win:
print('你获得了最终的胜利!!!')
elif player_win < enemy_win:
print('敌人获得了最终的胜利!!!')
else:
print('你们打成了平局!!!')