内容正文:
少儿编程课
1
飞机大战1
Pygame简介与下载安装
3
Pygame简介
Pygame是一套用来写游戏的Python模块
同时,pygame也是一个第三方库模块,所以如果我们想要使用它,首先需要下载安装
Pygame能够制作什么游戏?
现在,开始下载安装pygame
1
打开cmd,输入pip install pygame
2
按下回车,将会自动下载安装
安装完成之后,首先创建一个屏幕
1
导入与初始化
2
然后创建一个屏幕
import pygame
from pygame.locals import *
# 定义屏幕宽、高
WIDTH = 480
HEIGHT = 600
# 初始化
pygame.init()
# 创建屏幕
screen=pygame.display.set_mode((WIDTH, HEIGHT))
运行程序,可以看到窗口出现
可以看到,虽然屏幕出现了,但是很快又消失了,这是为什么呢?
1
程序的执行过程是从上往下顺序执行
当程序执行到末尾,进入死循环,程序一直不会结束,之前创建的屏幕就不会消失。
2
使用死循环来解决这个问题
屏幕闪退的原因和解决方法:
1+1
2+2
3+3
4+4
2
4
6
8
当程序执行到末尾,没有其他程序段可执行,程序退出,屏幕跟着消失。
3
添加死循环
while True:
pass
4
再次运行程序,屏幕不在闪退
但是此时又有其他的问题,退出十分的费劲
程序运行之后,点击好几次叉号退出都没有反应,而且程序很容易卡死。
如何更方便的退出?
实现这个功能,我们需要先了解一下“事件”
比如像很多程序的退出一样:
按下键盘上的ESC键
程序就退出
事件
11
事件是什么?
1
点击鼠标是事件
2
按下键盘是事件
3
点击叉号,关闭我们编写的这个程序也是事件
而对于这些事件,pygame都能够知道
点击鼠标
按下键盘
滑动鼠标
.
.
事件包含事件、事件源和事件监听。在pygame中,事件可以这样简单来总结:
在了解事件之后,开始编写退出游戏的功能
1
完善死循环代码,实现退出功能
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 结束游戏
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
# 结束游戏
running = False
2
然后让程序退出时,Pygame彻底退出
pygame.quit()
3
运行程序,尝试几次退出功能的效果
pygame.event.get能够监听并获得所有的事件,通过它可以知道是否按下了某个按键
接着绘制一个飞机出来,最开始可以使用一个绿色的小方块来表示
1
定义一个surface
2
将surface的颜色改为绿色
surf_plane = pygame.Surface((50, 50))
# 设置surf_plane的背景颜色
surf_plane.fill((0, 255, 0))
在pygame中,surface代表一块区域,例如整个屏幕。
上面的代码定义了一个长和宽都为50像素,颜色为黑色的正方形区域
这里指定颜色时,是使用rgb来表达颜色的
屏幕上的一个像素点由三种颜色构成:红、绿、蓝也就是RGB。
三种颜色可以混合出很多种颜色,取值范围是0到255。
比如(255, 0, 0)就表示红色全部,加0个绿色,加0个蓝色,最终还是红色。
练习
Exercises
密
封
线
内
不
准
答
题
将这个正方形颜色修改为蓝色
接着我们把表示飞机的方块画到屏幕中,先来了解下Pygame中的坐标系
(0,0)
600
480
(0,600)
(480,0)
(?,?)
X轴
Y轴
注意:在pygame中,使用的单位是像素
将飞机画到屏幕左上角
1
将正方形画到屏幕
3
运行程序,方块表示的飞机就显示在屏幕中了
# 将正方形绘制到屏幕上
screen.blit(surf_plane, (100, 100))
注意:这句话要写在循环中。
第一个参数表示这个正方形,第二对参数表示绘制出的正方形的左上角的坐标。
2
重绘画面,使绿色小块显示
# 重绘游戏界面,相当于刷新一次
pygame.display.flip()
总结
Summary
pygame简单使用
√
Pygame中事件的简单理解与使用
√
颜色