教你用python實現飛機大戰的簡單介紹

本文目錄一覽:

如何為pygame的飛機大戰增加一個分數排行榜?python

import pygame

from plane_sprites import*

from Background import BackGround

from Enemy import Enemy

from Hero import Hero

from time import sleep

from Bullet import Bullet

class Plane_main(object):

def __init__(self):

print(‘遊戲初始化’)

self.screen = pygame.display.set_mode(SCREEN_RECT.size)

self.clock = pygame.time.Clock()

self.__create_sprites()

pygame.time.set_timer(CREATE_ENEMY_EVENT,1000)

pygame.time.set_timer(HERO_FIRE_EVENT, 500)

self.count = 0

self.score = 0

def __create_sprites(self):

# 背景組

self.back_group = pygame.sprite.Group()

bg1 = BackGround()

bg2 = BackGround(True)

pygame.mixer.init()

pygame.mixer.music.load(“./Capo Productions – Journey 00_00_00-00_00_59.ogg”)

pygame.mixer.music.play(-1)

self.back_group.add(bg1,bg2)

# 敵機組

self.enemy_group = pygame.sprite.Group()

#敵級銷毀組

self.enemy1_down_group=pygame.sprite.Group()

# 英雄組

self.hero_group = pygame.sprite.Group()

self.hero = Hero()

self.hero_group.add(self.hero)

def start_game(self):

pygame.init()

print(“開始遊戲…”)

# pygame.mixer.init()

# pygame.mixer.music.load(“./Capo Productions – Journey 00_00_00-00_00_59.ogg”)

# pygame.mixer.music.play(-1)

# gameIcon = pygame.image.load(“./name.png”)

# pygame.display.set_icon(gameIcon)

while True:

self.count+=1

# 1. 設置刷新幀率

self.clock.tick(10)

# 2. 事件監聽

self.__event_handler()

# 3. 碰撞檢測

self.__check_collide()

# 4. 更新精靈組

self.__update_sprites()

# 5. 更新屏幕顯示

pygame.display.update()

def __event_handler(self):

“””事件監聽”””

for event in pygame.event.get():

if event.type == pygame.QUIT:

Plane_main.__game_over()

elif event.type == CREATE_ENEMY_EVENT:

self.enemy_group.add(Enemy())

elif event.type == HERO_FIRE_EVENT:

self.hero.fire()

keys = pygame.key.get_pressed()

if keys[pygame.K_RIGHT]:

print(‘向右移動’)

self.hero.speed = 5

self.hero.speed1 = 0

elif keys[pygame.K_LEFT]:

print(‘向左移動’)

self.hero.speed = -5

self.hero.speed1 = 0

elif keys[pygame.K_UP]:

print(‘向上移動’)

self.hero.speed1 = -5

self.hero.speed = 0

elif keys[pygame.K_DOWN]:

print(‘向下移動’)

self.hero.speed1= 5

self.hero.speed = 0

else:

self.hero.speed = 0

self.hero.speed1 = 0

if event.type == HERO_FIRE_EVENT:

self.hero.fire()

print(‘發射子彈!!!!!’)

def __check_collide(self):

“””碰撞檢測”””

# 1. 子彈摧毀敵機

enemy_down = pygame.sprite.groupcollide(self.enemy_group, self.hero.bullets,True, True)

enemy1_down_group.add(enemy_down)

# 2. 敵機撞毀英雄

enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)

# 判斷列表時候有內容`

if len(enemies) 0:

sleep(3)

# # 讓英雄犧牲

self.hero.kill()

# 結束遊戲

Plane_main.__game_over()

def __update_sprites(self):

self.back_group.update()

self.back_group.draw(self.screen)

self.enemy_group.update()

self.enemy_group.draw(self.screen)

self.hero_group.update()

self.hero_group.draw(self.screen)

self.hero.bullets.update()

self.hero.bullets.draw(self.screen)

self.drawText(str(self.score),SCREEN_RECT.width – 50,50)

for enemy1_down in enemy1_down_group:

self.screen.blit(enemy1_down_surface[enemy1_down.down_index],enemy1_down.rect)

if self.count % 5 ==0:

enemy1_down.down_index += 1

if enemy1_down.down_index ==3:

# pygame.mixer.music.load(“./baozha.ogg”)

# pygame.mixer.music.play()

self.score+=5

enemy1_down_group.remove(enemy1_down)

print(self.score)

#更新精靈組

# for group in [self.back_group, self.enemy_group, self.hero_group,self.hero.bullets]:

# group.update()

# group.draw(self.screen)

@staticmethod

def __game_over():

“””遊戲結束”””

print(“遊戲結束”)

pygame.quit()

exit()

def drawText(self,text,posx,posy,textHeight=48,fontColor=(0,0,0),backgroundColor=(111,225,1)):

fontObj = pygame.font.Font(‘freesansbold.ttf’,textHeight)

textSurfaceObj = fontObj.render(text,13,fontColor,backgroundColor)

textRectObj = textSurfaceObj.get_rect()

textRectObj.center = (posx,posy)

self.screen.blit(textSurfaceObj,textRectObj)

#判斷當前執行的文件是否是主文件

#如果不是 則if下的代碼不會執行

if __name__ == ‘__main__’:

game = Plane_main()

game.start_game()

如何用用python寫飛機大戰?

import pygame

from settings import Settings

from ship import Ship

import game_functions as gf

from pygame.sprite import Group

def run_game():

# 初始化遊戲並創建一個屏幕對象

pygame.init()

ai_settings = Settings()

screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))

pygame.display.set_caption(“Alien Invasion”)

# 創建一艘飛船

ship = Ship(ai_settings, screen)

# 創建一個用於存儲子彈的編組

bullets = Group()

# 開始遊戲主循環

while True:

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

ship.update()

bullets.update()

gf.update_bullets(ship, bullets)

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

run_game()

python開發飛機大戰外星人遊戲怎麼弄雙人模式

主函數

import pygamefrom settings import Settingsfrom ship import Shipimport game_function as gffrom pygame.sprite import Groupfrom alien import Alienfrom game_stats import GameStatsfrom button import Buttonfrom scoreboard import Scoreboarddef run_game():”””初始化遊戲並創建一個屏幕對象”””pygame.init()ai_settings = Settings()screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))pygame.display.set_caption(“Alien Invasion”)# 創建Play按鈕play_button = Button(ai_settings, screen, “Play”)# 創建一個用於存儲遊戲統計信息的實例, 並創建記分牌stats = GameStats(ai_settings)sb = Scoreboard(ai_settings, screen, stats)# 創建一艘飛船ship = Ship(ai_settings, screen)# 創建一個用於存儲子彈的數組bullets = Group()aliens = Group()# 創建外星人群gf.create_fleet(ai_settings, screen, ship, aliens)# 開始遊戲主循環while True:gf.check_events(ai_settings, screen, stats, play_button, ship, aliens, bullets)if stats.game_active:ship.update()gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens, bullets)gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)gf.update_screen(ai_settings, screen, stats, sb, ship, aliens, bullets, play_button)run_game()

怎麼樣用Python寫飛機大戰遊戲

飛機大戰的遊戲用python寫的很多,百度文庫中也有相應的源碼,自己參考一下吧.

怎麼用python學飛機大戰?

1、我方飛機模塊

import pygame

class MyPlane(pygame.sprite.Sprite):

def __init__(self,bg_size):

pygame.sprite.Sprite.__init__(self)

self.image1 = pygame.image.load(r’E:\learn pygame\image\me1.png’).convert_alpha()

self.image2 = pygame.image.load(r’E:\learn pygame\image\me2.png’).convert_alpha()

self.image3 = pygame.image.load(r’E:\learn pygame\image\me_protect.png’).convert_alpha()

self.destroy_images = []

self.destroy_images.extend([\

pygame.image.load(r’E:\learn pygame\image\me_destroy_1.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\me_destroy_2.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\me_destroy_3.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\me_destroy_4.png’).convert_alpha() \

])

self.rect = self.image1.get_rect()

self.width,self.height = bg_size[0],bg_size[1]

self.rect.left,self.rect.top = (self.width – self.rect.width) // 2,self.height – self.rect.height – 60

self.speed = 10

self.active = True

self.invincible = False

self.mask = pygame.mask.from_surface(self.image1)

def moveUp(self):

if self.rect.top 0:

self.rect.top -= self.speed

else:

self.rect.top = 0

def moveDown(self):

if self.rect.bottom self.height – 30:

self.rect.top += self.speed

else:

self.rect.bottom = self.height – 30

def moveLeft(self):

if self.rect.left 0:

self.rect.left -= self.speed

else:

self.rect.left = 0

def moveRight(self):

if self.rect.right self.width:

self.rect.left += self.speed

else:

self.rect.right = self.width

def reset(self):

self.rect.left,self.rect.top = (self.width – self.rect.width) // 2,self.height – self.rect.height – 30

self.active = True

self.invincible = True

2、敵機與背景動圖模塊

import pygame

from random import *

class SmallEnemy(pygame.sprite.Sprite):

energy = 1

def __init__(self,bg_size):

pygame.sprite.Sprite.__init__(self)

self.image = pygame.image.load(r’E:\learn pygame\image\enemy1.png’).convert_alpha()

self.destroy_images = []

self.destroy_images.extend([\

pygame.image.load(r’E:\learn pygame\image\enemy1_down1.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\enemy1_down2.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\enemy1_down3.png’).convert_alpha(), \

pygame.image.load(r’E:\learn pygame\image\enemy1_down4.png’).convert_alpha() \

])

self.rect = self.image.get_rect()

self.width,self.height = bg_size[0],bg_size[1]

self.speed = 2

self.active = True

self.rect.left,self.rect.top = \

randint(0,self.width – self.rect.width), \

randint(-5 * self.height, 0)

self.mask = pygame.mask.from_surface(self.image)

self.energy = SmallEnemy.energy

self.hit = False

def move(self):

if self.rect.top self.height:

self.rect.top += self.speed

else:

self.reset()

def reset(self):

self.active = True

self.energy = SmallEnemy.energy

self.rect.left,self.rect.top = \

randint(0,self.width – self.rect.width), \

randint(-5 * self.height, 0)

class MidEnemy(pygame.sprite.Sprite):

energy = 4

python怎麼寫飛機大戰?

這個有專門的這個編程代碼複製過去就可以了。在百度裏面搜索。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/275823.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 16:06
下一篇 2024-12-17 16:06

相關推薦

  • Python飛機大戰中文字資源分析

    Python飛機大戰是一款經典的飛行射擊遊戲,在遊戲過程中,玩家需要控制一架飛機不斷消滅敵人,生存到最後。該遊戲使用Python語言編寫,其中涉及到的文字資源對遊戲的整體體驗有重要…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智能,Python都扮演着重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • 2的32次方-1:一個看似簡單卻又複雜的數字

    對於計算機領域的人來說,2的32次方-1(也就是十進制下的4294967295)這個數字並不陌生。它經常被用來表示IPv4地址或者無符號32位整數的最大值。但實際上,這個數字卻包含…

    編程 2025-04-27

發表回復

登錄後才能評論