知识中心

用Python开发你的第一个小游戏 | Python从入门到精通:入门篇之二十三-阿里云开发者社区

2019-12-30 00:00:00 mimukeji

第二十二节:游戏的运行逻辑分析
一、游戏角色建立
1、显示欢迎信息

print('*'*20,"欢迎来到游戏!",'*'*20)

2、显示身份的选择信息

print("请选择你的角色:")
print("t1.唐僧")
print("t2.白骨精")
#游戏的身份选择
User_Role=input("请输入1~2:")

为了显示出来的内容整齐,在身份“唐僧”和“白骨精”前面加了一个制表符“t”,显示一个格式的缩进。
用input()函数获取用户的输入,并存放在变量User_Role中。
3、根据用户的选择显示不同的提示信息

if User_Role == '1' :
    #用户选择1
    pass
elif User_Role == '2' :
    #用户选择2
    pass
else :
    #用户输入其他
    pass

获取到用户的输入内容之后,要根据不同的输入内容显示不同的提示信息,就要对获取到的内容分情况讨论。在本游戏中,用户可能输入1、2、其他内容,所以就分了三种情况讨论。
接下来分析当用户选择1的时候:

print("你将以->唐僧<-的身份进行游戏")

看一下执行结果:
image.png
为了区分身份和上述的欢迎信息,打印一条分隔符:

print('-'*55)

再设置当用户输入2的时候执行的语句,理论上来说应该是选择白骨精的身份,但是本系统中白骨精是反派boss,所以还是匹配唐僧的身份。
当用户输入其他的内容的时候,提示信息:输入错误,并为用户分配唐僧的游戏身份。
程序如下:

#打印一行分割符
print('-'*55)
if User_Role == '1' :
    #选择1
    print("你已经选择了1,你将以->唐僧<-的身份进行游戏")
elif User_Role == '2' :
    #选择2
    print("你居然选择白骨精,太不要脸了,系统将为你匹配->唐僧<-的身份进行游戏")
else :
    # 输入其他
    print("你的输入错误!系统将为您自动分配身份,你将以->唐僧<-的身份进行游戏")

这就完成了游戏的第一步:角色的建立,接下来就是设置进入游戏之后的页面和功能操作了。
二、游戏的进行
1、显示玩家的基本信息(攻击力 生命值)
创建变量保存玩家的攻击力和生命值:

User_life = 2 #生命值
User_attack = 2 # 攻击力

创建变量保存Boss的信息:

Boss_life = 10 #boss的生命值
Boss_attack = 10 #boss 的攻击力

将玩家的信息在创建角色的时候显示给用户,但是Boss的就不必了,中间打印一行分割符:

#打印一行分割符
print('-'*55)
#显示玩家信息
print(f'你的生命值为 {User_life},你的攻击力为 {User_attack}')

此时执行一下程序,可以看到:
image.png
2、玩家的操作项(练级、打boss、逃跑)
首先打印玩家可进行的操作,并获取玩家的选择。

print("请选择你要进行的操作")
print("t1.练级")
print("t2.打boss")
print("t3.逃跑")
User_option=input("请选择要做的操作,输入1~3:")

执行结果为:
image.png
此时若是这么处理用户的选择的话,就会导致用户只可以做一次选择,只可以进行一次操作,练级也只能是加一次,显然这是不友好的,也是不符合常理的。
我们想让用户可以一直进行操作的选择,那么就要将操作的语句以及对操作的处理放到循环体里面。
这个时候又产生一个问题了,循环几次结束程序呢?
这里答案是,等待用户结束,所以要写成一个死循环,但是可以用break来结束整个循环。
所以将接下来的操作放入一个循环体里面:

while True :

现在就可以来处理用户的选择了,当用户选择1的时候,进行练级,可设置每次练级提升的攻击力和生命值,假设为2,程序如下:

    if User_option == '1' :
        #练级,增加玩家的生命值和攻击力
        User_life += 2
        User_attack += 2
        print(f'恭喜你升级了! 你的生命值为:{User_life},你的攻击力为:{User_attack}')

执行结果为:
image.png
这就完成了想要的循环结果,以及持续的练级。
接下来设置当用户选择打boss的时候的处理方式:
玩家攻击boss,此时要根据玩家的攻击力来判断boss是否还有生命值,如果有则反击,如果没有则玩家胜利,游戏结束。

    elif User_option == '2' :
        #玩家攻击boss,boss掉血,boss掉的生命值为玩家的攻击力
        Boss_life -= User_attack

        # 打印一行分割符
        print('-' * 55)
        print("->唐僧-<攻击了->白骨精<-")
        #判断白骨精是否还有生命值
        if Boss_life <= 0 :
            #玩家攻击力过高,白骨精死亡
            print(f"白骨精受到了你{User_attack}点的攻击力,重伤不治,死亡,->玩家胜利!<-")
            #游戏结束
            break
        else :
            #boss 反击
            User_life -= Boss_attack
            print("->白骨精-<攻击了->唐僧<-")
            #判断玩家是否还有生命值
            if User_life <= 0:
                # 白骨精攻击力过高,唐僧死亡
                print(f"你受到了白骨精{Boss_attack}点的攻击力,重伤死亡->Game Over!<-")
                # 游戏结束
                break

执行结果为:
image.png
如果持续练级,将攻击力提升到大于白骨精的生命值,将会是什么结果呢,再来看下:
image.png
此时就是胜利啦!
接下来处理第三种情况,唐僧退出游戏:
退出游戏那就是结束循环啦,用break即可。

    elif User_option == '3' :
        # 打印一行分割符
        print('-' * 55)
        #逃跑
        print("唐僧一见到白骨精,撒腿就跑!!!游戏结束。。")
        break

执行结果为:
image.png
还要考虑到用户输入错误的情况,再添加一个else语句:

 else :
        # 打印一行分割符
        print('-' * 55)
        print("输入有误!请重新输入!")

执行结果为:
image.png
这就完成了游戏的所有设置啦,同学们可以反复练习几遍,也可以根据自己的想法将游戏设置的更复杂一点。
到这里,入门教程就完全结束啦,同学们有哪些收获呢?
进阶教程即将开启~欢迎同学们的加入!

视频学习:阿里云大学之Python进阶必看

配套Python进阶文章点击此处获取

本文转载自网络,如有侵权,请联系我们删除。

COPYRIGHT © 2018-2019,WWW.51MIMU.COM,ALL RIGHTS RESERVED版权所有 © 广州米姆信息科技有限公司 粤ICP备18145377号

地址:广州市天河区广园东路2191号时代新世界中心南塔21楼07、08单元 电话:020-22822863
14737363737