ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
这节课我们参考了[13岁外国小程序员的编程游戏](https://www.raywenderlich.com/2795-beginning-game-programming-for-teens-with-python)。 [TOC] # 步骤零:python 环境部署 我们还是使用`Anaconda` 的 `python3.5` 虚拟环境,这里面我们要用到`pygame`这个工具,`python3`对`pygame`的支持要好很多,所以我们得用 python3.5 的虚拟环境(好吧,顺便吐槽一下`python2`和`python3`的兼容问题,不过这个问题k12以下小朋友就不用了解了,等他们长大了,这个问题肯定不存在了,他们遇到的可能是`python7`和`python8`的兼容问题。) 切换到虚拟环境: `source activate python3.5` 然后安装`pygame`,这里使用`pip`这个安装工具,(貌似 python 有很多安装方式,我们选一个最简单的工具。人生苦短,不要太麻烦!) `pip install -U pygame --user` 安装后,要检查一下`pygame`是不是真的装上了,这个工具的开发者很好啊,提供了一个方法(我们都要向他学习,人人都这样,世界该多美好啊!) `python -m pygame.examples.aliens` 这里参考的是[pygame安装指南](https://www.pygame.org/wiki/GettingStarted)。 然后就进行正题了。 ***** # 步骤一:Hello 兔子哥 添加[游戏资源](http://www.raywenderlich.com/downloads/BB_Resources.zip)。下载文件后,在硬盘上为您的游戏创建一个文件夹,并将资源文件夹解压缩到该文件夹​​中,以便您的游戏文件夹中有一个名为resources的子文件夹,其中各种资源分组在其中的其他文件夹中,如下所示: ![](https://box.kancloud.cn/96b664ed247c79b96e04ee6a146a8142_1400x518.png) 现在可以开始创建游戏“兔子和獾”了。***代码如下:*** ``` # 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 - if it is quit the game 如果检测到退出游戏,就退出游戏 for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() exit(0) ``` 将文件保存到您的游戏文件夹(资源子文件夹所在的文件夹)中,并将其命名为`game.py`。 我们逐节介绍代码: 1. 导入pygame库。 这样我们就可以在程序中使用库中的函数。 1. 初始化PyGame并设置显示窗口。 1. 加载将用于兔子的图像。 1. 继续循环代码块。 > 注意:在其他计算机语言里使用花括号来显示要在`while`循环或`if`语句中执行的代码块,`Python`使用缩进来识别代码块。 所以适当的缩进在`Python`中非常重要 - 记住这一点。 5. 在绘制任何东西之前用黑色填充屏幕。 1. 将加载的兔子图像添加到`x = 100`和`y = 100`的屏幕上。 1. 更新屏幕。 1. 检查是否有任何新事件,如果新事件是退出,则退出程序。 > 注意:根据`pygame` 文档 ,您不需要调用`pygame.quit()`,因为解释器会在解释器关闭时自动调用它。 但是,至少在`Mac OS`上,除非调用`pygame.quit()` ,否则游戏将在退出时挂起。 如果现在运行代码,应该看到类似于下面的屏幕: ![](https://box.kancloud.cn/18cd07e2340c8c3254f9b8afbd2d5d89_391x320.png) 兔子上场了,准备好行动了! 看起来有点孤独有点黑茫茫,只有兔子站在黑色的背景上。 是时候美化一点点了。 # 步骤二:兔子哥说,给我来点背景,我要战斗 让我们首先在游戏场景中添加背景。 这可以通过几个`screen.blit()`调用来完成。 在第3节末尾,加载播放器图像后,添加以下代码: ``` grass = pygame.image.load("resources/images/grass.png") castle = pygame.image.load("resources/images/castle.png") ``` 这会把图像并将放入屏幕中。 但是,草地没有覆盖整个屏幕区域哦,这意味着我们得多写点代码把草覆盖在整个屏幕区域上。 将以下代码添加到第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 )) ``` `for`语句首先遍历`x`。 然后,在第二个`for`循环中,它将遍历`y`并在`for`循环生成的`x`和`y`值处绘制草。 接下来的几行只是在屏幕上绘制城堡。 如果你现在运行程序,你应该得到这样的东西: ![](https://box.kancloud.cn/bb992b243849aa64147c87133dc3d97f_391x320.png) 这样看起来好很多啦! 简单一点的是这样的: ![](https://box.kancloud.cn/c3d4856089c31b88a45d3efdcea398d2_1366x768.png)