pygame小游戲打飛機_4顯示敵人
顯示敵人:
定義顯示敵人的函數 show_enemy,調用該函數時顯示敵人的圖像
# 引用pygame
import pygame
# 使程序初始化
pygame.init()
# 設置圖像參數
screen = pygame.display.set_mode((480, 700))
# 設置標題
pygame.display.set_caption('打飛機')
# 引入圖片
icon = pygame.image.load('ufo.png')
pygame.display.set_icon(icon)
# 引入背景圖片
bgImg = pygame.image.load('background.png')
# 引入玩家圖片
playerImg = pygame.image.load('player.png')
# 定義玩家初始位置
playerX = 225
playerY = 350
# 定義變量表示運動距離
playerStep = 0
# 新增 引入敵人圖片
enemyImg = pygame.image.load('enemy.png')
# 新增 定義顯示敵人的函數
def show_enemy():
# 新增 使敵人出現在(0,0)的位置
screen.blit(enemyImg, (0, 0))
running = True
# 進行循環 游戲主循環
while running:
# 繪制背景
screen.blit(bgImg, (0, 0))
# 繪制玩家
screen.blit(playerImg, (playerX, playerY))
# 新增 調用顯示敵人函數
show_enemy()
# 獲取游戲事件隊列中的所有事件(涉及到玩家的各種交互,如鼠標點擊、鍵盤操作、窗口事件等)
for event in pygame.event.get():
# 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
if event.type == pygame.QUIT:
# 退出循環
running = False
# KEYDOWN判斷鍵盤按下的類型
if event.type == pygame.KEYDOWN:
# 新增 判斷按下向左右鍵進行移動賦值
if event.key == pygame.K_RIGHT:
playerStep = 0.5
elif event.key == pygame.K_LEFT:
playerStep = -0.5
# KEYUP判斷鍵盤抬起的類型
if event.type == pygame.KEYUP:
# 抬起鍵盤時將移動距離改為0
playerStep = 0
# 進行位移
playerX += playerStep
# 控制邊界
if playerX > 378:
playerX = 378
if playerX < 0:
playerX = 0
if playerY > 572:
playerY = 572
if playerY < 0:
playerY = 0
# 界面更新
pygame.display.update()
敵人移動:
1.敵人左右移動
設置敵人初始運動速度,當敵人移動到邊界時在左右邊界做反彈效果
注意:在函數中使用全局變量時,需要在函數中使用 global 語句標注使用的變量為全局變量
# 引用pygame
import pygame
# 使程序初始化
pygame.init()
# 設置圖像參數
screen =pygame.display.set_mode((480,700))
# 設置標題
pygame.display.set_caption('打飛機')
# 引入圖片
icon=pygame.image.load('ufo.png')
pygame.display.set_icon(icon)
# 引入背景圖片
bgImg=pygame.image.load('background.png')
# 引入玩家圖片
playerImg=pygame.image.load('player.png')
# 定義玩家初始位置
playerX=225
playerY=350
# 定義變量表示玩家運動速度
playerStep=0
# 引入敵人圖片
enemyImg=pygame.image.load('enemy.png')
# 新增 定義敵人位置
enemyX=225
enemyY=20
# 新增 引入敵人運動速度
enemyStep=0.1
# 定義顯示敵人的函數
def show_enemy():
# 新增 標注為全局變量
global enemyX
global enemyY
global enemyStep
# 函數可以使敵人出現在(enemyX,enemyY)的位置
screen.blit(enemyImg, (enemyX,enemyY))
# 新增 敵人飛機運動測試
enemyX += enemyStep
# 新增 控制敵人邊界當敵人碰到左右邊界時反彈,當敵人運動到上下邊界時停止
if enemyX > 378:
enemyStep*=-1
if enemyX < 0:
enemyStep*=-1
if enemyY > 572:
enemyY = 572
if enemyY < 0:
enemyY = 0
running =True
# 進行循環 游戲主循環
while running :
# 繪制背景
screen.blit(bgImg,(0,0))
# 繪制玩家
screen.blit(playerImg, (playerX, playerY))
# 調用顯示敵人函數
show_enemy()
# 獲取游戲事件隊列中的所有事件(涉及到玩家的各種交互,如鼠標點擊、鍵盤操作、窗口事件等)
for event in pygame.event.get():
# 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
if event.type == pygame.QUIT:
#退出循環
running =False
# KEYDOWN判斷鍵盤按下的類型
if event.type == pygame.KEYDOWN:
# 判斷按下向左右鍵進行移動賦值
if event.key == pygame.K_RIGHT:
playerStep=0.5
elif event.key == pygame.K_LEFT:
playerStep=-0.5
# KEYUP判斷鍵盤抬起的類型
if event.type == pygame.KEYUP:
# 抬起鍵盤時將移動距離改為0
playerStep = 0
# 進行位移
playerX+=playerStep
# 控制邊界
if playerX > 378:
playerX = 378
if playerX < 0:
playerX = 0
if playerY > 572:
playerY = 572
if playerY < 0:
playerY = 0
# 界面更新
pygame.display.update()
效果如下:

2.敵人下沉移動與隨機出現
當敵人碰到左右邊界時觸發下沉移動
調用 random 函數生成敵人隨機顯示位置的坐標
注意:生成隨機數時需要定義最大值和最小值。
# 引用 pygame
import pygame
# 新增 引用隨機模塊
import random
# 使程序初始化
pygame.init()
# 設置游戲窗口大小
screen = pygame.display.set_mode((480, 700))
# 設置標題
pygame.display.set_caption('打飛機')
# 設置游戲圖標
icon = pygame.image.load('ufo.png')
pygame.display.set_icon(icon)
# 引入背景圖片
bgImg = pygame.image.load('background.png')
# 引入玩家圖片
playerImg = pygame.image.load('player.png')
# 定義玩家初始位置
playerX = 225
playerY = 350
# 定義變量表示玩家運動速度
playerStep = 0
# 引入敵人圖片
enemyImg = pygame.image.load('enemy.png')
# 新增 通過 random 函數進行隨機位置坐標生成
enemyX = random.randint(100, 380)
enemyY = random.randint(0, 100)
# 定義變量表示敵人運動速度
enemyStep = 0.1
# 定義顯示敵人的函數
def show_enemy():
# 標注為全局變量
global enemyX
global enemyY
global enemyStep
# 使敵人出現在(enemyX, enemyY)的位置
screen.blit(enemyImg, (enemyX, enemyY))
# 使敵人飛機左右移動
enemyX += enemyStep
# 控制敵人移動邊界,當敵人碰到左右邊界時反彈,當敵人運動到上下邊界時停止
if enemyX > 378:
enemyStep *= -1
# 新增 當碰到左右邊界時下沉
enemyY += 20
if enemyX < 0:
enemyStep *= -1
enemyY += 20
if enemyY > 572:
enemyY = 572
if enemyY < 0:
enemyY = 0
running = True
# 進行循環 游戲主循環
while running:
# 繪制背景
screen.blit(bgImg, (0, 0))
# 繪制玩家
screen.blit(playerImg, (playerX, playerY))
# 調用顯示敵人函數
show_enemy()
# 獲取游戲事件隊列中的所有事件(涉及到玩家的各種交互,如鼠標點擊、鍵盤操作、窗口事件等)
for event in pygame.event.get():
# 如果事件是QUIT事件,如點擊窗口的關閉按鈕,則退出循環
if event.type == pygame.QUIT:
# 退出循環
running = False
# KEYDOWN 判斷鍵盤是否按下
if event.type == pygame.KEYDOWN:
# 判斷按下左右鍵進行移動賦值
if event.key == pygame.K_RIGHT:
playerStep = 0.5
elif event.key == pygame.K_LEFT:
playerStep = -0.5
# KEYUP 判斷鍵盤是否抬起
if event.type == pygame.KEYUP:
# 抬起鍵盤時將移動距離改為 0
playerStep = 0
# 玩家左右移動
playerX += playerStep
# 控制玩家移動邊界
if playerX > 378:
playerX = 378
if playerX < 0:
playerX = 0
if playerY > 572:
playerY = 572
if playerY < 0:
playerY = 0
# 界面更新
pygame.display.update()
效果如下:

浙公網安備 33010602011771號