1. 程式人生 > 其它 >pygame之移動精靈物件

pygame之移動精靈物件

1、建立精靈物件並根據按鍵移動

import pygame
from pygame.locals import *


class Player(pygame.sprite.Sprite):  # 繼承pygame.sprite.Sprite精靈物件
    def __init__(self):
        super().__init__()
        self.surf = pygame.Surface((75, 25))  # 建立Surface平面物件
        self.surf.fill('orange')  # 填充顏色
        self.rect = self.surf.get_rect()  #
獲取X,Y座標和大小 print(f'rect:{self.rect}') # 不設定預設是0,0 self.rect.x = 100 # 重新設定X軸座標 self.rect.y = 100 # 重新設定Y軸座標 def update(self, pressed_keys): if pressed_keys[K_UP]: # 如果按下的是方向上鍵 self.rect.move_ip(0, -5) # 更新rect的X,Y if pressed_keys[K_DOWN]: # 如果按下的是方向下鍵
self.rect.move_ip(0, 5) # 更新rect的X,Y if pressed_keys[K_LEFT]: # 如果按下的是方向左鍵 self.rect.move_ip(-5, 0) # 更新rect的X,Y if pressed_keys[K_RIGHT]: # 如果按下的是方向右鍵 self.rect.move_ip(5, 0) # 更新rect的X,Y self.stay_inside() # 保證一直在窗口裡面 def stay_inside(self): #
保證一直在窗口裡面 if self.rect.top < 0: # 如果上邊界小於0 self.rect.top = 0 # 設定上邊界為0 if self.rect.bottom > screen.get_height(): # 如果下邊界超過視窗高度 self.rect.bottom = screen.get_height() # 設定下邊界為視窗高度 if self.rect.left < 0: # 如果左邊界小於0 self.rect.left = 0 # 設定左邊界為0 if self.rect.right > screen.get_width(): # 如果右邊界超過視窗寬度 self.rect.right = screen.get_width() # 設定右邊界為視窗寬度 pygame.init() # 初始化pygame screen = pygame.display.set_mode((300, 300)) # 建立視窗 player = Player() # 建立Player物件 running = True clock = pygame.time.Clock() # 建立Clock用於跟蹤時間 while running: for event in pygame.event.get(): # 獲取所有事件 if event.type == KEYDOWN: # 獲取按鈕按下事件 if event.key == K_ESCAPE: # 如果是按下了ESC鍵 running = False if event.type == QUIT: # 如果是QUIT事件,如點選關閉視窗按鈕 running = False clock.tick(100) # 每秒重新整理多少幀,不設定按鍵後移動的飛快 pressed_key = pygame.key.get_pressed() # 獲取按鍵 player.update(pressed_key) # 更新位置 screen.fill(color='white') # 為視窗填充白色 screen.blit(player.surf, player.rect) # 放置player物件 pygame.display.update() # 重新整理整個平面 或者 pygame.display.flip() pygame.quit() # 退出pygame