python飛機大戰筆記(9)英雄飛機設定

2021-09-29 18:49:04 字數 1786 閱讀 2963

設定英雄類和子彈類

新建hero類,重寫初始化方法,直接指定名稱,並且將初始速度設定為0,設定英雄的初始位置;

class

hero

(gamesprite)

:"""英雄精靈"""

def__init__

(self)

:# 1.呼叫父類方法,設定image和speed

super()

.__init__(

"./images/me1.png",0

)#不會自主移動

#設定英雄的初始位置:在螢幕最下面的水平**位置

self.rect.centerx = screen_rect.centerx

self.rect.bottom = screen_rect.bottom-

120

繪製英雄

在建立精靈組函式下,新增英雄精靈和英雄精靈組(後序要針對英雄做平壤裝檢測以及發射子彈,所以英雄需要單獨定義成屬性

在更新函式中,讓英雄組呼叫更新方法

移動英雄位置:

在pygame中針對按鍵的捕獲,有兩種方式

第一種方式:判斷even.type = pygame.keydown

第二種方式:

1)首先使用pygame.key.get_pressed()返回所有按鍵元組

2)通過鍵盤常量,判斷元組中某乙個鍵是否被按下,如果被按下,對應數值為1

兩種方式的差異

鍵盤方式可以按著一直相應,而pygame終,按下彈起算一次

elif even.

type

== pygame.keydown and even.key ==pygame.k_right:

# print("向右移動")

#使用鍵盤提供的方法獲取鍵盤按鍵-按鍵元組

keys_pressed = pygame.key.get_pressed(

)#判斷元組中對應的按鍵的索引值--按下乙個鍵不放

if keys_pressed[pygame.k_right]

:print

("向右移動"

)

移動英雄位置

左右方向鍵設定了英雄的速度,speed 向右speed = 2;向左speed = -2;其它speed = 0;

keys_pressed = pygame.key.get_pressed(

)#判斷元組中對應的按鍵的索引值--按下乙個鍵不放

if keys_pressed[pygame.k_right]

: self.hero.speed =

2elif keys_pressed[pygame.k_left]

: self.hero.speed =-2

else

: self.hero.speed =

0

控制英雄的邊界:

在英雄類的updae方法加限制條件;

#英雄在水平方向移動

self.rect.x += self.speed

#控制英雄不能離開螢幕

#right屬性是x+螢幕的寬度

if self.rect.right >= screen_rect.right:

self.rect.right = screen_rect.right

elif self.rect.x <0:

self.rect.x =

0

Python飛機大戰

玩家飛機可以移動,可以發射子彈,敵機隨機產生,自由墜落。未新增擊落敵機的功能。主要用來練習類的封裝與繼承。coding utf 8 import pygame,random from pygame.locals import class base object def init self,x,y,s...

Python 飛機大戰

新建專案 在選中主韙專案的情況下,tab鍵,會自動的出來乙個下級分支 在選中當前分支的情況五,點enter,會出來乙個同級的分支 第一次背景精靈組,呼叫 update方法。結果就是,背景精靈組中的所有背景物件,呼叫自身的update方法 初始化的時候,生成了 兩個背景物件 並且,建立了乙個背景圖精靈...

python飛機大戰總結

似乎半個月沒寫部落格了。持之以恆的勳章都掉了。現在開始補回來。這乙個月學了學py,搭了一套自己的框架。總結下自己學到的吧,還有去tx之前準備自己補上的部分 1.感覺u3d什麼的遊戲引擎,已經幫忙做好遊戲圖層的管理,所以不用很操心,不過pygame感覺真的啥也不幫忙做。so寫了乙個圖層的管理 sort...