2KB项目,专业的源码交易网站 帮助 收藏 每日签到

青少年如何使用 Python 开始游戏开发

  • 时间:2019-01-23 18:40 编辑:2KB 来源:2KB.COM 阅读:341
  • 扫一扫,手机访问
  • 分享
摘要:
Python 英文原文:Beginning Game Programming for Teens with Python

这是一篇由教程团队成员Julian Meyer发表的文章,一个12岁的python开发人员。你可以在Google+Twitter找到他

你可曾想过如何创建视频游戏吗?它不像你想象的那么复杂!

在本教程中,您将创建一个简单的游戏叫做兔子和獾,在这里作为英雄的兔子要保卫城堡反击进攻的獾群。:O

写这个游戏,你将使用Python。不,我指的并不是一条大蛇!:]

Python是一种计算机编程语言。我们就本教程选择Python,Python是一种易于上手、有趣而且很容易学的语言。

如果你刚接触Python,开始之前先检出这本书 - 深入Python:怎样像计算机科学家一样思考,这将使你提升速度。

然后回到这里,准备开始—— 有一场小兔子和獾之间的战争即将发生。继续阅读将加入战争吧!

开始: 安装Python

如果你想在Windows电脑上尝试本教程,你需要安装Python,记住要安装2.7.3版本而不是3.3.0!运行完安装程序后,在开始菜单程序文件夹中会有IDLE,运行IDL。

如果你使用Mac,Python已经安装了!只需打开一个终端(/Applications/Utilities/Terminal.app),输入python然后按回车。

注意:如果你从python.org安装Python(如果你想获得PyGame需要这样做),那么你也需要在Mac上进入IDLE。它应该在“Applications/Python 2.7”文件夹内。

如果操作正确的话,你将会看到类似输出:

Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

注意:如果你想退出Python提示窗(三个尖括号提示:>>>),你可以通过在提示窗里输入exit()或按Ctrl+D。

一旦你在Python提示窗了,测试Python是否正常工作的话输入print 1+1,然后按回车或换行,它将输出2。你已经写了你的第一个Python程序。

现在你知道Python工作正常,为使用Python写游戏你需要安装PyGame。

PyGame是一个使写游戏变简单的Python库,它提供如图像处理、声音回放等你可以很容易添加都游戏中的功能。

这来下载你系统适合的PyGame,确认你下载的是一个Python2.7版本。

注意:从上面链接下载的PyGame安装文件不能与Apple的Mac上默认安装的Python一起工作,为使用PyGame你需要从python.org上下载安装Python,或者你可以通过MacPorts安装Python和PyGame。

要检验PyGame安装是否正确的话,打开IDLE或通过终端运行Python,在Python提示符处输入import pygame,如果回车后没有输出的话你安装成功了。

如果,另一方面,输出了下附类似错误,PyGame没有正确安装。

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pygame
>>>
如果你遇到类似的错误,在论坛上发出来我将帮助你让它正常。

从文件运行Python代码

虽然你可以在Python提示符下运行短的Python代码,但如果你工作在一个大的程序(比如游戏)里,你可能想要将你的代码保存到一个文件,这样你就不必一遍又一遍地键入它了。

有几种方法可以运行Python程序文件。一种方法是使用一个纯文本编辑器,不如记事本(Windows)或TextEdit(Mac)。打开一个新的文本文件,输入你的Python代码(像print 1 + 1)。然后保存它为asXXX.py(XXX可以是任何描述性的文件名称)。

使用Windows的话,通过双击这个文件来运行它。在Mac上,打开终端,输入python,然后拖动你保存的文件到终端窗口并按Enter。

另一种方法是键入代码类到IDLE,也就是你在这个教程中需要做的方式。运行IDLE - 只需在终端输入IDLE。 然后选择文,然后选择FileNew Window,会出现一个你可以输入代码的文本编辑器窗口。你可以通过FileSave保存你更改的代码,通过运行RunRun Module(F5)运行代码。

请注意运行菜单只在你已有一个文件在编辑器窗口打开时有效。

添加游戏资源

你几乎已经可以开始创建你的游戏了。但没有一些震撼的图像和声音效果的游戏又算什么呢?我已经收集了游戏所需要的所的图形和声音效果并把它们压缩成了一个ZIP存档,你可以在这里下载。

下载文件后,在你的硬盘上创建一个游戏使用的文件夹,将resources文件夹解压到这个文件夹中,这样你的游戏文件夹有了名为resources的子文件夹,各种资源在resources文件夹里面分组显示如下:

Resources

兔子和獾的游戏你已经准备就绪。:]

第一步:(编写简单的)Hello Bunny(嘿,兔子)

运行IDLE开发环境,向上一节提到的那样,打开一个新的文本编辑窗。在编辑窗键入以下代码:

# 1 - Import library
import pygame
from pygame.locals import *
 
# 2 - Initialize the game
pygame.init()
width, height = 640, 480
screen=pygame.display.set_mode((width, height))
 
# 3 - Load images
player = pygame.image.load("resources/images/dude.png")
 
# 4 - keep looping through
while 1:
    # 5 - clear the screen before drawing it again
    screen.fill(0)
    # 6 - draw the screen elements
    screen.blit(player, (100,100))
    # 7 - update the screen
    pygame.display.flip()
    # 8 - loop through the events
    for event in pygame.event.get():
        # check if the event is the X button 
        if event.type==pygame.QUIT:
            # if it is quit the game
            pygame.quit() 
            exit(0)
把它保存到你的游戏目录下(即资源子目录)并命名为itgame.py。

让我们逐段分析以上代码:

1. 导入PyGame库。这一步让你在你的程序中使用来自库中的函数。

2. 初始化PyGame并设置显示窗口。

3. 加载你想要给bunny使用的图片。

4. 循环执行以下缩进的代码。

5. 在绘图前,将屏幕填充成黑色。

6. 将之前加载进来的bunny图片以100*100的大小显示在屏幕上。

7. 更新屏幕。

8. 检查任何新事件如果有的话,否则转到退出命令,退出程序。

注意:根据PyGame的文档,你不需要调用pygame.quit()因为解析器关闭时会自动调用它。然而,至少在Mac OS上,这个游戏会在退出时挂起除非pygame.quite被调用。

如果现在运行这段代码(在Idle菜单栏点击 “RunRun Module"),你应该可以看到一个如下所示的屏幕:

耶,兔子就显示在屏幕上了,并准备做动作!

但是只有一只兔子显示在一个黑漆漆的屏幕上,这个游戏看起来很吓人且很孤单。接下来要做的就是稍微美化一下咯。

第二步:添加布景

我们首先给游戏场景添加背景图片,可以通过调用一组screen.blit()来完成背景添加。

在代码的#3 小节,载入角色图像之后添加下面的代码:

grass = pygame.image.load("resources/images/grass.png")
castle = pygame.image.load("resources/images/castle.png")
这些代码载入图片然后赋给指定的变量,然后把它们画到屏幕上。但如果你检查草地的图片,你会发现它没有覆盖整个640 x 480的屏幕,所以你必须平铺使草地的图片完全覆盖屏幕。

在#6小节的开始(把兔子画在屏幕上之前),添加以下代码到game.py:

for x in range(width/grass.get_width()+1):
	for y in range(height/grass.get_height()+1):
		screen.blit(grass,(x*100,y*100))
screen.blit(castle,(0,30))
screen.blit(castle,(0,135))
screen.blit(castle,(0,240))
screen.blit(castle,(0,345 ))
正如你所见,首先把x坐标通过for循环递增,在这个循环中再把y坐标循环递增,并且将草地画在使用循环生成的x、y坐标上。紧接着的一组代码只是将城堡画在屏幕上。

你现在运行这个程序,你会看到像如下的结果:

从现在开始,变得好看点了! :]

第三步:让兔子动起来

下面你需要添加一些真正的游戏元素,比如让兔子响应键盘的按键。

要做到这一点,你需要实现好一个方法记录哪一个键在某一时刻被按下。你可以简单的使用一个数组保存在游戏需要使用的键的按下状态。

添加如下代码到game.py的#2小节结束(在你设了屏幕高和宽度之后):

keys = [False, False, False, False]
playerpos=[100,100]

这段代码是非常明了。数组keys按WASD的顺序记录它们的状态。数组的每个元素对应一个键,第一个是W,第二个是A等等。

playerpos变量定义程序开始绘制游戏角色的起始位置。因为这个游戏将移动游戏角色到不同的位置,设置一个储存角色位置的变量,然后便可以简单地将角色绘制到这个位置。

现在你需要修改现有的代码来绘制角色,使用新的playerpos变量,将# 6的程序:

screen.blit(player, (100,100))
改为:
screen.blit(player, playerpos)

接下来,基于哪些按键被按下更新键数组,PyGame通过添加event.key事件使检测按键很容易实现。

在# 8检测event.type==pygame.QUIT之后,添加这些代码(如果有块缩进的话使用与pygame.QUIT相同的缩进级):

if event.type == pygame.KEYDOWN:
	if event.key==K_w:
		keys[0]=True
	elif event.key==K_a:
		keys[1]=True
	elif event.key==K_s:
		keys[2]=True
	elif event.key==K_d:
		keys[3]=True
if event.type == pygame.KEYUP:
	if event.key==pygame.K_w:
		keys[0]=False
	elif event.key==pygame.K_a:
		keys[1]=False
	elif event.key==pygame.K_s:
		keys[2]=False
	elif event.key==pygame.K_d:
		keys[3]=False

哇!这里有很多行代码,如果你把它按If语句拆分也不是很复杂的。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部