PYTHON第四天(飛機大戰)

2021-10-14 16:31:44 字數 2091 閱讀 3309

算是差不多能搞懂pygame裡的sprite大致意思了…設定sprite的意義在於將每個子彈變成乙個小元素(小精靈的意思)一方面便於儲存,一方面可以進行呼叫。

class bullet(sprite):

def __init__(self,ai_settings,screen,ship):

super(bullet,self).__init__()

self.screen = screen

#開始製作子彈的形狀

self.rect = pygame.rect(0,0,ai_settings.bullet_width,ai_settings.bullet_height)

self.rect.centerx = ship.rect.centerx

self.rect.top = ship.rect.top

self.x = float(self.rect.x)

self.color = ai_settings.bullet_color

self.speed_factor = ai_settings.bullet_speed_factor

這個意義在於設定每個子彈的屬性都統一,並且將其定義到pygame裡的螢幕上,乙個定義是定義位置在飛船的頭部方向(ship.rect.top),另乙個是定義在飛船的中間部分(ship.rect.centerx)每個子彈的意義在於從飛船頭部發出,現在我們再返回到主程式。

import pygame

import sys

from settings1 import plant_game

from ship1 import ship

import checkcheck as gf

from pygame.sprite import group

~~這個group是我昨天沒弄懂的

def run_game():

pygame.display.set_caption("alien invasion")

ai_setting = plant_game()

ship = ship(ai_setting,ai_setting.screen)

bullets = group()

**就是這裡的,bullets =group,現在我明白了,應該是將其定義為乙個完整的子彈組。**

# ship看做是乙個矩形

while true:

gf.check_events(ship,ai_setting,ai_setting.screen,bullets)

gf.update_screen(ai_setting,ai_setting.screen,ship,bullets)

#def update_screen(ai_settings,screen,ship,bullets)

#screen.fill(ai_settings.bg_color)

#for bullet in bullets.sprites():

#bullet.draw_bullets()

#這裡的意義在於,將group填充子彈,draw_bullets()進行子彈填充,然後建立乙個完整的子彈group。

gf.update_bullets(bullets)

#當然,不能讓你子彈無限的發射吧。這裡我們設定了乙個判定子彈是否飛躍出的螢幕的函式。

def update_bullets(bullets):

bullets.update()

for bullet in bullets.copy():

if bullet.rect.bottom <= 0:

bullets.remove(bullet)

print(len(bullets))

#這裡的bullets就是group,我們進行判斷是否每個子彈的位置是不是超出去了,超出去我們就remove它。

gf.update_screen(ai_setting,ai_setting.screen,ship,bullets)

run_game()

run_game()

ok,雖然寫的很爛我會繼續加油的。今天學習時間太短了,明天加油,仍然沒有寫出如何進行一直按空格發射子彈,明天接著試試。

學習python 第四天

python 迴圈結構 迴圈結構可以輕鬆的控制某件事重複 再重複的發生。在python中構造迴圈結構有兩種做法,一種是for in迴圈,一種是while迴圈。for in迴圈 如果明確的知道迴圈執行的次數或者是要對乙個容器進行迭代 後面會講到 那麼我們推薦使用for in迴圈 用for迴圈實現1 1...

Python學習 第四天

map函式可以對序列中個每個值進行某種批量轉化操作,然後將結果作為迭代器iterator返回,迭代器可以利用for迴圈或者next 函式來訪問每個值。map函式接收兩個引數,乙個是函式f,乙個是iterator,map在iterable的每個元素上依次執行函式f,並把結果作為新的iterator迭代...

學習python,第四天

echo 內容 a 將內容放到檔案裡 ls lh a 會覆蓋原有內容 echo a 追加到末尾 不會覆蓋原有內容 管道 ls lha more shutdown關機 shutdown now立刻關機 shutdown r重啟 shutdown c取消 shutdown 10 00十點關機 shutd...