日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python项目飞机大战

發布時間:2025/3/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python项目飞机大战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現步驟

1.創建窗口

2.創建一個玩家飛機,按方向鍵可以左右移動

3.給玩家飛機添加按空格鍵發射子彈功能

4.創建一個敵機

5.敵機自動左右移動

6.敵機自動發射子彈


1.創建窗口

import pygame import timedef main():#1.創建窗口screen = pygame.display.set_mode((480,852))#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')while True:#3 顯示到屏幕screen.blit(background,(0,0))pygame.display.update()time.sleep(0.05)if __name__ == '__main__':main()

2.顯示玩家飛機,檢測鍵盤,控制飛機左右移動

import pygame import time from pygame.locals import *class HeroPlane(object):def __init__(self,screen_temp):self.x = 210self.y = 700 self.screen = screen_temp #游戲窗口self.image = pygame.image.load('feiji/hero1.png') def display(self):self.screen.blit(self.image,(self.x,self.y)) #加載玩家飛機到窗口def move_left(self):self.x -= 5def move_right(self):self.x += 5def key_control(hero_temp):# 獲取事件,比如按鍵等for event in pygame.event.get():# 判斷是否是點擊了退出按鈕if event.type == QUIT:print("exit")exit()# 判斷是否是按下了鍵elif event.type == KEYDOWN:# 檢測按鍵是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.move_left()# 檢測按鍵是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.move_right()# 檢測按鍵是否是空格鍵elif event.key == K_SPACE:print('space') def main():#1.創建窗口screen = pygame.display.set_mode((480,852),0,0)#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')# 創建一個飛機對象hero = HeroPlane(screen)while True:#把背景圖片放到窗口顯示screen.blit(background,(0,0))#顯示玩家飛機到定義的(x,y)坐標位置hero.display()pygame.display.update()#檢測鍵盤,控制玩家飛機移動key_control(hero)time.sleep(0.05)if __name__ == '__main__':main()

3.玩家發射子彈

import pygame import time from pygame.locals import *class HeroPlane(object):def __init__(self,screen_temp):self.x = 210self.y = 700self.screen = screen_temp #游戲窗口self.image = pygame.image.load('feiji/hero1.png')self.bullet_list = [] #存儲發射出去的子彈def display(self):# 加載玩家飛機到窗口self.screen.blit(self.image,(self.x,self.y))for bullet in self.bullet_list:bullet.display()bullet.move()def move_left(self):self.x -= 5def move_right(self):self.x += 5def fire(self):self.bullet_list.append(Bullet(self.screen,self.x,self.y))class Bullet(object):def __init__(self,screen_temp,x,y):self.x = x + 40self.y = y - 20self.screen = screen_tempself.image = pygame.image.load('feiji/bullet.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y -= 20def key_control(hero_temp):# 獲取事件,比如按鍵等for event in pygame.event.get():# 判斷是否是點擊了退出按鈕if event.type == QUIT:print("exit")exit()# 判斷是否是按下了鍵elif event.type == KEYDOWN:# 檢測按鍵是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.move_left()# 檢測按鍵是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.move_right()# 檢測按鍵是否是空格鍵elif event.key == K_SPACE:print('space')hero_temp.fire() def main():#1.創建窗口screen = pygame.display.set_mode((480,852),0,0)#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')# 創建一個飛機對象hero = HeroPlane(screen)while True:#把背景圖片放到窗口顯示screen.blit(background,(0,0))#顯示玩家飛機到定義的(x,y)坐標位置hero.display()pygame.display.update()#檢測鍵盤,控制玩家飛機移動key_control(hero)time.sleep(0.05)if __name__ == '__main__':main()

效果如下:

?4.創建一個敵機

--snip-- class EnemyPlane(object):def __init__(self,screen_temp):self.x = 0self.y = 0self.screen = screen_tempself.image = pygame.image.load('feiji/enemy0.png')def display(self):self.screen.blit(self.image,(self.x,self.y))--snip--def main():--snip--#4 創建一個敵機enemy = EnemyPlane(screen)while True:--snip--enemy.display()--snip

5.控制敵機左右移動

--snip-- class EnemyPlane(object):def __init__(self,screen_temp):--snip--self.direction = 'right' #定義敵機默認往右移動--snip--def move(self):if self.direction == 'right':self.x += 8elif self.direction == 'left':self.x -= 8if self.x > 430:self.direction = 'left'elif self.x < 0:self.direction = 'right' --snip--def main():--snip--#4 創建一個敵機enemy = EnemyPlane(screen)enemy.move()--snip-- import pygame import time from pygame.locals import *class HeroPlane(object):def __init__(self,screen_temp):self.x = 210self.y = 700self.screen = screen_temp #游戲窗口self.image = pygame.image.load('feiji/hero1.png')self.bullet_list = [] #存儲發射出去的子彈def display(self):# 加載玩家飛機到窗口self.screen.blit(self.image,(self.x,self.y))for bullet in self.bullet_list:bullet.display()bullet.move()def move_left(self):self.x -= 5def move_right(self):self.x += 5def fire(self):self.bullet_list.append(Bullet(self.screen,self.x,self.y))class EnemyPlane(object):def __init__(self,screen_temp):self.x = 0self.y = 0self.screen = screen_tempself.image = pygame.image.load('feiji/enemy0.png')self.direction = 'right' #定義敵機默認往右移動def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):if self.direction == 'right':self.x += 8elif self.direction == 'left':self.x -= 8if self.x > 430:self.direction = 'left'elif self.x < 0:self.direction = 'right'class Bullet(object):def __init__(self,screen_temp,x,y):self.x = x + 40self.y = y - 20self.screen = screen_tempself.image = pygame.image.load('feiji/bullet.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y -= 20def key_control(hero_temp):# 獲取事件,比如按鍵等for event in pygame.event.get():# 判斷是否是點擊了退出按鈕if event.type == QUIT:print("exit")exit()# 判斷是否是按下了鍵elif event.type == KEYDOWN:# 檢測按鍵是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.move_left()# 檢測按鍵是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.move_right()# 檢測按鍵是否是空格鍵elif event.key == K_SPACE:print('space')hero_temp.fire() def main():#1.創建窗口screen = pygame.display.set_mode((480,852),0,0)#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')#3 創建一個飛機對象hero = HeroPlane(screen)#4 創建一個敵機enemy = EnemyPlane(screen)while True:#把背景圖片放到窗口顯示screen.blit(background,(0,0))#顯示玩家飛機到定義的(x,y)坐標位置hero.display()enemy.display()enemy.move()pygame.display.update()#檢測鍵盤,控制玩家飛機移動key_control(hero)time.sleep(0.05)if __name__ == '__main__':main() 完整代碼

6.刪除子彈,只要發射出去的子彈超過邊界就刪掉

--snip-- class HeroPlane(object):--snip----snip--bullet.move()if bullet.judge(): #判斷子彈是否越界self.bullet_list.remove(bullet) --snip--class Bullet(object):--sinp--def judge(self):if self.y < 0:return Trueelse:return False--snip import pygame import time from pygame.locals import *class HeroPlane(object):def __init__(self,screen_temp):self.x = 210self.y = 700self.screen = screen_temp #游戲窗口self.image = pygame.image.load('feiji/hero1.png')self.bullet_list = [] #存儲發射出去的子彈def display(self):# 加載玩家飛機到窗口self.screen.blit(self.image,(self.x,self.y))for bullet in self.bullet_list:bullet.display()bullet.move()if bullet.judge(): #判斷子彈是否越界self.bullet_list.remove(bullet)def move_left(self):self.x -= 5def move_right(self):self.x += 5def fire(self):self.bullet_list.append(Bullet(self.screen,self.x,self.y))class EnemyPlane(object):def __init__(self,screen_temp):self.x = 0self.y = 0self.screen = screen_tempself.image = pygame.image.load('feiji/enemy0.png')self.direction = 'right' #定義敵機默認往右移動def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):if self.direction == 'right':self.x += 8elif self.direction == 'left':self.x -= 8if self.x > 430:self.direction = 'left'elif self.x < 0:self.direction = 'right'class Bullet(object):def __init__(self,screen_temp,x,y):self.x = x + 40self.y = y - 20self.screen = screen_tempself.image = pygame.image.load('feiji/bullet.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y -= 20def judge(self):if self.y < 200:return Trueelse:return Falsedef key_control(hero_temp):# 獲取事件,比如按鍵等for event in pygame.event.get():# 判斷是否是點擊了退出按鈕if event.type == QUIT:print("exit")exit()# 判斷是否是按下了鍵elif event.type == KEYDOWN:# 檢測按鍵是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.move_left()# 檢測按鍵是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.move_right()# 檢測按鍵是否是空格鍵elif event.key == K_SPACE:print('space')hero_temp.fire() def main():#1.創建窗口screen = pygame.display.set_mode((480,852),0,0)#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')#3 創建一個飛機對象hero = HeroPlane(screen)#4 創建一個敵機enemy = EnemyPlane(screen)while True:#把背景圖片放到窗口顯示screen.blit(background,(0,0))#顯示玩家飛機到定義的(x,y)坐標位置hero.display()enemy.display()enemy.move()pygame.display.update()#檢測鍵盤,控制玩家飛機移動key_control(hero)time.sleep(0.05)if __name__ == '__main__':main() 完整代碼

7.添加敵機放射子彈功能

使用random來控制敵機發射子彈的頻率

--snip-- import randomclass EnemyPlane(object):--snip - -self.bullet_list = [] #存儲發射出去的子彈self.direction = 'right' #定義敵機默認往右移動def display(self):--snip - -bullet.move()if bullet.judge(): #判斷子彈是否越界self.bullet_list.remove(bullet)--snip--def fire(self):#控制子彈頻率random_num = random.randint(1,80)if random_num == 10 or random_num == 40:self.bullet_list.append(EnemyBullet(self.screen,self.x,self.y)) --snip--class EnemyBullet(object):def __init__(self,screen_temp,x,y):self.x = x + 25self.y = y + 40self.screen = screen_tempself.image = pygame.image.load('feiji/bullet1.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y += 10def judge(self):if self.y > 852:return Trueelse:return False--snip - -while True:--snip - -enemy.move()enemy.fire()--snip-- import pygame import time from pygame.locals import * import randomclass HeroPlane(object):def __init__(self,screen_temp):self.x = 210self.y = 700self.screen = screen_temp #游戲窗口self.image = pygame.image.load('feiji/hero1.png')self.bullet_list = [] #存儲發射出去的子彈def display(self):# 加載玩家飛機到窗口self.screen.blit(self.image,(self.x,self.y))for bullet in self.bullet_list:bullet.display()bullet.move()if bullet.judge(): #判斷子彈是否越界self.bullet_list.remove(bullet)def move_left(self):self.x -= 5def move_right(self):self.x += 5def fire(self):self.bullet_list.append(Bullet(self.screen,self.x,self.y))class EnemyPlane(object):def __init__(self,screen_temp):self.x = 0self.y = 0self.screen = screen_tempself.image = pygame.image.load('feiji/enemy0.png')self.bullet_list = [] #存儲發射出去的子彈self.direction = 'right' #定義敵機默認往右移動def display(self):self.screen.blit(self.image,(self.x,self.y))for bullet in self.bullet_list:bullet.display()bullet.move()if bullet.judge(): #判斷子彈是否越界self.bullet_list.remove(bullet)def move(self):if self.direction == 'right':self.x += 8elif self.direction == 'left':self.x -= 8if self.x > 430:self.direction = 'left'elif self.x < 0:self.direction = 'right'def fire(self):random_num = random.randint(1,80)if random_num == 10 or random_num == 40:self.bullet_list.append(EnemyBullet(self.screen,self.x,self.y))class Bullet(object):def __init__(self,screen_temp,x,y):self.x = x + 40self.y = y - 20self.screen = screen_tempself.image = pygame.image.load('feiji/bullet.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y -= 20def judge(self):if self.y < 0:return Trueelse:return Falseclass EnemyBullet(object):def __init__(self,screen_temp,x,y):self.x = x + 25self.y = y + 40self.screen = screen_tempself.image = pygame.image.load('feiji/bullet1.png')def display(self):self.screen.blit(self.image,(self.x,self.y))def move(self):self.y += 10def judge(self):if self.y > 852:return Trueelse:return Falsedef key_control(hero_temp):# 獲取事件,比如按鍵等for event in pygame.event.get():# 判斷是否是點擊了退出按鈕if event.type == QUIT:print("exit")exit()# 判斷是否是按下了鍵elif event.type == KEYDOWN:# 檢測按鍵是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.move_left()# 檢測按鍵是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.move_right()# 檢測按鍵是否是空格鍵elif event.key == K_SPACE:print('space')hero_temp.fire()def main():#1.創建窗口screen = pygame.display.set_mode((480,852),0,0)#2 創建一個背景圖片background = pygame.image.load('./feiji/background.png')#3 創建一個飛機對象hero = HeroPlane(screen)#4 創建一個敵機enemy = EnemyPlane(screen)while True:#把背景圖片放到窗口顯示screen.blit(background,(0,0))#顯示玩家飛機到定義的(x,y)坐標位置hero.display()enemy.display()enemy.move()enemy.fire()pygame.display.update()#檢測鍵盤,控制玩家飛機移動key_control(hero)time.sleep(0.05)if __name__ == '__main__':main() 完整代碼

最終效果

?8.優化代碼,創建基類

1 import pygame2 import time3 from pygame.locals import *4 import random5 6 class BasePlane(object):7 '''飛機類'''8 def __init__(self,screen_temp,x,y,image_name):9 self.x = x10 self.y = y11 self.screen = screen_temp #游戲窗口12 self.image = pygame.image.load(image_name)13 self.bullet_list = [] #存儲發射出去的子彈14 15 def display(self):16 # 加載飛機到窗口17 self.screen.blit(self.image,(self.x,self.y))18 #控制子彈19 for bullet in self.bullet_list:20 bullet.display()21 bullet.move()22 if bullet.judge(): #判斷子彈是否越界23 self.bullet_list.remove(bullet)24 25 class HeroPlane(BasePlane):26 '''玩家飛機'''27 def __init__(self,screen_temp):28 BasePlane.__init__(self,screen_temp,210,700,'feiji/hero1.png')29 30 def move_left(self):31 self.x -= 532 33 def move_right(self):34 self.x += 535 36 def fire(self):37 #發射子彈38 self.bullet_list.append(Bullet(self.screen,self.x,self.y))39 40 class EnemyPlane(BasePlane):41 '''敵方飛機'''42 def __init__(self, screen_temp):43 BasePlane.__init__(self, screen_temp, 0, 0, 'feiji/enemy0.png')44 self.direction = 'right' #定義敵機默認往右移動45 46 def move(self):47 if self.direction == 'right':48 self.x += 849 elif self.direction == 'left':50 self.x -= 851 52 if self.x > 430:53 self.direction = 'left'54 elif self.x < 0:55 self.direction = 'right'56 57 def fire(self):58 # 發射子彈59 random_num = random.randint(1,50)60 if random_num == 10 or random_num == 40:61 self.bullet_list.append(EnemyBullet(self.screen,self.x,self.y))62 63 class BaseBullet(object):64 '''子彈類'''65 def __init__(self,screen_temp,x,y,image_name):66 self.x = x67 self.y = y68 self.screen = screen_temp69 self.image = pygame.image.load(image_name)70 71 def display(self):72 self.screen.blit(self.image,(self.x,self.y))73 74 class Bullet(BaseBullet):75 '''玩家子彈'''76 def __init__(self,screen_temp,x,y):77 BaseBullet.__init__(self,screen_temp,x+40,y-20,'feiji/bullet.png')78 79 def move(self):80 self.y -= 2081 82 def judge(self):83 if self.y < 0:84 return True85 else:86 return False87 88 class EnemyBullet(BaseBullet):89 '''敵機子彈'''90 def __init__(self,screen_temp,x,y):91 BaseBullet.__init__(self, screen_temp, x + 25, y + 40, 'feiji/bullet1.png')92 93 def move(self):94 self.y += 1095 96 def judge(self):97 if self.y > 852:98 return True99 else: 100 return False 101 102 def key_control(hero_temp): 103 # 獲取事件,比如按鍵等 104 for event in pygame.event.get(): 105 # 判斷是否是點擊了退出按鈕 106 if event.type == QUIT: 107 print("exit") 108 exit() 109 # 判斷是否是按下了鍵 110 elif event.type == KEYDOWN: 111 # 檢測按鍵是否是a或者left 112 if event.key == K_a or event.key == K_LEFT: 113 print('left') 114 hero_temp.move_left() 115 116 # 檢測按鍵是否是d或者right 117 elif event.key == K_d or event.key == K_RIGHT: 118 print('right') 119 hero_temp.move_right() 120 # 檢測按鍵是否是空格鍵 121 elif event.key == K_SPACE: 122 print('space') 123 hero_temp.fire() 124 125 def main(): 126 #1.創建窗口 127 screen = pygame.display.set_mode((480,852),0,0) 128 #2 創建一個背景圖片 129 background = pygame.image.load('./feiji/background.png') 130 #3 創建一個飛機對象 131 hero = HeroPlane(screen) 132 #4 創建一個敵機對象 133 enemy = EnemyPlane(screen) 134 135 while True: 136 #把背景圖片放到窗口顯示 137 screen.blit(background,(0,0)) 138 #顯示玩家飛機到定義的(x,y)坐標位置 139 hero.display() #顯示玩家飛機 140 enemy.display() #顯示敵機 141 enemy.move() #玩家飛機移動 142 enemy.fire() #玩家飛機發射子彈 143 pygame.display.update() #刷新 144 #檢測鍵盤,控制玩家飛機移動 145 key_control(hero) 146 time.sleep(0.05) 147 148 if __name__ == '__main__': 149 main()

?

轉載于:https://www.cnblogs.com/Jansens520/p/8469899.html

總結

以上是生活随笔為你收集整理的python项目飞机大战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男插女青青影院 | 国产喷水视频 | 在线免费观看a视频 | 四季av一区二区三区免费观看 | 欧美一区二区三 | 日韩国产一区二区三区 | 欧美成人一区二区三区四区 | 欧美日韩中文字幕一区二区三区 | 日韩熟女一区二区 | 日本欧美国产 | 国产精品视频www | 亚洲成人动漫在线观看 | 男人天堂影院 | 色av一区二区 | 奇米影视一区二区 | 在线观看一区二区三区四区 | 国产综合视频在线观看 | 久久视频国产 | 奶波霸巨乳一二三区乳 | 欧美性猛交99久久久久99按摩 | 久久久久久无码精品人妻一区二区 | 男人天堂a在线 | 久久99精品国产麻豆婷婷 | 青娱乐国产盛宴 | 免费精品在线观看 | 美女100%无挡 | 国产在线青青草 | 黄色网页免费 | 欧美亚洲大片 | 黄色av网址大全 | 国产精品jizz | 亚洲久草| 亚洲精品福利在线 | 中文字幕一区二区三区人妻四季 | 日韩人妻无码精品久久久不卡 | 91麻豆网 | 日本黄频 | 男人的天堂一区二区 | 久久久一本 | 久久综合色婷婷 | 日韩av一卡二卡 | 52av在线| 精品久久久久久久久久久久久久久久久久 | 在线免费中文字幕 | 宅男在线视频 | 欧美一区二区大片 | 精品无码国产av一区二区三区 | 欧美性猛交xxx乱大交3蜜桃 | 女生裸体无遮挡 | 手机看片日韩国产 | 欧美大浪妇猛交饥渴大叫 | 狠狠干成人 | 亚洲女人被黑人巨大进入 | 自拍 偷拍 欧美 | 老师上课夹震蛋高潮了 | 国产免费a视频 | 毛片视频软件 | 一区免费 | 亚洲乱码国产乱码精品精大量 | 色黄大色黄女片免费中国 | 囯产精品一品二区三区 | 偷拍xxxx| 精品人人妻人人澡人人爽牛牛 | 中文字幕亚洲精品在线 | 亚洲一区二区在线免费 | 成人免费黄色大片v266 | 狠狠人妻久久久久久综合蜜桃 | 色不卡| 捆绑凌虐一区二区三区 | 国产精品乱码久久久 | 毛片无码免费无码播放 | 伊人影音| 精品动漫3d一区二区三区免费版 | 色88久久久久高潮综合影院 | 亚洲一区不卡 | 制服丝袜av一区二区三区下载 | 西野翔夫の目の前で犯在线 | 深夜福利在线免费观看 | 国产又粗又猛视频 | 国产精品女同 | 精品一卡二卡 | 丁香久久婷婷 | 麻豆自拍偷拍 | 麻豆导航| 四虎国产成人精品免费一女五男 | 日本色呦呦 | 一级黄色片在线播放 | 日本中文字幕观看 | 国产黄a三级三级三级看三级男男 | 免费激情 | 一本久久综合 | 一级做a爱片性色毛片 | 亚洲精品国产精品国自产观看 | 中文字幕成人av | 国产理论片在线观看 | 日韩国产欧美一区 | 成人在线直播 | 日韩中文在线字幕 | 爱吃波客今天最新视频 |