飛機可以帶pos機

 新聞資訊2  |   2023-07-26 17:58  |  投稿人:pos機之家

網上有很多關于飛機可以帶pos機,python飛機大戰源代碼的知識,也有很多人為大家解答關于飛機可以帶pos機的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、飛機可以帶pos機

飛機可以帶pos機

具體的代碼:

settings配置

import pygame

class Settings(object):

"""設置常用的屬性"""

def __init__(self):

self.bgImage = pygame.image.load(\'img/background.png\') # 背景圖

self.bgImagewidth="360px",height="auto" />

self.bgImageHeight = self.bgImage.get_rect()[3] # 背景圖高

self.START=pygame.image.load("img/start.png")

self.pause=pygame.image.load("img/pause.png")

self.gameover=pygame.image.load("img/gameover.png")

self.heroImages = ["img/hero.gif",

"img/hero1.png", "img/hero2.png"] # 英雄機圖片

self.airImage = pygame.image.load("img/enemy0.png") # airplane的圖片

self.beeImage = pygame.image.load("img/bee.png") # bee的圖片

self.herobullet=pygame.image.load("img/bullet.png")# 英雄機的子彈

飛行物類

import abc

class FlyingObject(object):

"""飛行物類,基類"""

def __init__(self, screen, x, y, image):

self.screen = screen

self.x = x

self.y = y

self.width="360px",height="auto" />

self.height = image.get_rect()[3]

self.image = image

@abc.abstractmethod

def outOfBounds(self):

"""檢查是否越界"""

pass

@abc.abstractmethod

def step(self):

"""飛行物移動一步"""

pass

def shootBy(self, bullet):

"""檢查當前飛行物是否被子彈bullet(x,y)擊中"""

x1 = self.x

x2 = self.x + self.width="360px",height="auto" />

y1 = self.y

y2 = self.y + self.height

x = bullet.x

y = bullet.y

return x > x1 and x < x2 and y > y1 and y < y2

def blitme(self):

"""打印飛行物"""

self.screen.blit(self.image, (self.x, self.y))

英雄機

from flyingObject import FlyingObject

from bullet import Bullet

import pygame

class Hero(FlyingObject):

"""英雄機"""

index = 2 # 標志位

def __init__(self, screen, images):

# self.screen = screen

self.images = images # 英雄級圖片數組,為Surface實例

image = pygame.image.load(images[0])

x = screen.get_rect().centerx

y = screen.get_rect().bottom

super(Hero,self).__init__(screen,x,y,image)

self.life = 3 # 生命值為3

self.doubleFire = 0 # 初始火力值為0

def isDoubleFire(self):

"""獲取雙倍火力"""

return self.doubleFire

def setDoubleFire(self):

"""設置雙倍火力"""

self.doubleFire = 40

def addDoubleFire(self):

"""增加火力值"""

self.doubleFire += 100

def clearDoubleFire(self):

"""清空火力值"""

self.doubleFire=0

def addLife(self):

"""增命"""

self.life += 1

def sublife(self):

"""減命"""

self.life-=1

def getLife(self):

"""獲取生命值"""

return self.life

def reLife(self):

self.life=3

self.clearDoubleFire()

def outOfBounds(self):

return False

def step(self):

"""動態顯示飛機"""

if(len(self.images) > 0):

Hero.index += 1

Hero.index %= len(self.images)

self.image = pygame.image.load(self.images[int(Hero.index)]) # 切換圖片

def move(self, x, y):

self.x = x - self.width="360px",height="auto" />

self.y = y - self.height / 2

def shoot(self,image):

"""英雄機射擊"""

xStep=int(self.width="360px",height="auto" />

yStep=20

if self.doubleFire>=100:

heroBullet=[Bullet(self.screen,image,self.x+1*xStep,self.y-yStep),Bullet(self.screen,image,self.x+2*xStep,self.y-yStep),Bullet(self.screen,image,self.x+3*xStep,self.y-yStep)]

self.doubleFire-=3

return heroBullet

elif self.doubleFire<100 and self.doubleFire > 0:

heroBullet=[Bullet(self.screen,image,self.x+1*xStep,self.y-yStep),Bullet(self.screen,image,self.x+3*xStep,self.y-yStep)]

self.doubleFire-=2

return heroBullet

else:

heroBullet=[Bullet(self.screen,image,self.x+2*xStep,self.y-yStep)]

return heroBullet

def hit(self,other):

"""英雄機和其他飛機"""

x1=other.x-self.width="360px",height="auto" />

x2=other.x+self.width="360px",height="auto" />

y1=other.y-self.height/2

y2=other.y+self.height/2+other.height

x=self.x+self.width="360px",height="auto" />

y=self.y+self.height

return x>x1 and x<x2 and y>y1 and y<y2

enemys

import abc

class Enemy(object):

"""敵人,敵人有分數"""

@abc.abstractmethod

def getScore(self):

"""獲得分數"""

pass

award

import abc

class Award(object):

"""獎勵"""

DOUBLE_FIRE = 0

LIFE = 1

@abc.abstractmethod

def gettype(self):

"""獲得獎勵類型"""

pass

if __name__ == \'__main__\':

print(Award.DOUBLE_FIRE)

airplane

import random

from flyingObject import FlyingObject

from enemy import Enemy

class Airplane(FlyingObject, Enemy):

"""普通敵機"""

def __init__(self, screen, image):

x = random.randint(0, screen.get_rect()[2] - 50)

y = -40

super(Airplane, self).__init__(screen, x, y, image)

def getScore(self):

"""獲得的分數"""

return 5

def outOfBounds(self):

"""是否越界"""

return self.y < 715

def step(self):

"""移動"""

self.y += 3 # 移動步數

Bee

import random

from flyingObject import FlyingObject

from award import Award

class Bee(FlyingObject, Award):

def __init__(self, screen, image):

x = random.randint(0, screen.get_rect()[2] - 60)

y = -50

super(Bee, self).__init__(screen, x, y, image)

self.awardType = random.randint(0, 1)

self.index = True

def outOfBounds(self):

"""是否越界"""

return self.y < 715

def step(self):

"""移動"""

if self.x + self.width="360px",height="auto" />

self.index = False

if self.index == True:

self.x += 3

else:

self.x -= 3

self.y += 3 # 移動步數

def getType(self):

return self.awardType

主類

```python

import pygame

import sys

import random

from setting import Settings

from hero import Hero

from airplane import Airplane

from bee import Bee

from enemy import Enemy

from award import Award

START=0

RUNNING=1

PAUSE=2

GAMEOVER=3

state=START

sets = Settings()

screen = pygame.display.set_mode(

(sets.bgImagewidth="360px",height="auto" />

hero=Hero(screen,sets.heroImages)

flyings=[]

bullets=[]

score=0

def hero_blitme():

"""畫英雄機"""

global hero

hero.blitme()

def bullets_blitme():

"""畫子彈"""

for b in bullets:

b.blitme()

def flyings_blitme():

"""畫飛行物"""

global sets

for fly in flyings:

fly.blitme()

def score_blitme():

"""畫分數和生命值"""

pygame.font.init()

fontObj=pygame.font.Font("SIMYOU.TTF", 20) #創建font對象

textSurfaceObj=fontObj.render(u\'生命值:%d\分數:%d\火力值:%d\'%(hero.getLife(),score,hero.isDoubleFire()),False,(135,100,184))

textRectObj=textSurfaceObj.get_rect()

textRectObj.center=(300,40)

screen.blit(textSurfaceObj,textRectObj)

def state_blitme():

"""畫狀態"""

global sets

global state

if state==START:

screen.blit(sets.start, (0,0))

elif state==PAUSE:

screen.blit(sets.pause,(0,0))

elif state== GAMEOVER:

screen.blit(sets.gameover,(0,0))

def blitmes():

"""畫圖"""

hero_blitme()

flyings_blitme()

bullets_blitme()

score_blitme()

state_blitme()

def nextone():

"""生成敵人"""

type=random.randint(0,20)

if type<4:

return Bee(screen,sets.beeImage)

elif type==5:

return Bee(screen,sets.beeImage) #本來準備在寫幾個敵機的,后面沒找到好看的圖片就刪了

else:

return Airplane(screen,sets.airImage)

flyEnteredIndex=0

def enterAction():

"""生成敵人"""

global flyEnteredIndex

flyEnteredIndex+=1

if flyEnteredIndex@==0:

flyingobj=nextOne()

flyings.append(flyingobj)

shootIndex=0

def shootAction():

"""子彈入場,將子彈加到bullets"""

global shootIndex

shootIndex +=1

if shootIndex % 10 ==0:

heroBullet=hero.shoot(sets.heroBullet)

for bb in heroBullet:

bullets.append(bb)

def stepAction():

"""飛行物走一步"""

hero.step()

for flyobj in flyings:

flyobj.step()

global bullets

for b in bullets:

b.step()

def outOfBoundAction():

"""刪除越界的敵人和飛行物"""

global flyings

flyingLives=[]

index=0

for f in flyings:

if f.outOfBounds()==True:

flyingLives.insert(index,f)

index+=1

flyings=flyingLives

index=0

global bullets

bulletsLive=[]

for b in bullets:

if b.outOfBounds()==True:

bulletsLive.insert(index,b)

index+=1

bullets=bulletsLive

j=0

def bangAction():

"""子彈與敵人碰撞"""

for b in bullets:

bang(b)

def bang(b):

"""子彈與敵人碰撞檢測"""

index=-1

for x in range(0,len(flyings)):

f=flyings[x]

if f.shootBy(b):

index=x

break

if index!=-1:

one=flyings[index]

if isinstance(one,Enemy):

global score

score+=one.getScore() # 獲得分數

flyings.remove(one) # 刪除

if isinstance(one,Award):

type=one.getType()

if type==Award.DOUBLE_FIRE:

hero.addDoubleFire()

else:

hero.addLife()

flyings.remove(one)

bullets.remove(b)

def checkGameOverAction():

if isGameOver():

global state

state=GAMEOVER

hero.reLife()

def isGameOver():

for f in flyings:

if hero.hit(f):

hero.sublife()

hero.clearDoubleFire()

flyings.remove(f)

return hero.getLife()<=0

def action():

x, y = pygame.mouse.get_pos()

blitmes() #打印飛行物

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

if event.type == pygame.MOUSEBUTTONDOWN:

flag=pygame.mouse.get_pressed()[0] #左鍵單擊事件

rflag=pygame.mouse.get_pressed()[2] #右鍵單擊事件

global state

if flag==True and (state==START or state==PAUSE):

state=RUNNING

if flag==True and state==GAMEOVER:

state=START

if rflag==True:

state=PAUSE

if state==RUNNING:

hero.move(x,y)

enterAction()

shootAction()

stepAction()

outOfBoundAction()

bangAction()

checkGameOverAction()

def main():

pygame.display.set_caption("飛機大戰")

while True:

screen.blit(sets.bgImage, (0, 0)) # 加載屏幕

action()

pygame.display.update() # 重新繪制屏幕

# time.sleep(0.1) # 過0.01秒執行,減輕對cpu的壓力

if name == \'main\':

main()

```寫這個主要是練習一下python,把基礎打實些。pygame的文本書寫是沒有換行,得在新建一個對象去寫,為了簡單我把文本都書寫在了一行。

以上就是關于飛機可以帶pos機,python飛機大戰源代碼的知識,后面我們會繼續為大家整理關于飛機可以帶pos機的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.www690aa.com/newsone/90293.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。