Python高级第2课——飞机大战(只读课堂)

欢迎来到“只读课堂”!

In [1]:

#这节课我们来实战python:Python游戏开发

In [2]:

#飞机大战

In [3]:

#以下是我们今天的课件以及项目规划,如果想直接进入课堂,就往下拉。

飞机大战

创建游戏是趣学语言的理想方式。看别人玩你编写的游戏让你很有满足感,而编写简单的游戏有助于你明白专业级游戏是怎么编写出来的。在阅读本章的过程中,请动手输入并运行代码,以明白各个代码块对整个游戏所做的贡献,并尝试不同的值和设置,这样你将对如何改进游戏的交互性有更深入的认识。

> 游戏《飞机大战》将包含很多不同的文件,因此请在你的系统中新建一个文件夹,并将其命名为PlaneFight。请务必将这个项目的所有文件都存储到这个文件夹中,这样相关的import语句才能正确地工作。

规划项目

开发大型项目时,做好规划后再动手编写项目很重要。规划可确保你不偏离轨道,从而提高项目成功的可能性。

> 在游戏《飞机大战》中,你可以控制着一架最初出现在屏幕底部中央的飞机。玩家可以使用箭头键左右移动飞机,还可使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。只要有外星人撞到了玩家的飞机或到达了屏幕底部,游戏结束。

安装Pygame

1. 手动安装

- 先下载whl文件

> 下载地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame

- 手动安装

pip install pygame‑1.9.3‑cp36‑cp36m‑win_amd64.whl

2. pip安装

pip3 install pygame

> 以上可以使用Linux和Windows系统

Linux系统也可以使用sudo apt install python3-pygame 安装Python3的版本。

检测安装

进入Python环境,执行:

```python

>>> import pygame

>>>

```

如果没有任何输出,就说明Python导入了Pygame

开始游戏项目

首先创建一个空的Pygame窗口,供后面用来绘制游戏元素,如飞机和外星人。我们还将让这个游戏响应用户输入、设置背景色以及加载飞机图像。

创建Pygame窗口以及响应用户输入

首先,我们创建一个空的Pygame窗口。使用Pygame编写的游戏的基本结构如下:

```python

import sys

import pygame

def run_game():

初始化游戏并创建一个屏幕对象

pygame.init()

screen = pygame.display.set_mode((800, 600))

pygame.display.set_caption('PlaneFight')

开始游戏主循环

while True:

监控键盘和鼠标事件

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

让最近绘制的屏幕可见

pygame.display.flip()

run_game()

```

我们导入了模块syspygame。模块pygame包含开发游戏所需的功能。玩家退出时,我们将使用模块sys来退出游戏。

开头是函数run_game() ,代码行pygame.init()初始化背景设置,让Pygame能够正确地工作。

调用pygame.display.set_mode()来创建一个名为screen的显示窗口,这个游戏的所有图形元素都将在其中绘制。实参(800, 600)是一个元组,指定了游戏窗口的尺寸。通过将这些尺寸值传递给pygame.display.set_mode(),我们创建了一个宽800像素、高600像素的游戏窗口(你可以根据自己的显示器尺寸调整这些值)。

对象screen是一个surface。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中,每个元素(如外星人或飞机)都是一个surfacedisplay.set_mode()返回的surface表示整个游戏窗口。我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface

为访问Pygame检测到的事件,我们使用方法pygame.event.get()。所有键盘和鼠标事件都将促使for循环运行。在这个循环中,我们将编写一系列的if语句来检测并响应特定的事件。例如,玩家单击游戏窗口的关闭按钮时,将检测到pygame.QUIT事件,而我们调用sys.exit()来退出游戏。

调用了pygame.display.flip(),命令Pygame让最近绘制的屏幕可见。在这里,它在每次执行while循环时都绘制一个空屏幕,并擦去旧屏幕,使得只有新屏幕可见。在我们移动游戏元素时,pygame.display.flip()将不断更新屏幕,以显示元素的新位置,并在原来的位置隐藏元素,从而营造平滑移动的效果

设置背景色

Pygame默认创建一个黑色屏幕,太乏味了。下面来将背景设置为另一种颜色:

```python

import sys

impor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值