飛機大戰 簡化版

2021-09-12 04:10:03 字數 4744 閱讀 7694

import pygame

from pygame.locals import *

import random

import time

class herobullet():

def __init__(self,x,y,windows):

self.x=x

self.y=y

self.windows=windows

self.pic=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\bullet.png')

def draw(self):

self.windows.blit(self.pic,(self.x,self.y))

self.move()

def move(self):

self.y=self.y-5

class dijibullet():

def __init__(self,x,y,windows):

self.x=x

self.y=y

self.windows=windows

self.pic=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\bullet1.png')

def draw(self):

self.windows.blit(self.pic,(self.x,self.y))

self.move()

def move(self):

self.y+=5

windows=pygame.display.set_mode((480,650),0,32)#建立視窗 0,32 為固定值

beijingtu=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\1.png')#匯入背景圖

pygame.display.set_caption('飛機大戰(小小爭520)')#給視窗命名

icon=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\liuzheng.png')#左上角可更改

pygame.display.set_icon(icon)#顯示背景圖

heroplane1=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\hero1.png')#匯入我方戰機

heroplane2=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\hero2.png')#為了使我方戰機能夠動態展示,再次匯入一次其它相同戰機

dijiplane=pygame.image.load('d:\\desktop\\it研究院-python\\new_stydy\\img\\666.png')#匯入敵方戰機

dijiplanelist=['d:\\desktop\\it研究院-python\\new_stydy\\img\\enemy1_down1.png',

'd:\\desktop\\it研究院-python\\new_stydy\\img\\enemy1_down2.png',

'd:\\desktop\\it研究院-python\\new_stydy\\img\\enemy1_down3.png',

'd:\\desktop\\it研究院-python\\new_stydy\\img\\enemy1_down4.png'

] #將敵方戰機消滅動態放在敵方戰機列表裡,分別顯示4個不同狀態

pygame.key.set_repeat(50,10)#為了能夠使按鍵持續按動

heroplanex=190#我方戰機在x軸座標 從左上角開始

heroplaney=526#我方戰機在y軸座標

heroindexshift=0#切換**用來顯示動態效果

dijiplanex=205.5#敵方戰機在x軸座標

dijiplaney=0#敵方戰機在y軸座標

direct='左'#敵方戰機初始值方向 從左開始

biulist=#將我方發出的無數子彈放在乙個列表裡

dijibiulist=#將敵方發出的無數子彈放在乙個列表裡

dijiplanebomb=false #敵方飛機發射子彈開始不發射

dijiplanebombindex=0 #敵方飛機放在列表裡 下標索引 初始值為0

while true:

windows.blit(beijingtu,(0,0))#將背景圖貼到視窗

if heroindexshift==0:#剛要動的時候(動態效果剛開始時)

windows.blit(heroplane1,(heroplanex,heroplaney))

heroindexshift+=1

else:

windows.blit(heroplane2,(heroplanex,heroplaney))

heroindexshift=0

#我方兩架戰機疊加在一起來顯示動態效果,一架飛機不可以顯示動態,當閃動的時候說明疊加在一起

if direct=='左':#調整敵機方向 並不是指從左或右 開始 也可以用1,0表示 此時敵機只有左右移動

dijiplanex-=3#敵方戰機移動三個座標值

if dijiplanex<=0:#當敵機走到左側臨界視窗時,只能往右方向走 相反同理

direct='右'

if direct=='右':

dijiplanex+=3

if dijiplanex>=480-69:#敵機走到右側臨界視窗

direct='左' #此時敵機會折返往左走

if dijiplanebomb == false:#敵機還沒有**

windows.blit(dijiplane,(dijiplanex,dijiplaney))#還是原圖

else:

if dijiplanebombindex==len(dijiplanelist):#否則 敵機**

time.sleep(1)

exit()

pic=pygame.image.load(dijiplanelist[dijiplanebombindex])#4張以匯入的敵機狀態 用來顯示**後的狀態

windows.blit(pic,(dijiplanex,dijiplaney))#敵機**狀態一一顯示出來

dijiplanebombindex+=1# 0,1,2,3 這幾張一一顯示

time.sleep(0.5)#**間隔0.5秒

for biu in biulist:#將我方發射的子彈從子彈庫里提取出來

biu.draw()#將我方子彈畫出來

biulist.remove(biu) if biu.y<0 else '' #當我方發射的子彈到達上邊界時 移除子彈

for biu in dijibiulist:

biu.draw()

dijibiulist.remove(biu) if biu.y>650-69//2 else ''

for event in pygame.event.get():

if event.type==quit:

print('關閉了')

exit()

if event.type == keydown:

if event.key==k_left:

print('向左')

heroplanex=heroplanex-5 if heroplanex>=5 else 0

if event.key==k_right:

print('向右')

heroplanex=heroplanex+5 if heroplanex<=375 else 380

if event.key==k_up:

print('向上')

heroplaney=heroplaney-5 if heroplaney>=5 else 0

if event.key==k_down:

print('向下')

heroplaney=heroplaney+5 if heroplaney<=521 else 526

if event.key==k_space:

onebiu=herobullet(heroplanex+50-11,heroplaney-22,windows)

#對我方戰機方向進行設定 上下左右,不能出邊界 ,呼叫類函式 發射子彈位置在飛機中間:注意子彈也有長寬

x=random.randint(0,100)#

if x==12 or x==29:#讓子彈隨機發射 任意數均可

onebiu=dijibullet(dijiplanex+69//2-9//2,dijiplaney+89,windows)#敵機發射第一課子彈在飛機正中間

dijirect=rect(dijiplanex,dijiplaney,69,69)#敵機看成矩形方便碰撞檢測

for biu in biulist:

biurect=rect(biu.x,biu.y,22,22)#我方子彈看成矩形方便和敵機碰撞檢測

if biurect.colliderect(dijirect):#碰撞檢測

print('**')

dijiplanebomb=true

biulist.remove(biu)

pygame.display.update()

報表製作簡化版

機房收費系統無論是重構還是第一版,都用到了報表,為什麼在乙個系統中要新增報表呢?報表的作用是什麼呢?報表百科。我理解的報表是 向上級報告情況的乙個媒介,沒有固定的格式。之前在專案中,我們真正給企業做過一次報表,是以匯出word的形式生成的,大概格式如圖 這次在自己的 機房收費系統 中設計報表,我使用...

簡化版桶排序

例 讓計算機隨機讀入 5個數然後將這 5個數從大到小輸出 輸入 5 3 5 2 8 輸出 8 5 5 3 2 思路 先申請乙個大小為 11 的陣列 int a 11 現在你已經有了 11 個變數,編號從 a 0 a 10 剛開始,我們將 a 0 a 10 都初始化為 0,表示這些0 10的數字還沒出...

飛機大戰(小鳥版)

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...