這節課我們參考了[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的子文件夾,其中各種資源分組在其中的其他文件夾中,如下所示:

現在可以開始創建游戲“兔子和獾”了。***代碼如下:***
```
# 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()` ,否則游戲將在退出時掛起。
如果現在運行代碼,應該看到類似于下面的屏幕:

兔子上場了,準備好行動了!
看起來有點孤獨有點黑茫茫,只有兔子站在黑色的背景上。 是時候美化一點點了。
# 步驟二:兔子哥說,給我來點背景,我要戰斗
讓我們首先在游戲場景中添加背景。 這可以通過幾個`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`值處繪制草。 接下來的幾行只是在屏幕上繪制城堡。
如果你現在運行程序,你應該得到這樣的東西:

這樣看起來好很多啦!
簡單一點的是這樣的:
