70浏览
查看: 70|回复: 1

【行空板Python入门教程】第六课:贪吃蛇小游戏

[复制链接]
本帖最后由 木子呢 于 2022-5-7 15:47 编辑

行空板,新一代国产开源硬件平台,仅需2步,即可让你轻松开启Python学习之路。

贪吃蛇小游戏



在很久很久以前,手机屏幕都还是黑白的年代,有一款叫做“贪吃蛇”的游戏风靡了大街小巷,在那分辨率极低的屏幕上,几条扭扭曲曲的弧线似乎穿越了整个童年。

这节课上,就让我们用行空板来实现一下这款经典的游戏吧!


任务目标

在屏幕上进行贪吃蛇小游戏。


知识点

1、认识pygame库

2、学习使用pygame库创建游戏窗口的方法

3、学习使用pygame库绘制图形、绘制文本、更新屏幕显示的方法

4、学习使用pygame库实现键盘交互的方法

材料清单


软件使用:Mind+编程软件x1

知识储备

1、贪吃蛇小游戏实现原理与逻辑

(1)实现原理

在这个贪吃蛇游戏中,我们将整个游戏区域划分成一个个的小格子,每一个格子的所在位置可以通过行列来表示,由一组连在一起的小格子组成“蛇”,“蛇”分为“蛇头”和“蛇身”两部分。“蛇头”用一个格子表示,“蛇身”用一个列表来存储,结合不同的颜色,这样一条“蛇”就出来了。“蛇”的移动则是将下一格的行列位置添加到列表开头,并移除列表的最后一个元素,就相当于“蛇”向前移动了一格。食物同样以格子的形式随机呈现,当“蛇头”与食物的位置重合,那么“蛇”就吃到了食物,而当“蛇”移动超出了范围亦或者“蛇头”撞在了“蛇身”上,那么游戏结束并计算食物数量。


(2)游戏逻辑图

由于游戏包含了蛇的移动、吃食物、事件监测、结束游戏等多个功能,在编程时,我们可以通过定义函数的方式,实现各个不同的功能部分,之后依据游戏逻辑在所需处调用即可。


2、什么是pygame库

pygame是专为电子游戏设计的跨平台Python库。通过它,我们可以设计包含图像、声音等元素的电子游戏。pygame做游戏开发的优势在于不需要过多地考虑底层相关的内容,而可以把重心放在游戏逻辑上,例如,pygame中集成了很多和底层相关的模块,如访问显示设备、管理事件、使用字体等。关于pygame常用的一些模块可参考下表。


3、pygame库常见函数

pygame库中的函数有很多,我们只使用其中的一部分,编程时,通过“import pygame”导入库后可采用“pygame.函数名()”的形式来实现功能。

(1)init()函数初始化pygame模块

通过init()函数我们可对pygame中的模块进行初始化,在编程时,我们需要将这条指令放在其他pygame指令之前,初始化后方可使用其中的模块。

  1. pygame.init() # 初始化pygame
复制代码

(2)quit()函数退出pygame库

quit()函数是与init()函数功能相反的一个函数,可以实现退出pygame,使pygame库结束工作。在编程时,我们通常在需要结束游戏时使用。

  1. pygame.quit() # 退出pygame
复制代码

4、pygame库display模块中的常用方法

pygame库display模块可用来访问显示设备,以便在设备上显示内容。其中的方法有很多,我们只使用其中的一部分,在编程时,可通过“模块名.方法名()”的形式来实现功能。

(1)set_mode()方法初始化一个准备显示的窗口界面

set_mode()方法可以实现游戏窗口的创建

  1. size=(240,320) # 定义尺寸
  2. window = pygame.display.set_mode(size) # 创建游戏窗口,尺寸为(240,320)
复制代码

其中,size是我们设定的要显示的游戏窗口的尺寸大小,和行空板屏幕相同,window是一个生成的屏幕Surface对象,我们可以对它进行填充颜色、涂画、添加其他对象等各种操作。

如下,在填充颜色时,我们可通过“对象.fill()”的指令实现。

  1. bg_color=(255,255,255) # 定义背景色为白
  2. window.fill(bg_color) # fillcolor # 填充窗口的背景颜色
复制代码

而要想将其他对象添加到窗口对象上,我们可通过“对象.blit()”指令来实现。

  1. window.blit(score, (40,250)) # 在窗口上(40,250)处显示得分
复制代码

(2)flip()方法更新屏幕

flip()方法可以将待显示的画面更新到屏幕上。通常,我们在使用pygame.display模块编写一些功能后,需要使用flip方法,才能将其更新显示到屏幕上。

  1. pygame.display.flip() # Refresh all displays to the window # 更新所有待显示的内容到屏幕
复制代码

5、pygame库draw模块中的常用方法

pygame库display模块可用来绘制各种不同的形状,其中的方法有很多,编程时,可通过“模块名.方法名()”的形式来实现功能。

(1)rect()方法绘制矩形

rect()方法可以实现矩形的绘制。

  1. left=point.col*15 # 定义小方格距离左边缘的距离
  2.     top=point.row*15 # 定义小方格距离上边缘的距离
  3.     pygame.draw.rect(window,color,(left,top,15,15)) # 在窗口上绘制矩形,颜色为color
复制代码

其中,window表示矩形绘制在窗口上,color是指矩形的颜色,left和top分别指矩形距离窗口左边缘和上边缘的距离,用以表示矩形的位置区域。

6、pygame库font模块中的常用方法

pygame库font模块可实现字体的使用,其中的方法有很多,编程时,可通过“模块名.方法名()”的形式来实现功能。

(1)SysFont()方法创建字体对象

SysFont()方法可以实现字体对象的创建。

  1. font = pygame.font.SysFont('Arial', 20) # 设置字体
复制代码

其中,Arial指的是具体的字体类型,20指的是字体大小,font是一个变量用于存储生成的字体对象。

而在创建好字体对象后,我们就可以在其上绘制具体的文本,以达到显示的效果,我们可通过“对象.render()”指令来实现。

  1. score = font.render('Your Score is ' , False, 'pink') # 计算得分
复制代码

其中,'Your Score is '指的是具体绘制的文本,False表示无需抗锯齿,pink指的是文本的颜色,score是一个变量用于存储生成的文本。

7、pygame库中的事件、事件类型、键盘事件以及事件检测

事件(Event)是 pygame 的重要模块之一,它是构建整个游戏程序的核心,比如鼠标点击、键盘敲击、游戏窗口移动、退出游戏等等,这些都可以看做是“事件”,pygame 会接受用户产生的各种操作(或事件),这些操作随时产生,并且操作量可大可小,那么 pygame 是如何处理这些事件的呢?

pygame 定义了一个专门用来处理事件的结构,即事件队列,该结构遵循队列“先到先处理”的基本原则,通过事件队列,我们可以有序的、逐一的处理用户的操作(触发事件)。对于 pygame 中常用的游戏事件,可参考下表:



Tips:当使用 pygame 做游戏开发时,上述事件并非都会应用的到。

其中,键盘事件会涉及到大量的按键操作,比如游戏中的上下左右,或者人物的前进、后退等操作,这些都需要键盘来配合实现。

键盘事件提供了一个 key 属性,通过该属性可以获取键盘的按键。pygame 将键盘上的字母键、数字键、组合键等按键以常量的方式进行了定义,对于部分常用按键的常量,可参考下表:



Tips :由于行空板在开发时已做处理,将按键a、b映射为键盘上的a、b按键,因此,在获取键盘事件时,按下行空板上的按键a、b,同样能够被检测出来。

最后,要想实现键盘按键控制游戏的进行,那么我们就需要先检测事件,那如何才能实现呢?

pygame库event 模块提供了处理事件队列的常用方法,我们通过其中的get()方法就可以实现对于事件的检测。

  1. events = pygame.event.get() # 获取事件
复制代码

其中,events是一个变量,用来存储检测到的事件。

而在获取到了事件之后,我们就可以对它进行判别了
  1. while run: # 游戏循环
  2.     window.fill(bg_color) # fillcolor # 填充窗口的背景颜色
  3.     pygame.display.flip() # Refresh all displays to the window # 更新所有待显示的内容到屏幕
  4.     time.sleep(0.2) # delay 0.2 seconds
复制代码

其中,event.type表示事件的类型,pygame.QUIT表示退出事件,pygame.KEYDOWN表示键盘按下事件,event.key表示键盘的按键, pygame.K_a表示按键a,pygame.K_b表示按键b。

动手实践

任务描述1:创建游戏窗口

通过pygame库创建一个游戏窗口界面。

1、硬件搭建

通过USB连接线将行空板连接到计算机

2、程序编写

STEP1:创建与保存项目文件

启动Mind+,另存项目并命名为“006、贪吃蛇小游戏”。

STEP2:创建与保存Python文件

创建一个Python程序文件“main1.py”,双击打开。

STEP3:程序编写

(1) 导入所需功能库

在这个任务中,我们需要结合pygame库和time库来绘制游戏窗口,因此,我们须先导入它们。

  1. import pygame # 导入pygame库
  2. import time    # 导入time库
复制代码

(2) 初始化游戏并创建指定尺寸的游戏窗口

在使用pygame进行游戏时,我们需先对其进行初始化操作,之后,为了能和行空板的屏幕一致,我们创建一个大小为(240,320)的游戏窗口。

  1. pygame.init() # 游戏初始化
  2. W=240 # 定义宽
  3. H=320 # 定义高
  4. size=(240,320) # 定义尺寸
  5. window = pygame.display.set_mode(size) # 创建游戏窗口,尺寸为(240,320)
复制代码

(3) 定义背景色和初始运行状态

创建好游戏窗口后,我们再为其定义一个背景色和初始的运行状态以便在后续进行设置。

  1. bg_color=(255,255,255) # 定义背景色为白
  2. run=True # 定义初始运行状态为True,表示运行
复制代码

(4) 填充窗口的背景颜色并保持窗口显示

接下来,我们对窗口的背景进行颜色的填充,而为了能使窗口始终保持显示,我们需要不断刷新窗口屏幕的显示内容,这里我们结合循环来实现。

  1. while run: # 游戏循环
  2.     window.fill(bg_color) # fillcolor # 填充窗口的背景颜色
  3.     pygame.display.flip() # Refresh all displays to the window # 更新所有待显示的内容到屏幕
  4.     time.sleep(0.2) # delay 0.2 seconds
复制代码

Tips:完整示例程序如下:
  1. '''创建游戏窗口'''
  2. import pygame # 导入pygame库
  3. import time    # 导入time库
  4. pygame.init() # 游戏初始化
  5. W=240 # 定义宽
  6. H=320 # 定义高
  7. size=(240,320) # 定义尺寸
  8. window = pygame.display.set_mode(size) # 创建游戏窗口,尺寸为(240,320)
  9. bg_color=(255,255,255) # 定义背景色为白
  10. run=True # 定义初始运行状态为True,表示运行
  11. while run: # 游戏循环
  12.      window.fill(bg_color) # fillcolor # 填充窗口的背景颜色
  13.      pygame.display.flip() # Refresh all displays to the window # 更新所有待显示的内容到屏幕
  14.      time.sleep(0.2) # delay 0.2 seconds
复制代码

3、程序运行

STEP1:远程连接行空板

STEP2:点击右上方的运行按钮

STEP3:观察效果

观察行空板,首先可以看到行空板的屏幕变成了白色,而这,正是我们所创建游戏窗口的背景。



任务描述2:添加游戏元素

上述生成的屏幕窗口上空空如也,为了完善游戏,接下来,我们将在其上添加游戏中的最重要的角色元素---蛇和食物。

1、程序编写

STEP1:创建与保存项目文件

新建一个Python程序文件“main2.py”,双击打开。

Step2:程序编写

和任务一相同,在程序的开始部分,我们依旧导入所需功能库,初始化游戏并创建游戏窗口。之后再在此基础上编写其他部分程序。

(1)定义游戏方式

在贪吃蛇游戏中,有蛇和食物两个最重要的元素,那么如何才能在我们的屏幕上表示它呢?

这里,我们将游戏窗口划分成一个个小方格,通过方格来表示界面内的元素,每个小方格的宽和高皆为15像素,这样,由于窗口大小为240*320,因此在横向上会有18个方格,纵向上会有24个,即24行18列的小方格。
  1. # 将游戏窗口划分为一个个小方格,每个方格的宽和高皆为15,共计24行,18列
  2. ROW=24 # 定义行数,每格15*15,24行18列
  3. COL=18 # 定义列数
  4. cell_width=W/COL # 定义格子的宽
  5. cell_height=H/ROW # 定义格子的高
复制代码

(4)定义方格位置

接下来,我们定义一个Point类,将方格看作一个点,通过行与列来表示它的位置。
  1. # 定义Point类以表示方格的位置
  2. class Point:
  3.     row=0 # 行
  4.     col=0 # 列
  5.     def __init__(self,row,col): # 行 列
  6.         self.row=row
  7.         self.col=col
复制代码

(5)定义蛇头、蛇身、食物的位置和颜色

之后,我们将蛇分为蛇头和蛇身两部分,设定其初始时各占一个和三个方格,而食物也作为一个元素占一格。

接着我们通过实例化类的方式来定义他们的位置,同时也定义好他们颜色,其中,蛇身的位置我们以列表来表示,具体过程如下。

  1. # 定义蛇头、蛇身、食物的位置和颜色
  2. head = Point(row=int(ROW/2),col=int(COL/2)) # 定义蛇头的小方格位置在第12行,第9列
  3. snakes=[
  4.     Point(row=head.row,col=head.col+1), # 定义蛇身1的小方格位置在第12行,第10列
  5.     Point(row=head.row,col=head.col+2), # 定义蛇身2的小方格位置在第12行,第11列
  6.     Point(row=head.row,col=head.col+3)  # 定义蛇身3的小方格位置在第12行,第12列
  7. ]
  8. food = Point(row=2,col=3) # 定义食物的小方格位置在第2行,第3列
  9. head_color=(65,105,225) # 定义蛇头颜色
  10. snake_color=(204,204,204) # 定义蛇身颜色
  11. food_color=(255,10,10) # 定义食物颜色
复制代码


(6)定义每个小方格的绘制方法

随后,我们通过pygame库绘制矩形的方法来绘制小方格,由于每个小方格的尺寸大小一致,仅位置和颜色不同,因此,我们可定义一个绘制方格的通用函数,将位置和颜色作为两个参数传入,其中,各个方格的位置,我们可以通过其所在的行和列来确定。

  1. # 定义每个小方格的绘制(包含两个参数:位置和颜色)
  2. def rect(point,color):
  3.     left=point.col*cell_width # 定义小方格距离左边缘的距离
  4.     top=point.row*cell_height # 定义小方格距离上边缘的距离
  5.     pygame.draw.rect(window,color,(left,top,cell_width,cell_height)) # 在窗口上绘制矩形
复制代码


(6)实例化Star类,并结束绘图

最后,我们在指定的位置上绘制指定颜色的方格,分别代表蛇头、蛇身和食物,而为了使其始终出现,编程时我们将其放在循环中。

  1. # 定义每个小方格的绘制(包含两个参数:位置和颜色)
  2. def rect(point,color):
  3.     left=point.col*cell_width # 定义小方格距离左边缘的距离
  4.     top=point.row*cell_height # 定义小方格距离上边缘的距离
  5.     pygame.draw.rect(window,color,(left,top,cell_width,cell_height)) # 在窗口上绘制矩形
复制代码

Tips:完整示例程序如下:

  1. '''在游戏窗口上添加蛇和食物'''
  2. import pygame # 导入pygame库
  3. import time   # 导入time库
  4. pygame.init() # 游戏初始化
  5. W=240 # 定义宽
  6. H=320 # 定义高
  7. size=(240,320) # 定义尺寸
  8. window = pygame.display.set_mode(size) # 创建游戏窗口,尺寸为(240,320)
  9. bg_color=(255,255,255) # 定义背景色为白
  10. # 将游戏窗口划分为一个个小方格,每个方格的宽和高皆为15,共计24行,18列
  11. ROW=24 # 定义行数,每格15*15,24行18列
  12. COL=18 # 定义列数
  13. cell_width=W/COL # 定义格子的宽
  14. cell_height=H/ROW # 定义格子的高
  15. # 定义Point类以表示方格的位置
  16. class Point:
  17.     row=0 # 行
  18.     col=0 # 列
  19.     def __init__(self,row,col): # 行 列
  20.         self.row=row
  21.         self.col=col
  22. # 定义蛇头、蛇身、食物的位置和颜色
  23. head = Point(row=int(ROW/2),col=int(COL/2)) # 定义蛇头的小方格位置在第12行,第9列
  24. snakes=[
  25.     Point(row=head.row,col=head.col+1), # 定义蛇身1的小方格位置在第12行,第10列
  26.     Point(row=head.row,col=head.col+2), # 定义蛇身2的小方格位置在第12行,第11列
  27.     Point(row=head.row,col=head.col+3)  # 定义蛇身3的小方格位置在第12行,第12列
  28. ]
  29. food = Point(row=2,col=3) # 定义食物的小方格位置在第2行,第3列
  30. head_color=(65,105,225) # 定义蛇头颜色
  31. snake_color=(204,204,204) # 定义蛇身颜色
  32. food_color=(255,10,10) # 定义食物颜色
  33. # 定义每个小方格的绘制(包含两个参数:位置和颜色)
  34. def rect(point,color):
  35.     left=point.col*cell_width # 定义小方格距离左边缘的距离
  36.     top=point.row*cell_height # 定义小方格距离上边缘的距离
  37.     pygame.draw.rect(window,color,(left,top,cell_width,cell_height)) # 在窗口上绘制矩形,颜色为color
  38.    
  39. run=True # 定义初始运行状态为True,表示运行
  40. while run: # 游戏循环
  41.     window.fill(bg_color) # fillcolor # 填充窗口的背景颜色
  42.     # 以小方格来定义蛇身、蛇头和食物
  43.     for snake in snakes:
  44.         rect(snake,snake_color) # 创建蛇身,颜色为snake_color
  45.     rect(head,head_color) # 创建蛇头,颜色为head_color
  46.     rect(food,food_color) # 创建食物,颜色为food_color
  47.     pygame.display.flip() # Refresh all displays to the window # 更新所有待显示的内容到屏幕
  48.     time.sleep(0.2) # delay 0.2 seconds
复制代码

2、程序运行

STEP1:远程连接行空板

STEP2:运行程序并观察效果

点击运行后,观察行空板,可以看到在游戏窗口内显示出了一条红头蓝身的蛇,以及一颗黄色的食物。



任务描述3:设定游戏机制

在上个任务中,我们在游戏界面内添加了蛇和食物,但这还不够,接下来,我们将设定游戏机制,使得能通过行空板的板载按键a和b控制蛇左右移动来吃食物,并且,食物由原来在固定位置生成改为随机生成。

1、程序编写

STEP1:创建与保存项目文件

新建一个Python程序文件“main3.py”,双击打开。

STEP2:程序编写

这个程序中,我们承任务2继续编写。

(1)设定食物的随机生成

这里,我们修改原来固定位置的食物,使其在屏幕窗口内随机位置生成。
  1. # 定义食物的生成位置
  2. def gen_food():
  3.     pos = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) # 定义食物的小方格位置在窗口内随机的地方
  4.     return pos
  5. food = gen_food() # 生成食物的位置   
复制代码


(2)定义事件监测

为了能通过行空板上的按键来控制蛇的移动,我们首先需要定义一个事件监测,具体过程如下。

  1. # 定义事件监测
  2. def detect():
  3.     global direction
  4.     global run
  5.     events = pygame.event.get() # 获取事件
  6.     for event in events: # 遍历所有事件
  7.         if (event.type == pygame.QUIT):    # 如果事件类型为退出(关闭窗口)
  8.             pygame.quit() # 退出游戏
  9.             run = 0
  10.         if (event.type == pygame.KEYDOWN): # 如果事件类型为键盘按下
  11.             if (event.key == pygame.K_a):  # 如果是按键a被按下
  12.                 if (direction == 'up'):    # 如果原来方向为up(向上)
  13.                     direction = 'left'     # 将方向设为left(向左)
  14.                 elif (direction == 'left'):
  15.                     direction = 'down'
  16.                 elif (direction == 'down'):
  17.                     direction = 'right'
  18.                 elif (direction == 'right'):
  19.                     direction = 'up'
  20.                 print(direction)
  21.             elif (event.key == pygame.K_b): # 如果是按键b被按下
  22.                 if (direction == 'up'):     # 如果原来方向为up(向上)
  23.                     direction = 'right'     # 将方向设为right(向右)
  24.                 elif (direction == 'right'):
  25.                     direction = 'down'
  26.                 elif (direction == 'down'):
  27.                     direction = 'left'
  28.                 elif (direction == 'left'):
  29.                     direction = 'up'
  30.                 print(direction)
复制代码

(3)定义移动方式并设定初始方向

之后,我们设定蛇的移动方式,并定义初始方向为left,具体过程如下。

  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义移动方式</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">def move():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global direction</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  7. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  8. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if direction == 'left': </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果方向为left</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  10. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col-=1         </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  12. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 设置蛇头向左移动一格(蛇头所在的列数-1)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  13. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  14. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'right':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  15. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'up':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  20. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row-=1        </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'down':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  23. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  24. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  26. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  27. mso-font-kerning:1.0000pt;">direction = 'left' </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  28. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义初始方向为left</span></p>
复制代码

(4)复制方格位置

  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义Point类以表示方格的位置</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">class Point:</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">row=0 </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  7. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 行</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  8. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  9. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">col=0</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  10. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  12. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def __init__(self,row,col): </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  13. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 行 列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  14. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  15. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.row=row </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.col=col</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def copy(self): </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  20. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 复制</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">return Point(row=self.row,col=self.col)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  23. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  24. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p>
复制代码

(5)定义吃食物

接下来,我们定义蛇吃食物的方法,具体过程如下。
  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义吃食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">def eat():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global food</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  7. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  8. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eating = (head.row == food.row and head.col == food.col) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  10. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  11. font-size:9.0000pt;mso-font-kerning:1.0000pt;">定义正在吃的形式:蛇头的行列位置与食物相同</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  12. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  13. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if eating : </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  14. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果正在吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  15. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">food = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  17. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在随机处再生成一颗食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">snakes.insert(0,head.copy()) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  20. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 处理蛇身:1、把原来的头,插入到蛇身的最初位置(即在snakes蛇身列表的第0个位置增加一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if not eating:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  23. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果不在吃了,吃完后</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  24. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">snakes.pop() </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  26. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#处理蛇身:2、把蛇身的最后一格移除(即移除snakes蛇身列表的最后一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  27. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p>
复制代码

(6)循环调用

最后,我们将上述定义好的事件监测、移动、吃食物三个功能函数放入循环中,使其永久执行。
  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  2. mso-font-kerning:1.0000pt;">while run: </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 游戏循环</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">window.fill(bg_color) # fillcolor </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  6. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 填充窗口的背景颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  7. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  8. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  9. mso-font-kerning:1.0000pt;">   </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  10. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 以小方格来定义蛇身、蛇头和食物</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  12. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  13. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  14. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">rect(snake,snake_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  15. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇身,颜色为snake_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(head,head_color)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  18. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 创建蛇头,颜色为head_color</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  20. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(food,food_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  21. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建食物,颜色为food_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  23. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  24. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eat()    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  26. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  27. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  28. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">detect() </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  29. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 事件监测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  30. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  31. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">move()  </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  32. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 移动</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  33. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  34. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  35. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  36. mso-font-kerning:1.0000pt;">.display.flip() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  37. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># Refresh all displays to the window # 更新所有待显示的内容到屏幕</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  38. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  39. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">time.sleep(0.2)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  40. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  41. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 可修改延时的时间改变蛇的移动速度,调整游戏难易度</span></p>
复制代码

Tips:完整示例程序如下:
  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;">'''控制蛇的移动、生成随机的食物、蛇吃食物'''</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">import </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  7. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 导入</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  8. font-size:9.0000pt;mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;">库</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  10. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;">import random </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  12. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 导入随机数库</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  13. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  14. mso-font-kerning:1.0000pt;">import time   </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  15. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 导入time库</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;">.init() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  20. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 游戏初始化</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;">W=240 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  23. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义宽</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  24. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;">H=320 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  26. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义高</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  27. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  28. mso-font-kerning:1.0000pt;">size=(240,320)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  29. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义尺寸</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  30. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  31. mso-font-kerning:1.0000pt;">window = </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  32. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  33. mso-font-kerning:1.0000pt;">.display.set_mode(size)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  34. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 创建游戏窗口,尺寸为(240,320)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  35. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  36. mso-font-kerning:1.0000pt;">bg_color=(255,255,255) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  37. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义背景色为</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  38. font-size:9.0000pt;mso-font-kerning:1.0000pt;">白</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  39. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  40. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  41. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 将游戏窗口划分为一个个小方格,每个方格的宽和高皆为15,共计24行,18列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  42. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  43. mso-font-kerning:1.0000pt;">ROW=24 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  44. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义行数,每格15*15,24行18列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  45. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  46. mso-font-kerning:1.0000pt;">COL=18 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  47. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义列数</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  48. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  49. mso-font-kerning:1.0000pt;">cell_width=W/COL</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  50. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义格子的宽</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  51. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  52. mso-font-kerning:1.0000pt;">cell_height=H/ROW </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  53. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义格子的高</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  54. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  55. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  56. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  57. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义Point类以表示方格的位置</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  58. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  59. mso-font-kerning:1.0000pt;">class Point:</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  60. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  61. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">row=0 </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  62. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 行</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  63. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  64. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">col=0</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  65. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  66. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  67. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def __init__(self,row,col): </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  68. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 行 列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  69. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  70. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.row=row </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  71. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  72. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.col=col</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  73. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  74. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def copy(self): </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  75. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 复制</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  76. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  77. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">return Point(row=self.row,col=self.col)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  78. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  79. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  80. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  81. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇头、蛇身的位置和颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  82. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  83. mso-font-kerning:1.0000pt;">head = Point(row=int(ROW/2),col=int(COL/2))</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  84. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义蛇头的小方格位置在第12行,第9列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  85. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  86. mso-font-kerning:1.0000pt;">snakes=[                                </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  87. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身列表</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  88. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  89. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+1),</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  90. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义蛇身1的小方格位置在第12行,第10列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  91. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  92. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+2), </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  93. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身2的小方格位置在第12行,第11列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  94. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  95. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+3) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  96. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义蛇身3的小方格位置在第12行,第12列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  97. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  98. mso-font-kerning:1.0000pt;">]</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  99. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  100. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物的生成位置</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  101. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  102. mso-font-kerning:1.0000pt;">def gen_food():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  103. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  104. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">pos = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  105. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物的小方格位置在窗口内随机的地方</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  106. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  107. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">return pos</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  108. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  109. mso-font-kerning:1.0000pt;">food = gen_food() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  110. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 生成食物的位置   </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  111. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  112. mso-font-kerning:1.0000pt;">head_color=(65,105,225) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  113. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇头颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  114. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  115. mso-font-kerning:1.0000pt;">snake_color=(204,204,204) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  116. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  117. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  118. mso-font-kerning:1.0000pt;">food_color=(255,10,10) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  119. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  120. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  121. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  122. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义每个小方格的绘制(包含两个参数:位置和颜色)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  123. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  124. mso-font-kerning:1.0000pt;">def rect(point,color):</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  125. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  126. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">left=point.col*cell_width </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  127. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义小方格距离左边缘的距离</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  128. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  129. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">top=point.row*cell_height </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  130. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义小方格距离上边缘的距离</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  131. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  132. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  133. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  134. mso-font-kerning:1.0000pt;">.draw.rect(window,color,(left,top,cell_width,cell_height)) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  135. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在窗口上绘制矩形,颜色为color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  136. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  137. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  138. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  139. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义事件检测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  140. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  141. mso-font-kerning:1.0000pt;">def detect():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  142. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  143. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global direction</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  144. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  145. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global run</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  146. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  147. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">events = </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  148. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  149. mso-font-kerning:1.0000pt;">.event.get() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  150. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  151. font-size:9.0000pt;mso-font-kerning:1.0000pt;">获取</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  152. font-size:9.0000pt;mso-font-kerning:1.0000pt;">事件</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  153. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  154. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for event in events:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  155. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  156. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 遍历所有事件</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  157. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  158. font-size:9.0000pt;mso-font-kerning:1.0000pt;">    <font face="微软雅黑">#for event in </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  159. font-size:9.0000pt;mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  160. font-size:9.0000pt;mso-font-kerning:1.0000pt;">.event.get():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  161. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  162. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if (event.type == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  163. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  164. mso-font-kerning:1.0000pt;">.QUIT):    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  165. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果事件类型为退出</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  166. font-size:9.0000pt;mso-font-kerning:1.0000pt;">(关闭窗口)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  167. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  168. mso-font-kerning:1.0000pt;">            </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  169. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  170. mso-font-kerning:1.0000pt;">.quit() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  171. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 退出游戏</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  172. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  173. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">run = 0</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  174. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  175. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if (event.type == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  176. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  177. mso-font-kerning:1.0000pt;">.KEYDOWN): </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  178. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果事件类型为键盘按下</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  179. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  180. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">if (event.key == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  181. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  182. mso-font-kerning:1.0000pt;">.K_a):  </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  183. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果是</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  184. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><font face="微软雅黑">按键</font><font face="微软雅黑">a</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  185. font-size:9.0000pt;mso-font-kerning:1.0000pt;">被按下</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  186. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  187. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">if (direction == 'up'):    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  188. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果原来方向为up(向上)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  189. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  190. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'left'     </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  191. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 将方向设为left(向左)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  192. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  193. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'left'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  194. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  195. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'down'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  196. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  197. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'down'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  198. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  199. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'right'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  200. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  201. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'right'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  202. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  203. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'up'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  204. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  205. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">print(direction)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  206. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  207. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  208. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">elif (event.key == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  209. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  210. mso-font-kerning:1.0000pt;">.K_b): </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  211. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果是</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  212. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><font face="微软雅黑">按键</font><font face="微软雅黑">b</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  213. font-size:9.0000pt;mso-font-kerning:1.0000pt;">被按下</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  214. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  215. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">if (direction == 'up'):     </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  216. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果原来方向为up(向上)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  217. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  218. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'right'     </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  219. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 将方向设为right(向右)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  220. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  221. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'right'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  222. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  223. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'down'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  224. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  225. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'down'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  226. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  227. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'left'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  228. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  229. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'left'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  230. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  231. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'up'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  232. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  233. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">print(direction)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  234. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  235. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  236. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义移动方式</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  237. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  238. mso-font-kerning:1.0000pt;">def move():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  239. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  240. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global direction</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  241. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  242. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if direction == 'left': </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  243. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果方向为left</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  244. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  245. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col-=1         </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  246. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 设置蛇头向左移动一格(蛇头所在的列数-1)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  247. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  248. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'right':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  249. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  250. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  251. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  252. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'up':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  253. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  254. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row-=1        </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  255. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  256. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'down':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  257. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  258. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  259. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  260. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  261. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  262. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义吃食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  263. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  264. mso-font-kerning:1.0000pt;">def eat():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  265. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  266. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global food</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  267. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  268. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eating = (head.row == food.row and head.col == food.col) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  269. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  270. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  271. font-size:9.0000pt;mso-font-kerning:1.0000pt;">定义正在吃的形式:蛇头的行列位置与食物相同</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  272. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  273. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if eating :</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  274. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果正在吃</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  275. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  276. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">food = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  277. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在随机处再生成一颗食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  278. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  279. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">snakes.insert(0,head.copy()) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  280. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 处理蛇身:1、把原来的头,插入到蛇身的最初位置(即在snakes蛇身列表的第0个位置增加一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  281. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  282. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if not eating:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  283. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果不在吃了,吃完后</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  284. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  285. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">snakes.pop() </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  286. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#处理蛇身:2、把蛇身的最后一格移除(即移除snakes蛇身列表的最后一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  287. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  288. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  289. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  290. mso-font-kerning:1.0000pt;">direction = 'left' </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  291. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义初始方向为left</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  292. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  293. mso-font-kerning:1.0000pt;">run = True </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  294. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义初始运行状态为True,表示运行</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  295. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  296. mso-font-kerning:1.0000pt;">while run: </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  297. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 游戏循环</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  298. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  299. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">window.fill(bg_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  300. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># fillcolor # 填充窗口的背景颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  301. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  302. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  303. mso-font-kerning:1.0000pt;">   </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  304. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 以小方格来定义蛇身、蛇头和食物</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  305. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  306. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  307. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  308. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">rect(snake,snake_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  309. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇身,颜色为snake_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  310. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  311. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(head,head_color)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  312. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 创建蛇头,颜色为head_color</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  313. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  314. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(food,food_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  315. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建食物,颜色为food_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  316. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  317. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  318. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  319. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eat()    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  320. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  321. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  322. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">detect() </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  323. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 事件监测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  324. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  325. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">move()  </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  326. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 移动</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  327. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  328. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  329. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  330. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  331. mso-font-kerning:1.0000pt;">.display.flip() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  332. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># Refresh all displays to the window # 更新所有待显示的内容到屏幕</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  333. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  334. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">time.sleep(0.2)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  335. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  336. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 可修改延时改变蛇的移动速度,调整游戏难易度</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  337. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p>
复制代码

2、程序运行

STEP1:远程连接行空板

STEP2:运行程序并观察效果

点击运行后,观察行空板,可以看到在游戏窗口内显示出了一条红头蓝身的蛇,以及一颗黄色的食物。随后蛇向左移动,此时,我们可通过按下板载按键a和b来分别控制蛇左转和右转。



任务描述4:结束游戏并计分

最后,我们在上述功能的基础上添加结束游戏和计分机制。

1、程序编写

STEP1:创建与保存项目文件

新建一个Python程序文件“main4.py”,双击打开。

STEP2:程序编写

(1)导入所需功能库创建字体对象

由于需要显示得分,因此,我们需要提前在定义背景颜色后创建一个字体对象。

  1. font = pygame.font.SysFont('Arial', 20) # 设置字体
复制代码

(2)结束游戏机制

之后,我们在吃食物的功能后再定义结束游戏的方式:要么蛇撞上窗口四周,要么撞上自身。同时,我们设定在结束前显示最终的游戏得分。

  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义游戏结束</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">def game_over():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global run</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  7. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  8. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">dead=False </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义一个状态dead</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  10. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  11. font-size:9.0000pt;mso-font-kerning:1.0000pt;">    <font face="微软雅黑"># 游戏结束方式1、撞墙</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  12. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  13. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if head.col<0 or head.row<0 or head.col>=COL or head.row>=ROW: </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  14. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果蛇头的行和列在屏幕外</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  15. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">dead = True </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  19. font-size:9.0000pt;mso-font-kerning:1.0000pt;">   <font face="微软雅黑"># 游戏结束方式2、撞自己</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  20. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  23. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if head.col==snake.col and head.row==snake.row:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  24. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果蛇头和蛇身位置相同</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  25. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  26. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">dead = True</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  27. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  28. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">break </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  29. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  30. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if dead: </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  31. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果状态为dead</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  32. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  33. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">score = font.render('Your Score is ' + str(10*len(snakes)-30), False, 'pink') </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  34. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 计算得分</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  35. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  36. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">window.blit(score, (40,250)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  37. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在窗口上显示得分</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  38. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  39. mso-font-kerning:1.0000pt;">        </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  40. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  41. mso-font-kerning:1.0000pt;">.display.flip()</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  42. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># Refresh all displays to the screen # 更新所有显示的内容到屏幕</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  43. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  44. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">print("GG") </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  45. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># goodgame! =-=</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  46. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  47. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">time.sleep(5)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  48. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># delay 5 seconds</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  49. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  50. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">run=False </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  51. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># set state False</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  52. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p>
复制代码

(3)循环执行

最后,我们将上述定义好的结束游戏功能函数放入循环中,使其永久执行。

  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  2. mso-font-kerning:1.0000pt;">while run:</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 游戏循环</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">window.fill(bg_color)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  6. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># fillcolor # 填充窗口的背景颜色</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  7. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  8. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;">    <font face="微软雅黑"># 以小方格来定义蛇身、蛇头和食物</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  10. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  12. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  13. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">rect(snake,snake_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  14. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇身,颜色为snake_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  15. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  16. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(head,head_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  17. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇头,颜色为head_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(food,food_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  20. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建食物,颜色为food_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  23. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eat()         </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  24. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  26. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">detect()      </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  27. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 事件监测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  28. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  29. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">move()       </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  30. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 移动</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  31. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  32. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">game_over()  </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  33. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 结束游戏</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  34. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  35. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  36. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  37. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  38. mso-font-kerning:1.0000pt;">.display.flip() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  39. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># Refresh all displays to the window # 更新所有待显示的内容到屏幕</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  40. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  41. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">time.sleep(0.2) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  42. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># delay 0.2 seconds</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  43. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 可修改延时的时间改变蛇的移动速度,调整游戏难易度</font></span></p>
复制代码

Tips:完整示例程序如下:
  1. <p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  2. font-size:9.0000pt;mso-font-kerning:1.0000pt;">'''计分和结束游戏'''</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  3. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  4. mso-font-kerning:1.0000pt;">import </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  5. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  6. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  7. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 导入</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  8. font-size:9.0000pt;mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  9. font-size:9.0000pt;mso-font-kerning:1.0000pt;">库</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  10. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  11. mso-font-kerning:1.0000pt;">import random </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  12. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 导入随机数库</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  13. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  14. mso-font-kerning:1.0000pt;">import time </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  15. font-size:9.0000pt;mso-font-kerning:1.0000pt;">  <font face="微软雅黑"># 导入 time库</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  16. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  17. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  18. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  19. mso-font-kerning:1.0000pt;">.init()</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  20. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 游戏初始化</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  21. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  22. mso-font-kerning:1.0000pt;">W=240 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  23. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义宽</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  24. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  25. mso-font-kerning:1.0000pt;">H=320 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  26. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义高</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  27. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  28. mso-font-kerning:1.0000pt;">size=(240,320)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  29. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义尺寸</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  30. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  31. mso-font-kerning:1.0000pt;">window = </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  32. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  33. mso-font-kerning:1.0000pt;">.display.set_mode(size) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  34. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建游戏窗口,尺寸为(240,320)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  35. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  36. mso-font-kerning:1.0000pt;">bg_color=(255,255,255) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  37. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义背景色为</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  38. font-size:9.0000pt;mso-font-kerning:1.0000pt;">白</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  39. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  40. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  41. mso-font-kerning:1.0000pt;">font = </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  42. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  43. mso-font-kerning:1.0000pt;">.font.SysFont('Arial', 20)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  44. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  45. font-size:9.0000pt;mso-font-kerning:1.0000pt;">创建</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  46. font-size:9.0000pt;mso-font-kerning:1.0000pt;">字体</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  47. font-size:9.0000pt;mso-font-kerning:1.0000pt;">对象</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  48. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  49. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  50. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 将游戏窗口划分为一个个小方格,每个方格的宽和高皆为15,共计24行,18列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  51. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  52. mso-font-kerning:1.0000pt;">ROW=24</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  53. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义行数,每格15*15,24行18列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  54. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  55. mso-font-kerning:1.0000pt;">COL=18 </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  56. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义列数</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  57. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  58. mso-font-kerning:1.0000pt;">cell_width=W/COL </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  59. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义格子的宽</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  60. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  61. mso-font-kerning:1.0000pt;">cell_height=H/ROW </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  62. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义格子的高</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  63. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  64. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  65. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  66. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义Point类以表示方格的位置</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  67. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  68. mso-font-kerning:1.0000pt;">class Point:</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  69. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  70. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">row=0 </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  71. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 行</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  72. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  73. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">col=0 </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  74. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  75. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  76. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def __init__(self,row,col):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  77. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 行 列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  78. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  79. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.row=row </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  80. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  81. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">self.col=col</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  82. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  83. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">def copy(self): </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  84. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 复制</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  85. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  86. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">return Point(row=self.row,col=self.col)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  87. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  88. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  89. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇头、蛇身的位置和颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  90. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  91. mso-font-kerning:1.0000pt;">head = Point(row=int(ROW/2),col=int(COL/2)) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  92. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇头的小方格位置在第12行,第9列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  93. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  94. mso-font-kerning:1.0000pt;">snakes=[                                </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  95. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身列表</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  96. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  97. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+1), </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  98. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身1的小方格位置在第12行,第10列</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  99. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  100. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+2),</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  101. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义蛇身2的小方格位置在第12行,第11列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  102. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  103. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">Point(row=head.row,col=head.col+3) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  104. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义蛇身3的小方格位置在第12行,第12列</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  105. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  106. mso-font-kerning:1.0000pt;">]</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  107. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  108. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物的生成位置</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  109. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  110. mso-font-kerning:1.0000pt;">def gen_food():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  111. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  112. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">pos = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  113. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物的小方格位置在窗口内随机的地方</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  114. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  115. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">return pos</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  116. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  117. mso-font-kerning:1.0000pt;">food = gen_food()</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  118. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 生成食物的位置  </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  119. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  120. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  121. mso-font-kerning:1.0000pt;">head_color=(65,105,225) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  122. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇头颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  123. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  124. mso-font-kerning:1.0000pt;">snake_color=(204,204,204) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  125. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义蛇身颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  126. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  127. mso-font-kerning:1.0000pt;">food_color=(255,10,10) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  128. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义食物颜色</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  129. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  130. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  131. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义每个小方格的绘制(包含两个参数:位置和颜色)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  132. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  133. mso-font-kerning:1.0000pt;">def rect(point,color):</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  134. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  135. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">left=point.col*cell_width</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  136. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义小方格距离左边缘的距离</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  137. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  138. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">top=point.row*cell_height </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  139. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义小方格距离上边缘的距离</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  140. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  141. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  142. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  143. mso-font-kerning:1.0000pt;">.draw.rect(window,color,(left,top,cell_width,cell_height)) </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  144. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在窗口上绘制矩形,颜色为color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  145. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  146. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  147. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  148. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义事件检测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  149. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  150. mso-font-kerning:1.0000pt;">def detect():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  151. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  152. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global direction</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  153. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  154. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global run</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  155. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  156. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">events = </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  157. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  158. mso-font-kerning:1.0000pt;">.event.get() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  159. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  160. font-size:9.0000pt;mso-font-kerning:1.0000pt;">获取</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  161. font-size:9.0000pt;mso-font-kerning:1.0000pt;">事件</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  162. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  163. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for event in events:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  164. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  165. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 遍历所有事件</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  166. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  167. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">#for event in </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  168. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  169. mso-font-kerning:1.0000pt;">.event.get():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  170. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  171. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if (event.type == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  172. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  173. mso-font-kerning:1.0000pt;">.QUIT):    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  174. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果事件类型为退出</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  175. font-size:9.0000pt;mso-font-kerning:1.0000pt;">(关闭窗口)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  176. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  177. mso-font-kerning:1.0000pt;">            </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  178. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  179. mso-font-kerning:1.0000pt;">.quit() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  180. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 退出游戏</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  181. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  182. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">run = 0</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  183. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  184. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if (event.type == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  185. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  186. mso-font-kerning:1.0000pt;">.KEYDOWN):</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  187. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果事件类型为键盘按下</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  188. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  189. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">if (event.key == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  190. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  191. mso-font-kerning:1.0000pt;">.K_a):  </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  192. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果是</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  193. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><font face="微软雅黑">按键</font><font face="微软雅黑">a</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  194. font-size:9.0000pt;mso-font-kerning:1.0000pt;">被按下</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  195. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  196. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">if (direction == 'up'):    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  197. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果原来方向为up(向上)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  198. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  199. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'left'    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  200. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 将方向设为left(向左)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  201. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  202. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'left'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  203. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  204. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'down'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  205. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  206. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'down'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  207. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  208. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'right'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  209. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  210. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'right'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  211. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  212. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'up'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  213. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  214. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">print(direction)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  215. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  216. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  217. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">elif (event.key == </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  218. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  219. mso-font-kerning:1.0000pt;">.K_b):</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  220. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果是</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  221. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><font face="微软雅黑">按键</font><font face="微软雅黑">b</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  222. font-size:9.0000pt;mso-font-kerning:1.0000pt;">被按下</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  223. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  224. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">if (direction == 'up'):    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  225. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果原来方向为up(向上)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  226. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  227. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'right'    </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  228. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 将方向设为right(向右)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  229. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  230. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'right'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  231. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  232. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'down'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  233. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  234. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'down'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  235. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  236. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'left'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  237. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  238. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">elif (direction == 'left'):</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  239. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  240. mso-font-kerning:1.0000pt;">                    <font face="微软雅黑">direction = 'up'</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  241. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  242. mso-font-kerning:1.0000pt;">                <font face="微软雅黑">print(direction)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  243. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  244. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  245. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义移动方式</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  246. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  247. mso-font-kerning:1.0000pt;">def move():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  248. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  249. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global direction</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  250. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  251. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if direction == 'left': </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  252. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果方向为left</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  253. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  254. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col-=1       </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  255. font-size:9.0000pt;mso-font-kerning:1.0000pt;">  <font face="微软雅黑"># 设置蛇头向左移动一格(蛇头所在的列数-1)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  256. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  257. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'right':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  258. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  259. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.col+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  260. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  261. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'up':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  262. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  263. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row-=1        </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  264. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  265. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">elif direction == 'down':</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  266. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  267. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">head.row+=1</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  268. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  269. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  270. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  271. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义吃食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  272. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  273. mso-font-kerning:1.0000pt;">def eat():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  274. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  275. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global food</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  276. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  277. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eating = (head.row == food.row and head.col == food.col) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  278. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  279. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  280. font-size:9.0000pt;mso-font-kerning:1.0000pt;">定义正在吃的形式:蛇头的行列位置与食物相同</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  281. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  282. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if eating : </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  283. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果正在吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  284. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  285. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">food = Point(row=random.randint(0,ROW-1),col=random.randint(0,COL-1)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  286. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在随机处再生成一颗食物</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  287. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  288. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">snakes.insert(0,head.copy()) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  289. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 处理蛇身:1、把原来的头,插入到蛇身的最初位置(即在snakes蛇身列表的第0个位置增加一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  290. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  291. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if not eating: </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  292. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果不在吃了,吃完后</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  293. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  294. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">snakes.pop() </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  295. font-size:9.0000pt;mso-font-kerning:1.0000pt;">#处理蛇身:2、把蛇身的最后一格移除(即移除snakes蛇身列表的最后一个元素)</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  296. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  297. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  298. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  299. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义游戏结束</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  300. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  301. mso-font-kerning:1.0000pt;">def game_over():</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  302. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  303. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">global run</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  304. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  305. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">dead=False </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  306. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义一个状态dead</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  307. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  308. font-size:9.0000pt;mso-font-kerning:1.0000pt;">    <font face="微软雅黑"># 游戏结束方式1、撞墙</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  309. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  310. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if head.col<0 or head.row<0 or head.col>=COL or head.row>=ROW: </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  311. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果蛇头的行和列在屏幕外</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  312. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  313. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">dead = True </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  314. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  315. mso-font-kerning:1.0000pt;"> </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  316. font-size:9.0000pt;mso-font-kerning:1.0000pt;">   <font face="微软雅黑"># 游戏结束方式2、撞自己</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  317. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  318. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  319. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  320. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">if head.col==snake.col and head.row==snake.row:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  321. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 如果蛇头和蛇身位置相同</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  322. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  323. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">dead = True</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  324. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  325. mso-font-kerning:1.0000pt;">            <font face="微软雅黑">break </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  326. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  327. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">if dead: </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  328. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 如果状态为dead</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  329. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  330. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">score = font.render('Your Score is ' + str(10*len(snakes)-30), False, 'pink') </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  331. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 计算得分</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  332. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  333. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">window.blit(score, (40,250)) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  334. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 在窗口上显示得分</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  335. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  336. mso-font-kerning:1.0000pt;">        </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  337. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  338. mso-font-kerning:1.0000pt;">.display.flip() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  339. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># Refresh all displays to the screen # 更新所有显示的内容到屏幕</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  340. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  341. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">print("GG") </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  342. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># goodgame! =-=</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  343. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  344. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">time.sleep(5)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  345. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># delay 5 seconds</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  346. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  347. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">run=False </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  348. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># set state False</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  349. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  350. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  351. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  352. mso-font-kerning:1.0000pt;">direction = 'left' </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  353. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 定义初始方向为left</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  354. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  355. mso-font-kerning:1.0000pt;">run = True</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  356. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 定义初始运行状态为True,表示运行</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  357. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  358. mso-font-kerning:1.0000pt;">while run:</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  359. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 游戏循环</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  360. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  361. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">window.fill(bg_color)</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  362. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># fillcolor # 填充窗口的背景颜色</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  363. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  364. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  365. font-size:9.0000pt;mso-font-kerning:1.0000pt;">    <font face="微软雅黑"># 以小方格来定义蛇身、蛇头和食物</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  366. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  367. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">for snake in snakes:</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  368. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  369. mso-font-kerning:1.0000pt;">        <font face="微软雅黑">rect(snake,snake_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  370. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇身,颜色为snake_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  371. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  372. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(head,head_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  373. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建蛇头,颜色为head_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  374. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  375. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">rect(food,food_color) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  376. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 创建食物,颜色为food_color</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  377. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  378. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  379. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">eat()         </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  380. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 吃</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  381. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  382. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">detect()      </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  383. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># 事件监测</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  384. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  385. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">move()       </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  386. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 移动</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  387. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  388. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">game_over()  </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  389. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 结束游戏</font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  390. mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  391. mso-font-kerning:1.0000pt;"> </span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  392. mso-font-kerning:1.0000pt;">    </span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  393. mso-font-kerning:1.0000pt;">pygame</span><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  394. mso-font-kerning:1.0000pt;">.display.flip() </span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  395. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># Refresh all displays to the window # 更新所有待显示的内容到屏幕</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  396. font-size:9.0000pt;mso-font-kerning:1.0000pt;"><o:p></o:p></span></p><p class="MsoNormal"><span style="mso-spacerun:'yes';font-family:微软雅黑;font-size:9.0000pt;
  397. mso-font-kerning:1.0000pt;">    <font face="微软雅黑">time.sleep(0.2) </font></span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  398. font-size:9.0000pt;mso-font-kerning:1.0000pt;"># delay 0.2 seconds</span><span style="mso-spacerun:'yes';font-family:微软雅黑;color:rgb(0,176,80);
  399. font-size:9.0000pt;mso-font-kerning:1.0000pt;"> <font face="微软雅黑"># 可修改延时的时间改变蛇的移动速度,调整游戏难易度</font></span></p>
复制代码

2、程序运行

STEP1:远程连接行空板

STEP2:运行程序并观察效果

运行程序后,我们可通过板载按键a、b控制蛇的移动,当蛇撞上自身或撞上窗口四边时,游戏结束,此时可看到我们游戏的最终得分。

【行空板Python入门教程】第六课:贪吃蛇小游戏图1【行空板Python入门教程】第六课:贪吃蛇小游戏图2

挑战自我

1、和同学比一比,看谁的得分更高吧!

2、尝试减小屏幕刷新的时间间隔,使蛇移动得更快,加大难度试一试吧!

3、想一想,我们是否可以给不同难度的游戏设置关卡呢,自己动手修改程序,练习一下吧!







qw1.jpg
qw2.jpg
qw3.jpg
qw4.jpg
qw5.jpg
qw6.jpg
qw7.jpg
qw8.jpg
qw9.jpg
qw10.jpg
qw12.jpg
qw1.jpg
qw2.jpg
qw3.jpg
qw4.jpg
qw5.jpg
qw6.jpg
qw7.jpg
qw8.jpg
qw9.jpg
qw10.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail