import sys
import pygame
from settings import Settings
from ship import Ship
import game_functions as game_expand
from pygame.sprite import Group
from alien import Alien
from bull import Bullet
def run_game():
pygame.init()#pygame初始化背景設(shè)置,讓pygame能夠正確工作
ai_screen = Settings()
#設(shè)置實(shí)例獲取setting模塊下Settings方法中的參數(shù)設(shè)置
screen = pygame.display.set_mode((ai_screen.width,ai_screen.height))
#創(chuàng)建顯示窗口,通過實(shí)例傳遞setting模塊下self.width和self.height的具體參數(shù)
pygame.display.set_caption('Alien Invasion')
#創(chuàng)建游戲窗口標(biāo)題,這些都屬于游戲元素
ship = Ship(screen,ai_screen)
#獲取ship模塊下的Ship方法,調(diào)用飛船圖片,創(chuàng)造出飛船
black_color = ai_screen.black_color
#設(shè)置背景顏色,以RGB值指定,每個取值范圍0-255
bullets = Group()
aliens = Group()
#將外星人添加到一個數(shù)組中
game_expand.create_fleet(ai_screen,screen,aliens)
#創(chuàng)建外星人群
while True:#使用無限循環(huán)的目的是可以在每次刷新時都打印輸出
ship.update()
# 每次循環(huán)時都調(diào)用飛船的update方法
game_expand.check_events(ai_screen, screen, ship, bullets)
#將ship模塊作為實(shí)參傳遞給game_functions模塊下的check_events方法,目的是當(dāng)檢測到事件是按鍵并且是特定的方向鍵是將飛船做出相應(yīng)的位置調(diào)整
game_expand.update_bullets(aliens,bullets,ai_screen,screen,ship)
game_expand.update_aliens(aliens)
game_expand.update_screen(ai_screen,screen,ship,bullets,aliens)
run_game()
import sys
import pygame
from bull import Bullet
from alien import Alien
#響應(yīng)按鍵和鼠標(biāo)事件
def check_keydown_events(event,ship,ai_screen,screen,bullets):
if event.key == pygame.K_RIGHT:
ship.move_right = True
# 上邊代碼表示持續(xù)移動屬性被修改為true,允許持續(xù)移動
elif event.key == pygame.K_LEFT:
ship.move_left = True
elif event.key == pygame.K_UP:
ship.move_up = True
elif event.key == pygame.K_DOWN:
ship.move_down = True
elif event.key == pygame.K_SPACE:
#創(chuàng)建一顆子彈,并將其加入到編組bullets中
fire_bullets(bullets,ai_screen,screen,ship)
elif event.key == pygame.K_q:
#創(chuàng)建一顆子彈,并將其加入到編組bullets中
sys.exit()
def check_keyup_events(event,ship):
if event.key == pygame.K_RIGHT:
ship.move_right = False
# 上邊代碼表示持續(xù)移動屬性被修改為false,不允許持續(xù)移動
if event.key == pygame.K_LEFT:
ship.move_left = False
if event.key == pygame.K_UP:
ship.move_up = False
if event.key == pygame.K_DOWN:
ship.move_down = False
def check_events(ai_screen, screen, ship, bullets):
for event in pygame.event.get():
# 為讓程序響應(yīng)事件,我們編寫一個事件循環(huán),監(jiān)聽事件,如果有事件發(fā)生,執(zhí)行相應(yīng)任務(wù)
if event.type == pygame.QUIT:
sys.exit() # 退出進(jìn)程
elif event.type == pygame.KEYDOWN:
#如果pygame檢測到KEYDOWN事件,做出以下反應(yīng)
check_keydown_events(event,ship,ai_screen,screen,bullets)
elif event.type == pygame.KEYUP:
#如果pygame檢測到KEYUP事件,做出一下反應(yīng)
check_keyup_events(event,ship)
def fire_bullets(bullets,ai_screen,screen,ship):
if len(bullets) <= ai_screen.bull_allow:
# 檢查如果同屏子彈數(shù)小于等于setting.py中設(shè)置的要求數(shù)量,執(zhí)行下列命令,將子彈添加到bullets列表中
new_bullet = Bullet(ai_screen, screen, ship)
bullets.add(new_bullet)
def update_bullets(aliens,bullets,ai_screen,screen,ship):
for bullet in bullets.copy():
if bullet.rect.bottom <= 0:
bullets.remove(bullet)
bullets.update()
def get_number_aliens_x(ai_screen,alien_width):
#計算每行可容納多少個外星人
available_space_x = ai_screen.width - 2 * alien_width
#可放置外星人的水平空間有多大
number_aliens_x = int(available_space_x / (2 * alien_width))
#計算一行可容納外星人數(shù)量
return number_aliens_x
def create_alien(ai_screen,screen,aliens,alien_number):
alien = Alien(ai_screen,screen)
alien_width = alien.rect.width
alien.x = alien_width + 2 * alien_width * alien_number
alien.rect.x = alien.x
aliens.add(alien)
def create_fleet(ai_screen,screen,aliens):
#創(chuàng)建外星人群
alien = Alien(ai_screen,screen)
#先創(chuàng)建一個外星人
number_aliens_x = get_number_aliens_x(ai_screen,alien.rect.width)
for alien_number in range(number_aliens_x):
create_alien(ai_screen,screen,aliens,alien_number)
def update_aliens(aliens):
aliens.update()
def update_screen(ai_screen,screen,ship,bullets,aliens):
#更新屏幕中的圖片,并切換到新屏幕
screen.fill(ai_screen.black_color)
#用屏幕填充背景顏色,只接受一個實(shí)參,一種顏色
for bull in bullets.sprites():
#在飛船和外星人后面重繪所有子彈,該方法中的所有函數(shù)必須在pygame.display.flip()前執(zhí)行,否則無法正常顯示
bull.draw_bull()
ship.blitme()
#將飛船圖片繪制到屏幕中
aliens.draw(screen)
#在屏幕上繪制編組中的每個外星人
pygame.display.flip()
# 繪制最近屏幕的顯示,通過不斷更新屏幕,以顯示元素的新位置,并在原來的位置隱藏元素,從而營造平滑移動效果
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
def __init__(self,screen,ai_screen):
super(Alien,self).__init__()
self.screen = screen
self.ai_screen = ai_screen
self.image = pygame.image.load('C:\\Users\\邢小星\\PycharmProjects\\Game\\Game_Windows\\aliens.bmp')
#加載外星人圖片
self.rect = self.image.get_rect()
self.rect.x = self.rect.width
self.rect.y = self.rect.height
#設(shè)置每個外星人最初都在屏幕左上角附近出現(xiàn)
self.x = float(self.rect.x)
def update(self):
self.x += self.ai_screen.alien_speed
self.rect.x = self.x
def blitme(self):
self.screen.blit(self.image, self.rect)
class Settings():
def __init__(self):
self.width = 960#寬度
self.height = 600#高度
self.black_color = (255,255,255)#背景顏色
self.ship_speed = 1.5#飛船行駛速度
self.bull_speed = 1
self.bull_width = 3
self.bull_height = 15
self.bull_color = (10,10,10)
self.bull_allow = 5#限制同屏的子彈數(shù)
self.alien_speed = 1
self.fleet_drop_speed = 2
self.fleet_direction = 1
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。