Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)經(jīng)典外星人游戲
前言
說(shuō)說(shuō)外星人那些事兒....
你以為的外星人......他們都是乘坐UFO來(lái)地球的,長(zhǎng)的嗯哼可能比較有特色。也許長(zhǎng)這樣
害!其實(shí)可能也或許不長(zhǎng)這樣。
圖片的話借鑒的大眾認(rèn)知的這一款。當(dāng)然你們還可以自己來(lái)!下面我們來(lái)做一款簡(jiǎn)單的《外星人入侵》小游戲吧!
正文
安裝環(huán)境
下載python3,或如Anaconda3(64 bit),導(dǎo)入pygame游戲包。
主要代碼
1.外星人設(shè)置,alien.py,代碼:
import pygame from pygame.sprite import Sprite class Alien(Sprite): """表示單個(gè)外星人的類""" def __init__(self,ai_settings,screen): """初始化外星人并設(shè)置其他位置""" super(Alien,self).__init__() self.screen = screen self.ai_settings = ai_settings #加載外星人圖像,并設(shè)置其rect屬性 self.image = pygame.image.load('images/alien.bmp') self.rect = self.image.get_rect() #每個(gè)外星人最初都在屏幕左上角附近 self.rect.x = self.rect.width self.rect.y = self.rect.height #存儲(chǔ)外星人的準(zhǔn)確位置 self.x = float(self.rect.x) def blitme(self): """在指定位置繪制外星人""" self.screen.blit(self.image,self.rect) def check_edges(self): """如果外星人位于屏幕邊緣,就返回True""" screen_rect = self.screen.get_rect() if self.rect.right >= screen_rect.right: return True elif self.rect.left <= 0: return True def update(self): """向右移動(dòng)外星人""" self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction) self.rect.x = self.x
2.游戲主程序,alien_invasion.py,代碼:
import pygame from settings import Settings from game_stats import GameStats from button import Button from ship import Ship from pygame.sprite import Group import game_functions as gf from scoreboard import Scoreboard def run_game(): pygame.init() # 初始化背景設(shè)置 ai_settings = Settings() # 全局設(shè)置 screen = pygame.display.set_mode( # 創(chuàng)建screen顯示窗口 (ai_settings.screen_width,ai_settings.screen_height) ) pygame.display.set_caption('Alien Invasion') # 標(biāo)題 #新建Play按鈕 play_button = Button(ai_settings,screen,"Play") #創(chuàng)建一個(gè)用于存儲(chǔ)游戲統(tǒng)計(jì)信息的實(shí)例,并創(chuàng)建記分牌 stats = GameStats(ai_settings) sb = Scoreboard(ai_settings, screen, stats) # 創(chuàng)建飛船 ship = Ship(ai_settings,screen) # 創(chuàng)建子彈編組 bullets = Group() #創(chuàng)建一個(gè)外星人 aliens = Group() #創(chuàng)建外星人群 gf.create_fleet(ai_settings,screen,ship,aliens) # 開(kāi)始游戲主循環(huán) while True: # 監(jiān)視鍵盤和鼠標(biāo)事件 gf.check_events(ai_settings,screen,stats,sb,play_button,ship,aliens,bullets) if stats.game_active: # 移動(dòng)飛船 gf.update_ship(ship) # 更新子彈位置 gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets) #更新外星人 gf.update_aliens(ai_settings,stats,screen,sb,ship,aliens,bullets) # 更新屏幕 gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,play_button) run_game()
3.設(shè)置子彈,bullet.py,代碼:
import pygame from pygame.sprite import Sprite import time class Bullet(Sprite): '''飛船子彈進(jìn)行管理''' def __init__(self,ai_settings,screen,ship): super(Bullet,self).__init__() self.screen = screen # 創(chuàng)建子彈矩形初始位置(0,0,3,15)分別對(duì)應(yīng)lef,top,寬,高 self.rect = pygame.Rect(0,0, ai_settings.bullet_width, ai_settings.bullet_height) self.rect.centerx = ship.rect.centerx # 設(shè)置中心點(diǎn)x軸坐標(biāo)跟飛船一致 self.rect.top = ship.rect.top # 設(shè)置y軸坐標(biāo)頂部跟飛船一致 # 設(shè)置成小數(shù)進(jìn)行計(jì)算 self.top = float(self.rect.top) self.color = ai_settings.bullet_color self.speed_factor = ai_settings.bullet_speed_factor def update(self): self.top -=self.speed_factor self.rect.top = self.top print(self.rect.top) def draw_bullet(self): pygame.draw.rect(self.screen,self.color,self.rect) #略.....................................
其實(shí)還有幾頁(yè)的源碼量,代碼很多,需要的話直接找我會(huì)比較好~
效果展示:
到此這篇關(guān)于Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)經(jīng)典外星人游戲的文章就介紹到這了,更多相關(guān)Pygame外星人游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Pygame中Pygame模塊的大戰(zhàn)外星人實(shí)戰(zhàn)
- Python?Pygame實(shí)戰(zhàn)之打磚塊游戲的實(shí)現(xiàn)
- Python Pygame實(shí)戰(zhàn)之塔防游戲的實(shí)現(xiàn)
- Python Pygame實(shí)戰(zhàn)之超級(jí)炸彈人游戲的實(shí)現(xiàn)
- Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)
- Python?Pygame實(shí)戰(zhàn)之歡樂(lè)打地鼠游戲
- Python?Pygame實(shí)戰(zhàn)之打磚塊小游戲
- Python Pygame實(shí)戰(zhàn)之水果忍者游戲的實(shí)現(xiàn)
- pygame外星人入侵小游戲超詳細(xì)開(kāi)發(fā)流程
相關(guān)文章
用Python爬取英雄聯(lián)盟的皮膚詳細(xì)示例
大家好,本篇文章主要講的是用Python爬取英雄聯(lián)盟的皮膚詳細(xì)示例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Pytorch 使用CNN圖像分類的實(shí)現(xiàn)
這篇文章主要介紹了Pytorch 使用CNN圖像分類的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06python logging 重復(fù)寫日志問(wèn)題解決辦法詳解
這篇文章主要介紹了python logging 重復(fù)寫日志問(wèn)題解決辦法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python獲取多進(jìn)程執(zhí)行的返回值實(shí)現(xiàn)
本文主要介紹了Python獲取多進(jìn)程執(zhí)行的返回值實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法
這篇文章主要介紹了Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法,結(jié)合實(shí)例形式分析了PyPDF2模塊的安裝及Python抓取HTML頁(yè)面并基于PyPDF2模塊生成pdf文件的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作
這篇文章主要來(lái)教大家利用Python編程來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)易的音樂(lè)播放器,文中含有基本功能的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10