最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲

 更新時(shí)間:2021年09月23日 10:42:36   作者:顧木子吖  
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下

導(dǎo)語

承載童年的紙飛機(jī)你還會疊嘛?

如果你是個(gè)80后或者90后,那你應(yīng)該記得小時(shí)候玩的紙飛機(jī)。

疊好后,哈口仙氣,飛出去,感覺棒棒噠。

雖然是一個(gè)極其簡單的玩具,但那時(shí)候,很多熊孩子能傻傻地玩上一整天。

今天帶大家制作一款彩色版本另一個(gè)版本的飛機(jī)大冒險(xiǎn)~

歡迎閱讀往期另一個(gè)飛機(jī)大戰(zhàn)的文章:python開發(fā)飛機(jī)大戰(zhàn)游戲

Are you ready?

一起開啟飛機(jī)大冒險(xiǎn)吧~

▼▼▼

正文

首先準(zhǔn)備好飛機(jī)大冒險(xiǎn)的圖片:

環(huán)境安裝:主要游戲模塊pygame。

 
pip install pygame
pip install -i https://pypi.douban.com/simple/ pygame​​
​

游戲規(guī)則:這款飛機(jī)大戰(zhàn),使用鍵盤的上下左右鍵移動,擊中敵機(jī),一次得100分,積累下來,得分,如撞到敵機(jī)跟敵方子彈則gameover。升級版的會視覺跟游戲效果會跟好,還設(shè)置有積分排行榜。

創(chuàng)建游戲界面:

pygame.init()
# 設(shè)置游戲界面大小
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# 游戲界面標(biāo)題
pygame.display.set_caption('彩版飛機(jī)大戰(zhàn)')
# 圖標(biāo)
ic_launcher = pygame.image.load('resources/image/ic_launcher.png').convert_alpha()
pygame.display.set_icon(ic_launcher)
# 背景圖
background = pygame.image.load('resources/image/background.png').convert_alpha()
# 游戲結(jié)束背景圖
game_over = pygame.image.load('resources/image/gameover.png')
# 子彈圖片
plane_bullet = pygame.image.load('resources/image/bullet.png')
# 飛機(jī)圖片
player_img1= pygame.image.load('resources/image/player1.png')
player_img2= pygame.image.load('resources/image/player2.png')
player_img3= pygame.image.load('resources/image/player_off1.png')
player_img4= pygame.image.load('resources/image/player_off2.png')
player_img5= pygame.image.load('resources/image/player_off3.png')
# 敵機(jī)圖片
enemy_img1= pygame.image.load('resources/image/enemy1.png')
enemy_img2= pygame.image.load('resources/image/enemy2.png')
enemy_img3= pygame.image.load('resources/image/enemy3.png')
enemy_img4= pygame.image.load('resources/image/enemy4.png')

設(shè)置玩家、子彈類:

class Bullet(pygame.sprite.Sprite):
    def __init__(self, bullet_img, init_pos):
        # 調(diào)用了父類的初始化方法來初始化sprite的屬性
        pygame.sprite.Sprite.__init__(self)# 調(diào)用了父類的初始化方法來初始化sprite的屬性
        self.image = bullet_img
        self.rect = self.image.get_rect()
        self.rect.midbottom = init_pos
        self.speed = 10
 
    def move(self):
        self.rect.top -= self.speed
 
class Player(pygame.sprite.Sprite):
    def __init__(self, player_rect, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self.image = []  # 用來存儲玩家飛機(jī)圖片的列表
        for i in range(len(player_rect)):
            self.image.append(player_rect[i].convert_alpha())
 
        self.rect = player_rect[0].get_rect()  # 初始化圖片所在的矩形
        self.rect.topleft = init_pos  # 初始化矩形的左上角坐標(biāo)
        self.speed = 8  # 初始化玩家飛機(jī)速度,這里是一個(gè)確定的值
        self.bullets = pygame.sprite.Group()  # 玩家飛機(jī)所發(fā)射的子彈的集合
        self.img_index = 0  # 玩家飛機(jī)圖片索引
        self.is_hit = False  # 玩家是否被擊中

上下左右游戲的界面是有限制的所以要設(shè)置:

 # 向上移動,需要判斷邊界
    def moveUp(self):
        if self.rect.top <= 0:
            self.rect.top = 0
        else:
            self.rect.top -= self.speed
 
    # 向下移動,需要判斷邊界
    def moveDown(self):
        if self.rect.top >= SCREEN_HEIGHT - self.rect.height:
            self.rect.top = SCREEN_HEIGHT - self.rect.height
        else:
            self.rect.top += self.speed
 
    # 向左移動,需要判斷邊界
    def moveLeft(self):
        if self.rect.left <= 0:
            self.rect.left = 0
        else:
            self.rect.left -= self.speed
 
    # 向右移動,需要判斷邊界
    def moveRight(self):
        if self.rect.left >= SCREEN_WIDTH - self.rect.width:
            self.rect.left = SCREEN_WIDTH - self.rect.width
        else:
            self.rect.left += self.speed

創(chuàng)建敵機(jī)類:

class Enemy(pygame.sprite.Sprite):
    def __init__(self, enemy_img, enemy_down_imgs, init_pos):
        pygame.sprite.Sprite.__init__(self)
        self.image = enemy_img
        self.rect = self.image.get_rect()
        self.rect.topleft = init_pos
        self.down_imgs = enemy_down_imgs
        self.speed = 2
        self.down_index = 0
 
    # 敵機(jī)移動,邊界判斷及刪除在游戲主循環(huán)里處理
    def move(self):
        self.rect.top += self.speed

繪制游戲結(jié)束背景:

 screen.blit(game_over, (0, 0))
    # 游戲 Game Over 后顯示最終得分
    font = pygame.font.Font(None, 48)
    text = font.render('Score: ' + str(score), True, (255, 255, 255))
    text_rect = text.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.centery = screen.get_rect().centery + 24
    screen.blit(text, text_rect)
    # 使用系統(tǒng)字體
    xtfont = pygame.font.SysFont('SimHei', 30)
    # 重新開始按鈕
    textstart = xtfont.render('重新開始 ', True, (255, 255, 255))
    text_rect = textstart.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.centery = screen.get_rect().centery + 120
    screen.blit(textstart, text_rect)
    # 排行榜按鈕
    textstart = xtfont.render('排行榜 ', True, (255, 255, 255))
    text_rect = textstart.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.centery = screen.get_rect().centery + 180
    screen.blit(textstart, text_rect)

效果如下:

排行榜設(shè)置界面等:

ef gameRanking():
    screen2 = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
    # 繪制背景
    screen2.fill(0)
    screen2.blit(background, (0, 0))
    # 使用系統(tǒng)字體
    xtfont = pygame.font.SysFont('SimHei', 30)
    # 重新開始按鈕
    textstart = xtfont.render('排行榜 ', True, (255, 0, 0))
    text_rect = textstart.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.centery = 50
    screen.blit(textstart, text_rect)
    # 重新開始按鈕
    textstart = xtfont.render('重新開始 ', True, (255, 0, 0))
    text_rect = textstart.get_rect()
    text_rect.centerx = screen.get_rect().centerx
    text_rect.centery = screen.get_rect().centery + 120
    screen2.blit(textstart, text_rect)
    # 獲取排行文檔內(nèi)容
    arrayscore = read_txt(r'score.txt')[0].split('mr')
    # 循環(huán)排行榜文件顯示排行
    for i in range(0, len(arrayscore)):
        # 游戲 Game Over 后顯示最終得分
        font = pygame.font.Font(None, 48)
        # 排名重1到10
        k=i+1
        text = font.render(str(k) +"  " +arrayscore[i], True, (255, 0, 0))
        text_rect = text.get_rect()
        text_rect.centerx = screen2.get_rect().centerx
        text_rect.centery = 80 + 30*k
        # 繪制分?jǐn)?shù)內(nèi)容
        screen2.blit(text, text_rect)

效果如下:

​好啦!代碼的話很多,展示部分代碼結(jié)構(gòu)跟效果的哦!

往下看總效果:

​​總結(jié)

飛機(jī)大冒險(xiǎn)正式開始!起飛吧~

到此這篇關(guān)于Pygame實(shí)戰(zhàn)練習(xí)之飛機(jī)大戰(zhàn)游戲的文章就介紹到這了,更多相關(guān)Pygame 飛機(jī)大戰(zhàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中讀取文件名中的數(shù)字的實(shí)例詳解

    Python中讀取文件名中的數(shù)字的實(shí)例詳解

    在本篇文章里小編給大家整理了一篇關(guān)于Python中讀取文件名中的數(shù)字的實(shí)例詳解內(nèi)容,有興趣的朋友們可以參考下。
    2020-12-12
  • python寫的ARP攻擊代碼實(shí)例

    python寫的ARP攻擊代碼實(shí)例

    這篇文章主要介紹了python寫的ARP攻擊代碼實(shí)例,需要的朋友可以參考下
    2014-06-06
  • python os模塊和fnmatch模塊的使用介紹

    python os模塊和fnmatch模塊的使用介紹

    這篇文章主要介紹了python os模塊和fnmatch模塊的使用介紹,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python實(shí)例練習(xí)逆序輸出字符串講解

    Python實(shí)例練習(xí)逆序輸出字符串講解

    今天小編就為大家分享一篇關(guān)于Python字符串逆序輸出的實(shí)例講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2022-05-05
  • 解決python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題

    解決python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題

    這篇文章主要介紹了python繪圖使用subplots出現(xiàn)標(biāo)題重疊的問題及解決方法,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python庫-dotenv包?及?.env配置文件詳解

    python庫-dotenv包?及?.env配置文件詳解

    python-dotenv 能將配置文件的配置信息自動加入到環(huán)境變量。 python-dotenv解決了代碼與敏感信息的分離,這篇文章主要介紹了python庫-dotenv包?|?.env配置文件,需要的朋友可以參考下
    2022-08-08
  • Python實(shí)現(xiàn)Markdown格式消除工具

    Python實(shí)現(xiàn)Markdown格式消除工具

    這篇文章主要為大家詳細(xì)介紹了如何使用?Python?和?PyQt5?庫來創(chuàng)建一個(gè)簡單易用的?Markdown?格式消除工具,并且支持實(shí)時(shí)預(yù)覽和文件保存功能,需要的可以了解下
    2025-02-02
  • Python的turtle繪圖庫使用基礎(chǔ)

    Python的turtle繪圖庫使用基礎(chǔ)

    turtle庫是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫,想象一個(gè)小烏龜,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形,需要的朋友可以參考下
    2023-04-04
  • python中使用正則表達(dá)式的方法詳解

    python中使用正則表達(dá)式的方法詳解

    這篇文章主要為大家詳細(xì)介紹了python中使用正則表達(dá)式的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 如何學(xué)習(xí)Python time模塊

    如何學(xué)習(xí)Python time模塊

    在本篇文章里小編給大家分享的是關(guān)于Python time模塊知識點(diǎn)及用法,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06

最新評論

应用必备| 千阳县| 潍坊市| 扶余县| 皋兰县| 周至县| 平邑县| 西吉县| 武强县| 龙泉市| 池州市| 绥中县| 隆化县| 顺义区| 体育| 麦盖提县| 静宁县| 石泉县| 陕西省| 光山县| 永嘉县| 珲春市| 曲沃县| 德阳市| 绍兴市| 绥德县| 黎平县| 常山县| 崇左市| 永和县| 常宁市| 平乡县| 兴化市| 柳江县| 新平| 响水县| 会东县| 南岸区| 枣庄市| 十堰市| 财经|