Python微信打飛機遊戲編程學習筆記03

再上次代碼中運行時遇到邊界問題,故解決後代碼如下:
就最後一段飛機座標的設定上做下代碼處理

import pygame                   #導入pygame庫
from pygame.locals import *     #導入pygame庫中的一些常量
from sys import exit            #導入sys庫中的exit函數

#定義窗口的分辨率
SCREEN_WIDTH =  480
SCREEN_HEIGHT =  640

#計數ticks
ticks = 0

#創建字典,按下上下左右鍵的的增量
offset ={pygame.K_LEFT:0,pygame.K_RIGHT:0,pygame.K_UP:0,pygame.K_DOWN:0}

#初始化遊戲
pygame.init()
screen = pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
pygame.display.set_caption('這是一個打飛機遊戲!')

#載入背景圖
background = pygame.image.load('images/background.png')

#載入資源圖
hero1 = pygame.image.load('images/me1.png')
hero2 = pygame.image.load('images/me2.png')
hero_pos=[200,500]


#事件循環
while True:
    #繪製背景
    screen.blit(background,(0,0))

    #繪製飛機,在循環過程中讓每過25個週期切換2個飛機圖。這樣會產生動圖的效果
    if ticks % 50 < 25:
        screen.blit(hero1,hero_pos)
    else:
        screen.blit(hero2,hero_pos)

    ticks += 1


    #更新屏幕
    pygame.display.update()


    #處理遊戲退出
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()


        #按鍵按下和放開的事件,按下時座標增3,放開,置零
        if event.type == pygame.KEYDOWN:
            if event.key in offset:
                offset[event.key] = 3   #增量的大小,主飛機移動速度的快慢


        elif event.type == pygame.KEYUP:
            if event.key in offset:
                offset[event.key] = 0

    #計算增加x座標增量,y座標增量
    offset_x=offset[pygame.K_RIGHT]-offset[pygame.K_LEFT]
    offset_y=offset[pygame.K_DOWN]-offset[pygame.K_UP]

    #飛機新座標
    #遇到邊界問題,此原代碼捨棄hero_pos=[hero_pos[0]+offset_x,hero_pos[1]+offset_y]
    hero_x=hero_pos[0]+offset_x
    if hero_x < 0:
        hero_pos[0] = 0
    elif hero_x > SCREEN_WIDTH - hero1.get_width():
        hero_pos[0] = SCREEN_WIDTH - hero1.get_width()
    else:
        hero_pos[0] = hero_x
        
    hero_y=hero_pos[1]+offset_y
    if hero_y < 0:
        hero_pos[1] = 0
    elif hero_y > SCREEN_HEIGHT - hero1.get_height():
        hero_pos[1] = SCREEN_HEIGHT - hero1.get_height()
    else:
        hero_pos[1] = hero_y

運行效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章