基于Python的小恐龙游戏设计与分析
2019-10-21董彧先
摘 要:Python是一种跨平台的、开源的、免费的、解释型的高级编程语言。它具有丰富的、强大的库,能够把其他语言制作的各种模块很轻松地联结在一起,所以Python常被称为“胶水”语言。Python语言近几年发展势头迅猛,应用领域也非常广泛,在Web编程、图形处理、黑客编程、大数据处理、网络爬虫、科学计算和游戏编程等领域都能找到Python的应用。Python语言的研究和发明主要是为了便于学习和应用,因此Python语言是开源的,并且语法非常简单、容易编写和理解。本文通过对小恐龙游戏的设计与分析,掌握Python语言在游戏开发领域的优势。
关键词:Python;游戏开发;计算机语言;程序设计
中图分类号:TP311.1 文献标识码:A 文章编号:2096-4706(2019)12-0081-03
Abstract:Python is a cross-platform,open source,free,explanatory high-level programming language. It has rich and powerful libraries,which can easily connect various modules made by other languages. So Python is often called “glue” language. Python language has developed rapidly in recent years,and its application fields are also very wide. It is used in Web programming,graphics processing,hacker programming,big data processing,network crawler,scientific computing and game programming. Python language research and invention is mainly for easy learning and application,so Python language is open source,and the grammar is very simple,easy to write and understand. Through the design and analysis of small dinosaur game,we can grasp the advantages of Python language in the field of game development.
Keywords:Python;game development;computer language;programming
0 引 言
Python是一種计算机程序设计语言,是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,Python越来越多被用于独立的大型项目的开发。Python语言在游戏开发领域有着自己的优势,可以通过相对于其他编程语言更加人性化的语法和更加少的代码量来完成相同的任务。
在本文设计的基于Python的游戏中会看见一只小恐龙,按下键盘中的空格键就能激活该恐龙,然后可以通过空格键来控制小恐龙的跳跃进行障碍物的躲避,并且躲避障碍物的数量进行分数的统计。
1 Python小恐龙游戏的设计流程
在游戏主窗体下完成显示小恐龙、显示滚动地图、随机显示障碍物。在显示小恐龙的同时编写小恐龙的跳跃功能和音效。同时判断游戏中移动的障碍物是否与小恐龙发生碰撞。如果小恐龙与障碍物发生碰撞则播放碰撞音效、显示游戏结束画面、显示游戏积分。如果小恐龙没有与障碍物发生碰撞,则只显示跳过障碍物后的积分变化。
2 小恐龙游戏主窗体的实现
在Python游戏开发中,主要使用Pygame模块,这样可以使小恐龙游戏的开发变得简单很多。创建名称为dinsosaur的文件夹,该文件夹用于保存小恐龙游戏的项目文件,然后在该文件夹中分别创建两个文件夹,一个命名为audio,用于保存游戏中的音频文件,另一个命名为image,用于保存游戏中所使用的图片资源。最后在dinosaur文件夹中创建dinosaur.py文件,在该文件中保存实现小恐龙游戏的代码。首先导入Pygame库与Pygame中的常量库,然后定义窗体的宽度与高度。
其次,创建mainGame()方法,在该方法中首先进行Pygame的初始化工作,然后创建时间对象用于更新窗体中的画面,再创建窗体实例并设置窗体的标题文字,最后通过循环实现窗体的显示与刷新,经过初始化以后就可以尽情地使用Pygame了。使用Pygame时钟之前,必须先创建Clock对象的一个实例,从而控制每个循环多长时间运行一次。通常来说需要先创建一个窗体,方便程序员与代码交互。
在实现一个可以循环滚动的地图时,首先需要渲染两张地图的背景图片,然后地图1的背景图片展示在窗体中,而另一张地图2的背景图片需要在窗体的外面进行准备,如图1所示。
然后两张地图同时以相同的速度向左移动,此时窗体外的地图2背景图片将跟随地图1背景图片进入窗体中,这样就完成了地图的循环播放,如图2所示。
当地图1完全离开窗体的时候,将该图片的坐标设置为准备状态的坐标位置。通过不断颠倒两张图片的位置,然后再进行平移,就可以在用户的视觉中形成一张不断滚动的地图。通过代码实现滚动地图的具体步骤如下:
(1)创建一个名称为KongLongMap的滚动地图类,然后在该类的初始化方法中加载背景图片、定义X与Y的坐标。
(2)在KongLongMap类中创建名为rolling()的方法,在该方法中根据地图背景图片的X坐标判断图片是否移出窗体,如果移出就给图片设置一个新的坐标点,否则按照每次6个像素的跨度向左移动。
(3)在KongLongMap类中创建名为update()的方法,这样就可以实现地图无限滚动的效果。
(4)在mainGame()方法中,设置标题文字代码,在下面创建两个背景图片对象。
(5)在mainGame()方法中循环,实现无限循环滚动的地图。
3 可以跳跃的小恐龙
在实现小恐龙跳跃时,首先需要设置小恐龙在地图上默认的固定位置,然后判断是否按下了键盘中的空格键。如果按下了就开启小恐龙的跳跃开关,让小恐龙以6个像素的距离向上移动。当小恐龙到达窗体的顶部边缘时,让小恐龙以6个像素的距离向下移动,回到地面后关闭跳跃的开关。具体的实现步骤如下:
(1)导入迭代工具,创建一个名称为Dinosaur的恐龙类,然后在该类的初始化方法中首先定义小恐龙跳跃时所需要的变量,然后加载小恐龙跑动的三张图片,最后加载小恐龙跳跃时的音效并设置小恐龙默认显示的坐标位置。
(2)在Dinosaur类中创建Jump()方法,通过该方法实现开启跳跃的开关。
(3)在Dinosaur类中创建Move()方法,该方法先判断小恐龙的跳跃开关是否开启,再判断小恐龙是否在地面上,如果满足了上面的两个条件,小恐龙就以6个像素的距离向上移动。当小恐龙到达窗体顶部时会以6个像素的距离向下移动,当小恐龙回到地面后关闭跳跃开关。
(4)在Dinosaur类中创建dinosaur()方法,在该方法中首先匹配小恐龙跑步的动图,然后进行小恐龙的绘制。
(5)在mainGame()方法中,在创建地图对象的代码下面创建小恐龙。
(6)在mainGame()方法的while循环中,判断关闭窗体的下面判断是否按下了空格键,如果按下了就可以开启小恐龙开关,并且播放跳跃音效。
(7)在mainGame()方法中绘制地图代码下面实现小恐龙的移动与绘制功能。
4 障碍物的出现
在实现障碍物的出现时,首先需要考虑到障碍物的大小以及障碍物的不同,如果每次出现的障碍物都是相同的,那么该游戏将失去游戏的乐趣。所以,需要加载两个大小不同的障碍物图片,然后随机抽选并显示。此外,还需要通过计算来设置多久出现一个障碍物并将其显示在主窗体中。具体的实现步骤如下:
(1)导入随机数,创建一个名称为Obstacle的障碍物类,在该类中定义一个分数,然后在初始化方法中加载障碍物图片、分数图片以及加分音效。创建0至1的随机数数字,根据该数字抽选障碍物是石头还是仙人掌,最后根据图片的宽高创建障碍物矩形的大小,并且设置障碍物的绘制坐标。
(2)在Obstacle类中首先创建move()方法用于实现障碍物的移动,然后创建Obstacle()方法用于实现绘制障碍物。
(3)在mainGame()方法中创建恐龙对象的代码,下面定义添加障碍物的时间与障碍物对象列表。
(4)在mainGame()方法中绘制恐龙的代码下面,计算障碍物出现的间隔时间。
(5)在mainGame()方法中计算障碍物间隔时间代码的下面,循环遍历障碍物并进行障碍物的绘制。
(6)在mainGame()方法中更新整个窗体代码的上面,增加障碍物时间。
5 碰撞与积分
在实现碰撞与积分时,首先需要判断小恐龙与障碍物的两个矩形图片是否发生了碰撞,如果发生了碰撞就证明该游戏已经结束,否则判断小恐龙是否越过了障碍物,确认跃过后就可以进行加分操作,并将分数显示在窗体顶部中间的位置了。具体步骤如下:
(1)在Obstacle类中,Obstacle()方法的下面创建getscore()方法用于获取分数并播放加分音效,然后创建showScore()方法用于在窗体顶部中间的位置显示分数。
(2)在mainGame()方法的上面创建game_over()方法,在该方法中首先需要加载与播放撞击的音效,然后获取窗体的宽度与高度,最后加载游戏结束的图片并将该图片显示在窗体的中间位置。
(3)在mainGame()方法中,绘制障碍物代码的下面判断小恐龙与障碍物是否发生碰撞,如果发生了碰撞,就开启游戏结束的开关,并调用game_over()方法显示游戏结束的图片;否则判断小恐龙是否跳过了障碍物,跃过就进行分数的增加并显示当前得分。
(4)为了实现在游戏结束后再按下空格键时重新启动游戏,需要在mainGame()方法中播放小恐龙跳跃音效代码的下面判断游戏结束的开关是否开启,如果开启,则重新调用mainGame()方法重新启动游戏。
6 结 论
随着人工智能的发展,Python语言的应用变得越来越普遍。通过Python语言中的Pygame模块来设计小恐龙游戏,可以发现Python语言在开发游戏方面非常简便,相比其他语言用了更少的代码量完成了相同的功能。Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。
参考文献:
[1] 邓亚君,杨刚,翁文斌,等.基于Python的网络聊天室设计 [J].电子技术与软件工程,2019(5):35-36.
[2] 蔡敏.Python语言的Web开发应用分析 [J].無线互联科技,2019,16(4):27-28.
[3] 耿颖.使用Python语言的GUI可视化编程设计 [J].单片机与嵌入式系统应用,2019,19(2):20-22+24.
作者简介:董彧先(1981-),男,汉族,山东聊城人,讲师,硕士研究生,研究方向:网络安全、嵌入式系统设计。