導航:首頁 > 編程語言 > python飛機大戰實踐結果

python飛機大戰實踐結果

發布時間:2023-09-10 07:43:54

『壹』 python基礎教程

你可以看黑馬程序員Python入門教程:
教程學習時間15天

1-3天內容:為Linux基礎命令

4-13天內容:為Python基礎教程14-15 天內容:為飛機大戰項目演練

第一階段(1-3天):

該階段首先通過介紹不同領域的三種操作系統,操作系統的發展簡史以及Linux系統的文件目錄結構讓大家對Linux系統有一個簡單的認識,同時知道為什麼要學習Linux命令。然後我們會正式學習Linux命令

1. 文件和目錄命令:ls,cd,touch,mkdir,rm

2. 拷貝和移動命令:tree,cp,mv

3. 文件內容命令:cat,more,grep

4. 遠程管理命令:ifconfig,ping,SSH的工作方式簡介以及ssh命令

5. 用戶許可權及用戶管理命令:chmod,chgrp,useradd,passwd,userdel

6. 軟體安裝及壓縮命令:apt簡介及命令,tar,gzip壓縮命令,bzip2壓縮命令

7. vim的基本使用

第二階段(4-10天)

該階段我們正式進入Python這門語言的學習,首先通過了解Python語言的起源,Python語言的設計目標,Python語言的設計哲學,Python語言的優缺點和面向對象的基本概念,以及Python語言的執行方式,還有Python集成開發環境PyCharm的使用為我們接下來的學習做鋪墊。

然後我們會學習int,string,float三種簡單的變數類型,變數間的計算,變數的輸入輸出,if判斷語句,while循環語句,for循環語句,break和continue的使用,函數的基本使用,模塊的使用,列表,元組,字典三種高級變數,字元串的常用操作。

接下來我們會通過一個名片管理系統的案例,把這一階段的知識進行一個串聯。在學習名片管理系統時,首先我們會學習怎麼去搭建這一系統的框架,然後我們會分別實現新增名片,顯示全部名片,查詢名片,刪除名片,修改名片這些功能。

最後我們會學習語法的進階內容,全局變數,局部變數,可變數據類型和不可變數據類型以及函數返回多個值,函數的預設參數,多值參數,遞歸的基本使用。

第三階段(11-13天)

該階段我們會學習面向對象(OOP)這一重要的編程思想,首先學習的知識點有類和對象的基本概念,dir函數,self的作用,初始化方法__init__,內置函數__str__,__del__,單繼承,方法重寫,私有屬性和方法,多繼承,多態,類屬性,靜態方法。

然後我們還會學習單例模式這一設計模式,異常的捕獲,異常的拋出,from import局部導入,from import導入同名工具, from import導入所有工具,包的使用,製作模塊,pip的使用以及文件的相關操作。

第四階段(14-15天)

該階段是項目演練階段,我們會帶領大家通過使用之前學習過的知識開發飛機大戰這一經典游戲,項目中分別有游戲窗口,圖像繪制,游戲循環,事件監聽,精靈和精靈組以及創建敵機,創建英雄和發射子彈,碰撞檢測等模塊

『貳』 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飛機大戰

載入pygame後需要再寫一段 pygame.init()才能啟用pygame

『肆』 怎麼用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

『伍』 如何為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 Proctions - 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 Proctions - 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飛機大戰實踐結果相關的資料

熱點內容
java的webxml配置 瀏覽:957
如何封包遠程注入伺服器 瀏覽:860
監測機構資金動向源碼 瀏覽:961
android狀態欄字體50 瀏覽:763
python如何判斷文件後綴 瀏覽:125
龍空app哪裡下 瀏覽:348
阿里雲伺服器搭建網盤 瀏覽:689
京東軟體程序員 瀏覽:805
php游戲伺服器框架 瀏覽:391
導航開發演算法 瀏覽:430
為什麼30歲還想轉行程序員 瀏覽:380
推薦演算法的使用 瀏覽:40
javaswing表格 瀏覽:470
sql和python處理excel 瀏覽:107
家用材料製作解壓玩具 瀏覽:912
c盤解壓失敗可以用空間嗎 瀏覽:466
3d循環音樂哪個app好 瀏覽:769
壓縮文件zip怎麼解壓不了 瀏覽:392
如何看蘋果appstore軟體是否收費 瀏覽:463
android發送字元串 瀏覽:13