用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进阶文章点击此处获取

相关文章
|
24天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
24天前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
145 82
|
24天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
24天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
24天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
11天前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
6天前
|
人工智能 自然语言处理 程序员
用通义灵码开发一个Python时钟:手把手体验AI程序员加持下的智能编码
通义灵码是基于通义大模型的AI研发辅助工具,提供代码智能生成、研发问答、多文件修改等功能,帮助开发者提高编码效率。本文通过手把手教程,使用通义灵码开发一个简单的Python时钟程序,展示其高效、智能的编码体验。从环境准备到代码优化,通义灵码显著降低了开发门槛,提升了开发效率,适合新手和资深开发者。最终,你将体验到AI加持下的便捷与强大功能。
|
16天前
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
58 6
|
23天前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
218 9
|
24天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。

热门文章

最新文章