python延时函数_Python从0到1 学习笔记4

今天来写一个简单的人机pk的小游戏

具体的效果请看下面的图片

40acf826ce105b0c1de8ea99abacdb4c.png

这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。

另外,这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。

1a40ce33993ac0ad1a1abd8a70cd6782.png

开始写这个小游戏前我们要理清逻辑,这里我把这个小游戏的编写分成3大块

  • 双方属性的设置(随机生成)
  • 战斗时扣血及打印战斗过程
  • 进行3局PK,最终判定胜负

还有其他的一些小的注意点我们遇到了再解决

接下来就开始编写这个小游戏啦

  1. 双方属性的设置

因为要随机生成整数,所以我们用到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

我们现在已经实现了图上前五个过程,现在要做的就是把其中几个过程重复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

1b73050bebc44a23ba731f0276c9836c.png

大体上完成了这个小游戏 >.< ,第一次用python写完一个小游戏还是很有成就感的,希望在以后的学习中可以写出更复杂的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值