Python学习笔记(3)---B站黑马程序员

本文档详细介绍了使用Python和pygame库进行飞机大战项目实战,涉及pygame安装、图形窗口、精灵管理、背景滚动、敌机与英雄设计,以及碰撞检测的步骤和代码实例。

Python学习笔记(1)—B站黑马程序员

Python学习笔记(2)—B站黑马程序员

Python学习笔记(3)—B站黑马程序员

五、项目实战——飞机大战

001-Pycharm中安装pygame

(1)点击pycharm下方的Terminal:

在这里插入图片描述
(2)输入命令:pip install pygame
在这里插入图片描述
(3)输入命令验证pygame是否安装:python -m pygame.examples.aliens
在这里插入图片描述

002-快速入门

在这里插入图片描述

(1)项目准备

在这里插入图片描述

游戏素材评论区有,这里给出链接:

飞机大战游戏素材

移动静止的图像产生动画效果

(2)使用 pygame 创建图形窗口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

游戏中的所有元素(物体)都是以 矩形区域 来描述位置的
通过四个要素(x, y)物体在游戏窗口中的位置(物体所在矩形区域的左上角),
		  (width, height)物体所在矩形区域的宽度和高度,来描述这个矩形区域。

python提供pygame.Rect类来描述矩形区域,这个类中很多属性,如上图。
pygame.Rect(x, y, width, height) ---> 创建对象
size属性返回一个元组(width, height)

不执行 pygame.init()方法,同样可以使用 pygame.Rect

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)理解图像并实现图像绘制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

上面图像的小格子是透明区域

在这里插入图片描述

(4)理解游戏循环和游戏时钟

在这里插入图片描述

每次调用update方法会将之前所有绘制的结果,一次性更新到游戏屏幕上。
每次调用update方法得到的结果是帧,一般要达到每秒调用60次update方法。
游戏中的动画效果,大部分是通过静态图像移动显示的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

英雄(飞机)每移动一次,背景图片就要被重新绘制一次,否则英雄会有残影。
在这里插入图片描述

当飞机“完全”从上方飞出屏幕之后,再将飞机移动到屏幕底部:
	两种方法:
	if hero_rect.y + hero_rect.height <= 0:
		hero_rect.y = 700
	或者
	hero_rect.bottom = hero_rect.y + hero_rect.height
	if hero_rect.bottom <= 0:
		hero_rect.y = 700 

在这里插入图片描述
在这里插入图片描述

pygame.event.get()可以获得用户所有的操作:
	鼠标移动,按键盘,关闭窗口等等

上面的代码,点击叉号 是无法关闭游戏窗口的,下面演示如何关闭游戏窗口:

在这里插入图片描述
在这里插入图片描述

(5)理解精灵和精灵组

在这里插入图片描述

在这里插入图片描述

在一个游戏中,有很多游戏对象。
对于每一个游戏对象,都要设置它的图像image,位置rect等属性和更新位置update等方法,
	如果一个一个创建游戏对象很麻烦,所以pygame提供里两个类:sprite是精灵的意思。
	pygame.sprite.Sprite ---> 专门设置游戏对象的图像,位置等属性和更新位置等方法
	pygame.sprite.Group ---> 游戏对象组,放置多个游戏对象,可以同时设置多个游戏对象

注意:pygame.sprite.Sprite类中本身是没有image和rect两个属性的,要在它的派生子类中设置
	 并且默认的update方法中也没有写任何代码,要在子类中重写。

在这里插入图片描述
如果一个类的父类不是object,在重写初始化方法__init__时,要先super()调用一个父类的__init__方法,因为父类的__init__也写有代码,需要执行,而子类重写__init__方法会覆盖父类的init方法,导致父类的init方法无法执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

import pygame
from plane_sprites import *

pygame.init()

# 创建游戏窗口 宽480像素 高700像素,返回游戏屏幕
screen = pygame.display.set_mode((480, 700))

# 绘制背景图像
# 1>加载图像数据
background = pygame.image
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值