設定英雄類和子彈類
新建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...