python培训去哪家游戏如何加入爆

上一篇教程,我们通过实现一个敌机由上至下的循环过程,初步了解了pygame这个模块的使用。

接下来,我们进行第二阶段,真正的实现一个通过鼠标控制的小游戏。

因为内容量相对前面的教程来说比较大,我们把第二阶段再分成两个部分来实现。

第一部分:实现配置文件和游戏对象模块;

第二部分:实现游戏主程序部分。

在配置文件中,我们需要作如下配置:

游戏窗口:宽、高、背景色(红\蓝\绿)、边缘填充、是否全屏、字体尺寸

游戏速度:落下速度(敌方)、移动速度(己方)、速度增量(敌方)

说明:飞机实体设置,是用于对己方飞机rect特性尺寸的调整,详见Plane类的代码。

1、导入模块并解析配置文件

在这个模块的开始,我们需要先导入需要使用的其它模块,并且对配置文件进行解析,方便在游戏对象类中使用配置数据。

在游戏对象模块中,我们只需要创建Enemy(敌方飞机)和Plane(己方飞机)两个游戏对象类。

不过,在这两个类中,会有很多相同的代码。

我们可以把这些代码抽取出来,单独写成一个类。

3、创建敌方飞机对象类

敌方飞机我们要考虑以下内容,包括:

每次移出屏幕下方后重置的位置;

每一帧刷新后位置(受速度影响);

每一帧刷新时,判断敌方飞机是否从完全移出屏幕下边缘。

4、创建己方飞机对象类

己方飞机我们要考虑以下内容,包括:

每一帧刷新后的位置(受鼠标指针位置和屏幕可活动区域影响);

触碰到敌方飞机的处理。

在完成以上内容之后,我们就可以着手主程序模块的编写了。

在编写之前,我们先预先了解一下整个程序的结构。

我们已经完成了整个程序左侧的部分,在下一篇教程中,我们一起完成右侧的部分。

在这里,我们先对右侧部分内容做一些整体上的理解,这样在编写代码的时候才能有一个清晰的逻辑。

在游戏中有两个状态,我们来看一下状态的类型和产生,分别是:

暂停状态:进入游戏、进入关卡以及游戏结束时。

运行状态:游戏进行时。

这个类是运行状态,主要是对关卡的处理,包括控制游戏的速度、创建游戏对象、判断游戏结束或者进入下一关以及关卡屏幕的显示方案等。

在游戏中会有多个暂停状态,包括:

每一个暂停的状态,都可以点击继续,都要显示背景颜色、图片以及文字。

所以,我们在Paused类中将多个暂停状态共有的内容进行抽象处理。

Paused类的子类包含以下几个:

Infol类:游戏信息

这些子类只需要定义显示的图片以及文字内容,或者其它独有的功能。

进行游戏初始化以及定义游戏运行的方法。

综上所述,在游戏主程序模块中,代码的结构如下所示。

"""泛型游戏状态类,可以处理事件和屏幕显示。"""

"""处理退出事件。"""

"""游戏等级,用于计算共有多少敌机落下,移动游戏对象以及其他与游戏相关的逻辑任务。"""

"""初始化关卡的等级和游戏对象。"""

"""关卡运行,并进行游戏结束或通过关卡的处理。"""

"""关卡运行时的屏幕显示。"""

"""暂停游戏的状态,按任意键或点击鼠标退出暂停状态。"""

"""处理按任意键继续游戏。"""

"""按任意键时进入下一个游戏状态。"""

"""创建下一关卡。"""

"""负责主事件循环的游戏对象,完成在不同状态间切换的任务。"""

本节练习源代码:【点此下载】


}

这个练习项目来自《Python基础教程(第2版)》,案例原名为“DIY街机游戏”。

原文中做的是一个天上掉秤砣的游戏,玩家需要控制屏幕底部的香蕉左右移动,躲避掉下来的秤砣。

在这篇教程中,我们使用的素材是两个飞机。

也就是说,玩家要控制屏幕底部的飞机,躲避其他从屏幕上方飞来的敌机。

这个练习项目,我们需要使用到pygame模块。

安装完成之后,可以运行下方命令进行测试,测试程序是一个带有图像与声音小游戏。

在完成模块的安装之后,我们就可以开始进行项目练习了。

在这篇教程中,我们的练习目标是完成一个敌机在屏幕中向下移动,并且当敌机从屏幕下方消失时,再次让敌机从顶部随机位置出现。

  • sys:用于退出游戏程序
  • pygame:用于游戏的功能
  • random:用于敌机水平方向随机出现的位置

这里特别说明以下pygame.locals这个模块,它的里面包含所有定义好的常量,例如:FULLSCREEN(全屏)和KEYDOWN(按键按下)。

常量和变量一样,用于保存某些值,区别在于变量的值会发生改变,而常量的值是固定的。

在Python中一般表示常量的名称是全部大写字母的单词。

在游戏中的每一个飞机都是一个游戏对象(子图形),要通过素材图片进行创建。

在游戏对象中要包含对图片的处理以及重置和更新的方法。

在这个游戏中,重置方法负责将游戏对象移动回初始位置,更新方法则控制游戏对象的移动方向。

一个游戏对象类的创建,需要继承pygame.sprite模块中的Sprite类。

通过图片创建游戏对象时,需要用载入的图片(Surface对象)调用get_rect()方法,这个方法会返回一个Rect对象(rectangle:矩形,理解为一个默认与图片尺寸相同的不可见矩形。),这个对象包含很多特性,例如:left、top、width和height属性,也就是位置与宽高。

每个游戏对象的类都要包含image和rect两个特性,image(Surface对象)决定游戏对象显示的内容,rect(Rect对象)决定游戏对象的位置、尺寸。

所以,我们可以通过设置rect对象的特性改变游戏对象的位置。

注意:在上方代码中的变量enemy_image和screen_size会在之后的主程序代码中定义。

  • 初始化:包括屏幕尺寸、显示模式以及鼠标指针的设定;
  • 载入图像:读取本地的图像文件
  • 游戏对象集:创建游戏对象集将所有游戏对象添加(当前就1个)
  • 屏幕初始化:定义屏幕的颜色,创建屏幕外观并填充颜色后,弹出显示屏幕。
  • 清除游戏对象的方法:对游戏对象经过的区域进行清理;因为游戏运行时是在不停的绘图,要将之前的图擦除,再绘制新图。
  • 循环:监控退出事件以及进行游戏对象的处理

大家可以通过代码中的注释,仔细理解整个实现过程。

# 载入游戏对象的图像 # 创建游戏对象集并添加游戏对象 # 实现游戏对象的不停移动

完成以上代码之后,我们运行程序,就能够看到一个由上至下移动的敌机。

}

  “人生苦短,我用Python”。这句戏言真实反映了Python语言的江湖地位。那么,要快速上手和进阶Python编程,有什么好途径呢?我推荐游戏开发。

  作为一名拥有十余年程序设计教学经验的老师,我清楚地记得,当告诉学生们课程任务有俄罗斯方块游戏开发的时候,部分同学在课堂上热切地喊出“好耶”,部分同学鼓起掌来,大家一副跃跃欲试的神情。
  那是我在2014级软件工程专业教学改革试点班中做的尝试。开设的课程叫作“大学计算机基础B”,一共16周,64学时。前面第11周讲授计算机基础和Python编程,后面5周学生学习C/C++(因后续课程需要)。后5周的大作业就是基于Win32 API开发俄罗斯方块游戏程序。我多少有些担心学生是否做得下来,然而到验收的那一天,我有些吃惊。大部分同学的作品都明显超出了作业要求的标准。
  尽管有很多因素(比如强有力的教辅)促成了这样的好结果,但我认识到一个重要的原因是“激发了学生们的学习热情”。是的,游戏开发有这个效果。有学生告诉我,他把自己的作品发布到高中同学群,让同学们玩玩,结果赢得赞誉一片。我察觉到了学生嘴角露出了小小的得意。有学生开夜车编程序,搞到凌晨两三点都不想去睡觉。所以呢,我百分百肯定,游戏开发是学习Python编程的好途径。

  用Python开发游戏的门槛是很低的。例如,实现显示游戏窗口(见图1)的代码,不包括空行和注释行的话,只需要15行。如果你想亲自验证一下,那么请阅读我发布的,然后数一数其中有实际功能的代码行数。我以前用VC++开发图形界面程序的时候,实现显示游戏窗口的代码有一大堆,跨好几个文件,让人望而生畏。用Python的话,基于Pygame模块,15行代码就搞定了。

  无论是Python入门,还是Python进阶,学习者都有适合的游戏开发项目可供选择。正是这样,Python语言成为教孩子学编程的优先选择。教小孩学编程,可不能一本正经的,必须用好招吸引他们,激发他们。游戏开发就是常用的招术。以《教孩子学编程(Python语言版)》一书为例,该书一开头就教孩子绘制彩色螺旋线,接着教孩子编写小游戏,然后教孩子编写具有动画、鼠标控制的游戏。我建议初学者可以自降身份去学一学这本书。如果你想编写有更多挑战的游戏,那么建议你学习《Python游戏编程快速上手》一书或者《Python游戏编程入门》一书。
  还想要更高一点的挑战?建议你尝试跟着我学习“用Python开发俄罗斯方块”。你可以访问我在GitChat开设的。该教程面向的是已有Python编程基础的、想进一步提高Python编程能力的开发者。教程设计采用“小步走”策略,一共有22篇文章。每一篇都是一个完整的实验步骤,实现一个功能。在每一篇文章中,首先指出实验步骤的目标,也就是指出完成整个步骤后,程序运行效果是什么样的。接着,描述实验步骤的实现思路和任务。然后,逐个任务地讲解具体的做法,也即指出哪里要修改/补充什么代码,改写后的代码是什么样的,为什么要这样做。最后,给出该实验步骤完成后的源代码版本的Github链接,供浏览或下载。到最后,我们将实现能供家人、朋友或同学实际玩一玩的俄罗斯方块游戏。图2是运行界面的截屏。我呈现了该程序的运行效果。


图2 俄罗斯方块游戏界面

  有没有开源的游戏程序呢?有的,推荐了不少开源项目。其中推荐的 BombSquad是一个 3D 炸弹人游戏,界面(见图3)还是挺酷炫的。


图3 3D炸弹人游戏的界面

从游戏开发中能学到什么

  1. 开发者有机会接触到千行代码量级的程序。初级开发者编写的程序一般只有几十行代码。要指出的是,编写几十行代码的程序和编写千行代码的程序,完全不是一个量级的事。至少,千行代码这一现实将促使开发者养成使用函数的习惯。我上编程基础课的时候,由于编写的程序只有几十行代码,学生不愿意用函数,你再苦口婆心地讲道理也没用。
  2. 游戏开发要求开发者采用良好的结构来组织代码。程序的代码量上去了,会促使开发者使用多个模块文件,甚至使用类与对象来编程。
  3. 从游戏开发中,开发者将学习图形界面开发(GUI),理解事件驱动编程模型。这将会帮助开发者消除对软件的神秘感,有助于开发者开展更多的探索。
  4. 游戏开发会提高开发者的学习能力。例如,游戏开发会用到python标准库以及各种第三方库。这将促使开发者借助网络和手册,查询各个函数的用法,学习相关的概念和知识。一点一点地,开发者拥有更多知识,更强的学习能力。

  1. 切勿囫囵吞枣。不要这样做:照着书本或者教程敲(甚至复制)一遍代码,跑一遍程序就算完事了。你必须自己搞懂。无论是整体思路,还是一行代码内的细节,你都要吃透。怎样算吃透了程序?不借助书本或教程(借助手册查阅函数的用法是可以的),能正确地再写一遍程序。
  2. 采用“小步走”策略。下一步只实现一个小功能。实现完成后,检查运行效果。通过后再去完成下一个功能。
  3. 多用函数,多用函数,多用函数。把程序代码分解到多个模块文件。使用类和对象来组织代码。
  4. 寻求帮助。我遇到问题的时候,首先做的是厘清问题是什么。接着,我会在网络引擎的搜索框内输入描述问题的关键词,期望得到解决办法的线索。这帮了我的大忙。最后,我偶尔会到论坛上提问。就是一个好选择。

}

我要回帖

更多关于 python培训去哪家 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信