一、

前置:python3.5、pycharm、pygame(pycharm内安装)

二、工程下载链接

点击下载代码(源码+资源文件)

https://download.csdn.net/download/m0_38078987/10420779

三、描述

1.运行截图

自己把敌机换成灭霸了,还挺有趣

四、源码

import pygame
from pygame.locals import*
import random
#是指游戏屏幕带下
SCREEN_WIDTH=480
SCREEN_HEIGHT=800
#子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self,bullet_img,init_pos):pygame.sprite.Sprite.__init__(self)self.image =bullet_imgself.rect =self.image.get_rect()self.rect.midbottom =init_posself.speed =10def move(self):self.rect.top -= self.speed#2定义一个飞机类
class Player(pygame.sprite.Sprite):def __init__(self,plane_img,player_rect,init_pos):pygame.sprite.Sprite.__init__(self)self.image =[]for i in range(len(player_rect)):self.image.append(plane_img.subsurface(player_rect[i]).convert_alpha())self.bullets = pygame.sprite.Group()self.rect =player_rect[0]#为图片的矩形初始化赋值self.rect.topleft=init_pos#初始化位置self.speed=10#初始化飞机的速度self.img_index=1#初始化图片的索引  1代表第二张图片#发射子弹前提是没被击中self.is_hit =False
#4.发射子弹def shoot(self,bullet_img):bullet =Bullet(bullet_img,self.rect.midtop)self.bullets.add(bullet)def moveUp(self):if self.rect.top <= 0:  # rect.top<=0  飞机不能出去self.rect.top = 0else:self.rect.top -= self.speed  # 飞机距离上边的位置 等于飞机距离x轴-速度def moveDown(self):if self.rect.top >= SCREEN_HEIGHT - self.rect.height:  # 屏幕的高度-飞机的高度self.rect.top = SCREEN_HEIGHT - self.rect.heightelse:self.rect.top += self.speed  # 高度-速度def moveLeft(self):if self.rect.left <= 0:self.rect.left = 0else:self.rect.left -= self.speeddef moveRight(self):if self.rect.left >= SCREEN_WIDTH - self.rect.width:self.rect.left = SCREEN_WIDTH - self.rect.widthelse:self.rect.left += self.speed
#敌机类
class Enemy(pygame.sprite.Sprite):def __init__(self,enemy_img,enemy_down_imgs,init_pos):pygame.sprite.Sprite.__init__(self)self.image =enemy_imgself.rect=self.image.get_rect()self.rect.topleft =init_posself.down_imgs =enemy_down_imgsself.speed=2self.down_index=0def move(self):self.rect.top += self.speed
#初始化pygame
pygame.mixer.init()
pygame.init()#设计游戏界面像素,第一个参数是分辨率  宽480 高800    第二个是标志位   三是色深
#返回值Surface对象   位图的一种
screen=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))#设计游戏的标题
pygame.display.set_caption("飞机大战")#背景音乐
# pygame.mixer.music.load("resources/sound/bullet.mp3")
# pygame.mixer.music.play()
# pygame.mixer.music.load("resources/sound/background.mp3")
# pygame.mixer.music.play()pygame.mixer.music.load("resources/sound/background.mp3")
pygame.mixer.music.set_volume(0.2)
pygame.mixer.music.play(-1)# bullet_sound = pygame.mixer.Sound("resources/sound/surface.mp3")
# bullet_sound.set_volume(0.2)#背景图设计
background=pygame.image.load("resources/image/background.png")
#player图片
plane_img=pygame.image.load("resources/image/shoot.png")
plane_mie=pygame.image.load("resources/image/mieba.png")
game_over=pygame.image.load("resources/image/gameover.png")
#子弹
bullet_rect = pygame.Rect(1004, 987, 9, 21)
bullet_img = plane_img.subsurface(bullet_rect)
#敌机图片
enemy1_rect = pygame.Rect(32, 2, 45, 54)
# enemy1_rect = pygame.Rect(534, 612, 57, 43)
enemy1_img = plane_mie.subsurface(enemy1_rect)enemy1_down_imgs = []
enemy1_down_imgs.append(plane_img.subsurface(pygame.Rect(267, 347, 57, 43)))
enemy1_down_imgs.append(plane_img.subsurface(pygame.Rect(873, 697, 57, 43)))
enemy1_down_imgs.append(plane_img.subsurface(pygame.Rect(267, 296, 57, 43)))
enemy1_down_imgs.append(plane_img.subsurface(pygame.Rect(930, 697, 57, 43)))
enemies1 = pygame.sprite.Group()#截取飞机图片
# pygame.Rect(left,top,width,height) 生成一个Rect对象的位置
# pygame.image的subsurface API接口    根据位置截取截图shoot.png
#player=plane_img.subsurface(pygame.Rect(0,100,102,127))#玩家飞机图  玩家ssssss不同飞机的图片类表
#放飞机的容器player_rect=[]
player_rect.append(pygame.Rect(0,99,102,126))
player_rect.append(pygame.Rect(165,360,102,126))
player_rect.append(pygame.Rect(165, 234, 102, 126))  # 玩家爆炸图片
player_rect.append(pygame.Rect(330, 624, 102, 126))
player_rect.append(pygame.Rect(330, 498, 102, 126))
player_rect.append(pygame.Rect(432, 624, 102, 126))
player_pos=[200,500]
player=Player(plane_img,player_rect,player_pos)
#游戏循环内保持游戏界面的初始化   更新   或者退出等操作
#激毁动画
enemies_down = pygame.sprite.Group()
#初始化游戏射击和移动频率
shoot_frequency=0
score = 0
player_down_index = 15
#敌机的移动频率
enemy_frequency=0
running =True# s = pygame.mixer.Sound("resources/sound/background.mp3")
# pygame.mixer.music.set_volume(0.9)
# s.play()
while running:# 初始化游戏屏幕screen.fill(0)# 将背景图画到界面中   blit  第一个参数是SUbsub对象   第二个是位置screen.blit(background,(0,0))#射击频率key_pressed = pygame.key.get_pressed()if key_pressed[K_SPACE] and shoot_frequency%15==0:bullet_sound = pygame.mixer.Sound("resources/sound/bullet3.wav")pygame.mixer.music.set_volume(0.1)bullet_sound.play()player.shoot(bullet_img)#if key_pressed[k_SPACE]:# if not player.is_hit and shoot_frequency%15==0:#     player.shoot(bullet_img)shoot_frequency +=1if shoot_frequency >=15:shoot_frequency =0if enemy_frequency % 50 == 0:enemy1_pos = [random.randint(0, SCREEN_WIDTH - enemy1_rect.width), 0]enemy1 = Enemy(enemy1_img, enemy1_down_imgs, enemy1_pos)enemies1.add(enemy1)enemy_frequency += 1if enemy_frequency >= 100:enemy_frequency = 0enemies1_down =pygame.sprite.groupcollide(enemies1,player.bullets,1,1)for enemy_down in enemies1_down:enemies_down.add(enemy_down)for enemy in  enemies1:enemy.move()if pygame.sprite.collide_circle(enemy,player):enemies_down.add(enemy)enemies1.remove(enemy)player.is_hit =Truebreakif enemy.rect.top<0:enemies1.remove(enemy)enemies1.draw(screen)#循环我的子弹for bullet in player.bullets:# bullet_sound.play()bullet.move()if bullet.rect.bottom<0:player.bullets.remove(bullet)#将玩家飞机画面中的bilt函数if not player.is_hit:screen.blit(player.image[player.img_index], player.rect)player.img_index = shoot_frequency // 8else:player.img_index=player_down_index//8screen.blit(player.image[player.img_index],player.rect)player_down_index +=1if player_down_index>47:running =Falsefor enemy_down in enemies_down:if enemy_down.down_index ==0:passif enemy_down.down_index>7:enemies_down.remove(enemy_down)score +=100continuescreen.blit(enemy_down.down_imgs[enemy_down.down_index//2],enemy_down.rect)enemy_down.down_index +=1player.bullets.draw(screen)#if player.img_index==0:#   player.img_index =1#else:#   player.img_index =0# 将玩家飞机画到界面中  blit函数#screen.blit(player,[200,500])for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()#更新游戏屏幕#绘图得分score_font =pygame.font.Font(None,36)score_text =score_font.render(str(score),True,(128,128,128))text_rect=score_text.get_rect()text_rect.topleft =[10,10]screen.blit(score_text,text_rect)# 刷新   画图完之后一定要更新pygame.display.update()#获取键盘的事件key_pressed = pygame.key.get_pressed()if key_pressed[K_w] or key_pressed[K_UP]:player.moveUp()if key_pressed[K_s] or key_pressed[K_DOWN]:player.moveDown()if key_pressed[K_a] or key_pressed[K_LEFT]:player.moveLeft()if key_pressed[K_d] or key_pressed[K_RIGHT]:player.moveRight()#游戏的退出时间#最终得分
pygame.mixer.music.stop()
font = pygame.font.Font(None,48)
text =font.render("Score:"+str(score),True,(250,0,0))
text_rect=text.get_rect()
text_rect.centerx=screen.get_rect().centerx
text_rect.centerx=screen.get_rect().centery
screen.blit(game_over,(0,0))
screen.blit(text,text_rect)# key_pressed = pygame.key.get_pressed()
#  if key_pressed[K_r]:
#     screen.fill(0)
while 1:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()pygame.display.update()

入门级用Python + tkinter的打飞机/飞机大战小游戏相关推荐

  1. [源码和文档分享]基于VC++的WIN32 API界面编程实现的飞机太空大战小游戏

    一.程序功能介绍 炫酷精美的飞机太空大战,为体现"设计"的原创性,团队不使用游戏引擎,也没有抄袭任何源代码.全局使用团队自行编写的游戏类对象编写程序.建立以WIN32分辨率960* ...

  2. 基于VC++的WIN32 API界面编程实现的飞机太空大战小游戏

    一.程序功能介绍 炫酷精美的飞机太空大战,为体现"设计"的原创性,团队不使用游戏引擎,也没有抄袭任何源代码.全局使用团队自行编写的游戏类对象编写程序.建立以WIN32分辨率960* ...

  3. Python快速实现简易飞机大战小游戏

    参考:用python实现简单的飞机大战小游戏_化华桦的博客-CSDN博客_python飞机大战 敌机图片: 我方飞机: 子弹: 背景图: 主函数代码main.py: from PySide2 impo ...

  4. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...

    怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...

  5. python小游戏——飞机大战小游戏(附源码)

    写在前面的一些P话: 大家之前用python编写过飞机大战的部分代码, 只能够展示英雄飞机,背景,敌机和发射子弹, 今天把背景音乐,击毁敌机,爆炸特效,得分等等相关功能一并加入进来, 代码有点长,三百 ...

  6. 【python】飞机大战小游戏练习

    飞机大战小游戏练习 一.前提准备 二.制作步骤 1.库的导入与初始化 2.窗口操作 3.键盘按键监听相关操作 4.添加游戏背景 5.加载玩家飞机 6.获取玩家飞机矩阵 三.完整代码编写 游戏背景类编写 ...

  7. python基于pygame的飞机大作战小游戏

    基于pygame的飞机大作战小游戏,适合新手,不能直接运行,只能在命令行进入当前游戏目录,输入python game.py才能够运行,尚不知道是什么原因 游戏截图如下,我们用黄色的圆圈代表敌机, 代码 ...

  8. python 飞机大战小游戏

    飞机大战小游戏,这里需要下载pygame模块 这是需要的素材,需要的自取: 上代码: import time import pygame from pygame.locals import *#检测事 ...

  9. 飞机大战小游戏(超详细)

    偷学Python之最后的项目二:飞机大战小游戏(超详细) 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志.--苏轼 甜甜先说 这次用Python中的pygame模块来完成一个飞机大战的小游戏:基本思 ...

  10. 飞机大战小游戏源码---飞机大战初体验

    开发环境: Windows10,pycharm,python3 源码使用教程: 打开pycharm,创建一个新的项目,文件-->新建项目 项目命名:飞机大战初体验,基本解释器选择python3版 ...

最新文章

  1. Python多任务(2.线程的概念以及组成(创建线程的两种方式))
  2. linux中脚本退出函数,Linux 命令 shell 脚本之09(函数)
  3. 第一章 Spark系统概述
  4. 很抱歉,博主 AFO 了
  5. 设计模式示例_状态设计模式示例
  6. 从大学到结婚,我和小云的这13年
  7. matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
  8. 720p/30fps,谷歌人体分割模型Bodypix再次更新,针对Coral开发板优化
  9. Swift 扩展 Storyboard 属性
  10. webserver总结
  11. Python 批处理文件(全)
  12. web扫描器之Nessus
  13. Huffman编解码
  14. 题目描述: 某城市有一个火车站,铁轨铺设如图所示。 有n节车厢从A方向驶入车站,按进站顺序编号1~n。 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。 为了重组车厢,可以借助中转站C。
  15. 点击量、点击率、访客数、的区别与作用
  16. Centos安装janus
  17. 2010.5.11项目管理群主题:网游那些事-DDV731731-SSE
  18. 软件测试,功能测试转测开容易吗?
  19. 周五IT程序员科技段子
  20. 大话水声通信技术---(BFSK仿真)

热门文章

  1. 【玩玩硬件】esp8266驱动墨水屏
  2. RMA = Return Material Authorization 退货授权%R*MR%i0_{5n
  3. 马斯克称“很快”将会提高纯视觉Autopilot系统最高限速
  4. 让你分分钟学会qt视频播放器
  5. 线性代数:特征值、特征多项式和特征向量
  6. SQL注入进阶:掌握布尔盲注和延时注入攻击技巧
  7. 高考招生计划数据采集系统设计
  8. 2022年A特种设备相关管理(电梯)考试题模拟考试平台操作
  9. ALTER SYSTEM ARCHIVELOG CURRENT挂起案例
  10. 战争与征服服务器维护,战争与征服8月29日停机维护 火力压制主题周第一周开启...