飛機大戰(zhàn)(項目實戰(zhàn)2)

今天詳細(xì)的講一下英雄的出場 和位置累贤,我們先定義需求:

1:游戲啟動后,英雄出現(xiàn)在屏幕的中間位置,距離屏幕底部120像素

2:英雄每隔0.5秒發(fā)射一個子彈老赤,每次連發(fā)三枚子彈

3:默認(rèn)不會移動,需要左/右方向鍵源葫,控制英雄在水平方向移動



子彈需求:

1:子彈從英雄的正上方沿直線向上方飛行

2:子彈飛出屏幕后需要從精靈租中刪除

Hero-----英雄

~初始化方法

? ? ? ? ? ? ·指定英雄圖片 ? 诗越,? ·定義初始速度 =0(英雄靜止不動)

·定義 bullets子彈精靈組保存子彈精靈

`重寫 update()方法

`英雄需要水平移動

并且需要保證不能移出屏幕

增加bullets屬性,記錄所有子彈精靈

增加fire方法息堂,用于發(fā)射子彈

Bullet —— 子彈

初始化方法

指定子彈圖片

初始速度 = -2—— 子彈需要向上方飛行

重寫update()方法

判斷是否飛出屏幕嚷狞,如果是,從精靈組刪除


2:創(chuàng)建英雄

2.1 準(zhǔn)備英雄類

在plane_sprites新建Hero類

重寫初始化方法荣堰,直接指定圖片名稱床未,并且將初始速度設(shè)置為0

設(shè)置英雄的初始位置


centerx = x + 0.5 * widthcentery = y + 0.5 * heightbottom = y + height


class ? Hero ? (GameSprite):

"""英雄精靈"""

def__init__(self):

super().__init__("./images/me1.png",0)

# 設(shè)置初始位置

self.rect.centerx = SCREEN_RECT.centerx

self.rect.bottom = SCREEN_RECT.bottom -120


2.2 繪制英雄

1:在__create_sprites,添加英雄精靈和英雄精靈組

后續(xù)要針對英雄做碰撞檢測以及發(fā)射子彈

所以英雄需要單獨定義成屬性

2:在__update_sprites振坚,讓英雄精靈組調(diào)用update和draw方法

代碼實現(xiàn)

修改__create_sprites方法如下:

# 英雄組

self.hero = Hero()

self.hero_group = pygame.sprite.Group(self.hero)

修改__update_sprites方法如下:

self.hero_group.update()

self.hero_group.draw(self.screen)

03. 移動英雄位置

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

第一種方式判斷event.type == pygame.KEYDOWN

第二種方式

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

2:通過鍵盤常量,判斷元組中某一個鍵是否被按下—— 如果被按下渡八,對應(yīng)數(shù)值為1

提問這兩種方式之間有什么區(qū)別呢啃洋?

第一種方式

elif ? event.type == pygame.KEYDOWNandevent.key == pygame.K_RIGHT:

print("向右移動...")

第二種方式

# 返回所有按鍵的元組,如果某個鍵被按下屎鳍,對應(yīng)的值會是1

keys_pressed = pygame.key.get_pressed()

# 判斷是否按下了方向鍵

if? keys_pressed [pygame.K_RIGHT]:

print("向右移動...")

結(jié)論

第一種方式event.type用戶必須要抬起按鍵才算一次按鍵事件宏娄,操作靈活性會大打折扣

第二種方式用戶可以按住方向鍵不放,就能夠?qū)崿F(xiàn)持續(xù)向某一個方向移動了逮壁,操作靈活性更好

3.1 移動英雄位置

演練步驟

1.在Hero類中重寫update方法

用速度speed和英雄rect.x進行疊加

不需要調(diào)用父類方法—— 父類方法只是實現(xiàn)了單純的垂直運動

2.在__event_handler方法中根據(jù)左右方向鍵設(shè)置英雄的速度

向右=>speed = 2

向左=>speed = -2

其他=>speed = 0

代碼演練

在Hero類孵坚,重寫update()方法,根據(jù)速度水平移動英雄的飛機

def? update (self):

# 飛機水平移動

self.rect.x += self.speed

調(diào)整鍵盤按鍵代碼

# 獲取用戶按鍵

keys_pressed = pygame.key.get_pressed()

if? keys_pressed[pygame.K_RIGHT]:

self.hero.speed =2

elif? keys_pressed[pygame.K_LEFT]:

self.hero.speed =-2

else:

self.hero.speed =0




控制英雄運動邊界

在Hero類的update()方法判斷英雄是否超出屏幕邊界

right = x + width利用rigth屬性可以非常容易的針對右側(cè)設(shè)置精靈位置



def ? update(self):

# 飛機水平移動

self.rect.x += self.speed

# 判斷屏幕邊界

if? self.rect.left <0:

self.rect.left =0

if ? self.rect.right > SCREEN_RECT.right:

self.rect.right = SCREEN_RECT.right




注意:我們在pygame中使用的圖片格式為.png格式窥淆,如果想要添加自己的圖片要注意格式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卖宠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子忧饭,更是在濱河造成了極大的恐慌扛伍,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件词裤,死亡現(xiàn)場離奇詭異蜒秤,居然都是意外死亡汁咏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門作媚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘滩,“玉大人,你說我怎么就攤上這事纸泡∑剩” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵女揭,是天一觀的道長蚤假。 經(jīng)常有香客問我,道長吧兔,這世上最難降的妖魔是什么磷仰? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮境蔼,結(jié)果婚禮上灶平,老公的妹妹穿的比我還像新娘。我一直安慰自己箍土,他們只是感情好逢享,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布涤浇。 她就那樣靜靜地躺著驶乾,像睡著了一般瑰剃。 火紅的嫁衣襯著肌膚如雪锻拘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天痊乾,我揣著相機與錄音露久,去河邊找鬼库北。 笑死航罗,一個胖子當(dāng)著我的面吹牛禀横,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伤哺,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼者祖!你這毒婦竟也來了立莉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤七问,失蹤者是張志新(化名)和其女友劉穎蜓耻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體械巡,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡刹淌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年饶氏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片有勾。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡疹启,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔼卡,到底是詐尸還是另有隱情喊崖,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布雇逞,位于F島的核電站荤懂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏塘砸。R本人自食惡果不足惜节仿,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掉蔬。 院中可真熱鬧廊宪,春花似錦、人聲如沸眉踱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谈喳。三九已至册烈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婿禽,已是汗流浹背赏僧。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扭倾,地道東北人淀零。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像膛壹,于是被迫代替她去往敵國和親驾中。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容