用Python开发你的第一个小游戏 | Python从入门到精通:入门篇之二十三

简介: 经过了上节课的分析,这节课老师带大家开发小游戏。

第二十二节:游戏的运行逻辑分析
一、游戏角色建立
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进阶文章点击此处获取

相关文章
|
5天前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
【10月更文挑战第12天】本文探讨了Python开发中性能优化和代码审查的重要性,介绍了选择合适数据结构、使用生成器、避免全局变量等性能优化技巧,以及遵守编码规范、使用静态代码分析工具、编写单元测试等代码审查方法,旨在帮助开发者提升开发效率和代码质量。
17 5
|
6天前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
28 0
|
1天前
|
存储 算法 Python
【10月更文挑战第16天】「Mac上学Python 27」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。
32 3
|
2天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
3天前
|
设计模式 开发者 Python
Python编程中的设计模式:从入门到精通####
【10月更文挑战第14天】 本文旨在为Python开发者提供一个关于设计模式的全面指南,通过深入浅出的方式解析常见的设计模式,帮助读者在实际项目中灵活运用这些模式以提升代码质量和可维护性。文章首先概述了设计模式的基本概念和重要性,接着逐一介绍了几种常用的设计模式,并通过具体的Python代码示例展示了它们的实际应用。无论您是Python初学者还是经验丰富的开发者,都能从本文中获得有价值的见解和实用的技巧。 ####
|
5天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
11 1
|
5天前
|
机器学习/深度学习 人工智能 架构师
Python学习圣经:从入门到精通Python,打好 LLM大模型的基础
Python学习圣经:从0到1精通Python,打好AI基础
|
5天前
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
13 0
|
5天前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--入门
Python数据分析篇--NumPy--入门
16 0
|
5天前
|
IDE 开发工具 索引
Python基础知识---入门
Python基础知识---入门
5 0