中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

小學課后服務 Python少兒編程 進階篇:11-飛機大戰2 課件 (19張PPT)

資源下載
  1. 二一教育資源

小學課后服務 Python少兒編程 進階篇:11-飛機大戰2 課件 (19張PPT)

資源簡介

(共19張PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少兒編程課
飛機大戰2
本節我們來使用另一種方式繪制小方塊,并使其能夠在屏幕中左右移動
Pygame中的精靈
除了繪制飛機,還可以通過創建精靈的方式來生成飛機
1
精靈是游戲開發中的術語。簡單來說,游戲中會動的東西都叫精靈
飛機
隕石
子彈
飛機大戰中的精靈
2
對于本游戲來說,目前有以下幾種精靈
使用精靈類來制作角色,會更加有利于對角色的管理以及功能的添加
Pygame中提供了精靈類,繼承它就可以定義自己的精靈,下面我們定義飛機精靈
1
2
定義飛機精靈類Player,定義初始化方法
為了方便確定創建出的正方形的位置,設置一下它的中心和底的值,
class Player(pygame.sprite.Sprite):
def __init__(self):
# 完成精靈的初始化
pygame.sprite.Sprite.__init__(self)
# 初始化飛機精靈的圖像,也就是長什么樣
self.image = pygame.Surface((50, 50))
# 初始化飛機精靈圖像的顏色
self.image.fill((0, 255, 0))
這里的get_rect能夠獲取飛機的圖像的長方形,也就是我們定義的長方形本身。
# 角色的長方形
self.rect = self.image.get_rect()
# 設置長方形中心的x的值
self.rect.centerx = WIDTH / 2
# 設置長方形底的值
self.rect.bottom = HEIGHT - 10
通過設置rect的centerx值和bottom值,就能確定長方形所在的位置了。
這里將image屬性設置為方塊,那么飛機的表現形式就是一個方塊。
飛機精靈類定義完成之后,畫到屏幕中
1
2
添加黃色部分代碼—創建player對象,并繪制到屏幕
# 定義玩家飛機對象
player = Player()
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
# 將玩家飛機繪制到屏幕上
screen.blit(player.image, player.rect)
# 重繪游戲界面,相當于刷新一次
pygame.display.flip()
pygame.quit
運行程序,可以看到屏幕中同樣出現了綠色小方塊
繪制到屏幕時,不需要指定位置,直接傳入player.rect即可
飛機左右移動
接下來我們讓飛機能夠移動,首先來分析
(0,0)
600
480
(0,600)
(480,0)
(480,600)
X軸
Y軸
左右移動,改變的是角色的X坐標
當按下左移鍵
240
200
160
120
280
320
360
X坐標減少
當按下右移鍵
X坐標增加
然后設置角色的X軸坐標為當前坐標加上這個變量,在死循環中不斷的更新位置就可以了
所以我們可以創建一個初始值為0,按下左鍵時設為負值、按下右鍵時設為正值的變量
在player類中增加update方法,更新飛機的位置
1
在首先初始化X軸速度并獲得按鍵狀態
2
根據不同按鍵,將X軸速度設為不同值
def update(self):
self.speedx = 0
# 獲取按鍵狀態
keys = pygame.key.get_pressed()
# 如果左移鍵被按下
if keys[pygame.K_LEFT]:
# x軸上的速度設置為‐8
self.speedx = -8
# 如果右鍵被按下
if keys[pygame.K_RIGHT]:
# x軸上的速度設置為8
self.speedx = 8
# 設置角色的x軸坐標
self.rect.x += self.speedx
3
最后,將角色的位置設置為當前坐標加上按鍵之后的速度
在死循環中調用update方法,然后運行程序,結果如下:
這是因為在每次繪制飛機時,并沒有繪制屏幕,導致繪制飛機后的界面又重新做了屏幕
要解決這個問題,只需要每次繪制飛機的時候也繪制背景即可,繪制背景只需要給一個背景顏色。
可以看到,屏幕下方出現了一塊綠色區域,這顯然不是我們想要的移動效果。
為屏幕添加背景色
再次運行
# 繪制屏幕的背景顏色
screen.fill((0, 0, 0))
現在飛機雖然可以移動,但是非常不合理,不僅移動的速度非常快,而且能夠移出屏幕
接下來,我們對飛機的移動進行設置,使其移動更加合理
飛機移動合理性
首先解決飛機能夠移出屏幕的問題
1
更新update方法,設置邊界限制
2
運行程序,飛機只能在屏幕中移動
# 邊緣檢測,如果碰到邊緣,就停止不動
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.left = 0
當飛機的右邊緣即將超出屏幕右邊緣坐標時,將飛機右邊緣坐標設為屏幕右邊緣坐標,左側限制同理。
邊緣限制寫好之后,來看一下飛機的移動速度非常快的原因
我們知道,電腦的運行速度是非常快的,當我們按下按鍵時,死循環已經執行了很多次
已運行了五次為例:
8像素
8像素
8像素
8像素
8像素
8像素
執行一次,移動像素
執行五次,移動5x8也就是40像素
實際程序的執行速度更加快,所以看起來飛機移動的非常快
知道原因之后就要想辦法解決,這里有兩種方法:
第一種是修改左右移動的像素數,減慢飛機運動速度
第二種方式在游戲中更常見:控制游戲的節奏!
這里我們使用pygame中的定時器來控制游戲節奏
1
初始化計時器
2
定義一個常量并在死循環中設定循環執行的時間
# 初始化計時器
clock = pygame.time.Clock()
FPS = 60
clock.tick(FPS)
注意:這里的60并不是設定的循環執行的時間,而是每秒循環執行的次數,
1秒等于1000毫秒,所有每次循環的執行時間就是1000/60 = 16.66 約等于17毫秒。
3
使用time模塊,查看現在循環執行的時間
可以發現,基本上是17毫秒的樣子
import time
t = time.time()
# 輸出毫秒值
print(int(round(t * 1000)))
現在運行程序,飛機就可以合理的在屏幕中移動了
總結
Summary
Pygame精靈類的使用

pygame游戲節奏的控制方式

Thanks!

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 宾阳县| 任丘市| 萨嘎县| 江都市| 巨鹿县| 岳普湖县| 罗城| 古交市| 三江| 陇西县| 陇南市| 平舆县| 阿坝| 嘉峪关市| 蒙山县| 承德市| 亚东县| 内黄县| 隆化县| 莆田市| 深圳市| 南京市| 宁都县| 青浦区| 萝北县| 沁源县| 肃南| 隆安县| 奉新县| 巴林左旗| 土默特左旗| 临武县| 漳州市| 洛浦县| 利辛县| 灌阳县| 封开县| 潮州市| 东兰县| 广州市| 叶城县|