pygame控制飛船上下左右移動

2021-10-02 14:23:41 字數 2236 閱讀 1416

小白@hust

建立飛船左右移動的能力之後,想繼續建立飛船上下移動的能力,可是出現問題,先貼上**片段

#飛船屬性

import pygame

class ship():

"""docstring for ship"""

def __init__(self, ai_settings,screen):

#初始化飛船並設定其初始位置

self.screen=screen

self.ai_settings=ai_settings

#載入飛船影象並獲取其外接矩形

self.image=pygame.image.load('images/ship.bmp')

self.rect=self.image.get_rect()

self.screen_rect=screen.get_rect()

#將每艘新飛船放在螢幕底部**

self.rect.centerx=self.screen_rect.centerx

self.rect.bottom=self.screen_rect.bottom

self.rect.centery=self.screen_rect.centery

#在飛船的屬性center中儲存小數值

self.centerx=float(self.rect.centerx)

self.centery=float(self.rect.centery)

#移動標誌

self.moving_right=false

self.moving_left=false

self.moving_up=false

self.moving_down=false

def update(self):

"""根據移動標誌調整飛船的位置"""

if self.moving_right and self.rect.right0:

self.centerx-=self.ai_settings.ship_speed_factor

if self.moving_down and self.rect.down0:

self.centery-=self.ai_settings.ship_speed_factor

self.rect.centerx=self.centerx

self.rect.centery=self.centery

def blitme(self):

"""在指定的位置繪製飛船"""

self.screen.blit(self.image,self.rect)

```#控制

import sys

import pygame

from bullet import bullet

def check_keydown_events(event,ai_settings,screen,ship,bullets):

"""響應按鍵"""

if event.key==pygame.k_right:

ship.moving_right=true

elif event.key==pygame.k_left:

ship.moving_left=true

elif event.key==pygame.k_up:

ship.moving_up=true

elif event.key==pygame.k_down:

ship.moving_down=true

elif event.key==pygame.k_space:

fire_bullet(ai_settings,screen,ship,bullets)

def fire_bullet(ai_settings,screen,ship,bullets):

if len(bullets)run_game()

file "alien_invasion.py", line 21, in run_game

ship.update()

file "/users/wuu/desktop/py/ship.py", line 32, in update

if self.moving_up and self.rect.up>0:

==attributeerror: 'pygame.rect' object has no attribute 'up'==

大神們能不能幫我看一看,第一次發帖,不是很熟練,**有點麻煩,謝謝啦

樹莓派 python 控制小車上下左右移動

樹莓派 python 控制小車上下左右移動程式注釋 import rpi.gpio as gpio import time pwma 18 兩個方向位 ain1 22 ain2 27 pwmb 23 bin1 25 bin2 24 速度0 100 利用time.sleep t time 函式控制執行...

C 關於控制項的上下左右移動

c 怎麼讓控制項上下左右移動?如圖 有多個控制項 根據上下左右鍵 控制每個控制項的焦點 public partial class form1 form 定義乙個二位陣列 存放textbox控制項 textbox arr private void form1 load object sender,ev...

js 彷excel 鍵盤上下左右移動

思路 假設初始座標為 0,0 首先要算出 的最大最小座標 即 0到maxx,0到maxy maxx table.rows 0 cells.length maxy tableid.rows.length 再去監聽上下左右的key值 觸發事件 就去計算座標 不能超過最大最小座標 對應這個 tableid...