马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

# main.py

import pygame

import sys

import traceback

import myplane

import enemy

import bullet

from pygame.locals import *

from random import *

pygame.init()

pygame.mixer.init()

bg_size =width, height = 480, 800

screen =pygame.display.set_mode(bg_size)

pygame.display.set_caption("飞机大战")

background =pygame.image.load("images/bg_01.jpg").convert()

#载入游戏声音

pygame.mixer.music.load("music/BGM.mp3")

pygame.mixer.music.set_volume(0.2)

def add_Plane1_enemies(group1,group2,num):

for i in range(num):

e1 =enemy.Plane1(bg_size)

group1.add(e1)

group2.add(e1)

def add_Plane2_enemies(group1,group2,num):

for i in range(num):

e2 =enemy.Plane1(bg_size)

group1.add(e2)

group2.add(e2)

def add_Plane3_enemies(group1,group2,num):

for i in range(num):

e3 =enemy.Plane1(bg_size)

group1.add(e3)

group2.add(e3)

def add_Plane4_enemies(group1,group2,num):

for i in range(num):

e4 =enemy.Plane1(bg_size)

group1.add(e4)

group2.add(e4)

def main():

pygame.mixer.music.play(-1)

#生成我方飞机

me = myplane.MyPlane(bg_size)

enemies =pygame.sprite.Group()

#生成敌方飞机1

Plane1_enemies =pygame.sprite.Group()

add_Plane1_enemies(Plane1_enemies,enemies,15)

#生成敌方飞机2

Plane2_enemies =pygame.sprite.Group()

add_Plane2_enemies(Plane2_enemies,enemies,6)

#生成敌方飞机3

Plane3_enemies =pygame.sprite.Group()

add_Plane3_enemies(Plane3_enemies,enemies,3)

#生成敌方飞机4

Plane4_enemies =pygame.sprite.Group()

add_Plane4_enemies(Plane4_enemies,enemies,1)

#生成普通子弹

bullet1 = []

bullet1_index = 0

BULLET1_NUM = 6

for i in range(BULLET1_NUM):

bullet1.append(bullet.Bullet1(me.rect.midtop))

clock =pygame.time.Clock()

#用于切换图片

switch_image = True

#用于延迟

delay = 99

running =True

while running:

for event in pygame.event.get():

if event.type == QUIT:

pygame.quit()

sys.exit()

#检测用户的键盘操作

key_pressed = pygame.key.get_pressed()

if key_pressed[K_w] or key_pressed[K_UP]:

me.moveUp()

if key_pressed[K_s] or key_pressed[K_DOWN]:

me.moveDown()

if key_pressed[K_a] or key_pressed[K_LEFT]:

me.moveLeft()

if key_pressed[K_d] or key_pressed[K_RIGHT]:

me.moveRight()

screen.blit(background,(0, 0))

#发射子弹

if not (delay % 10):

bullet1[bullet1_index].reset(me.rect.midtop)

bullet1_index =(bullet1_index+1) % BULLET1_NUM

#检测子弹是否击中敌机

for b in bullet1:

if b.active:

b.move()

screen.blit(b.image, b.rect)

enemy_hit = pygame.sprite.spritecollide(b, enemies, False)

if enemy_hit:

b.active = False

for e in enemy_hit:

e.active = False

#绘制敌方飞机4

for each in Plane4_enemies:

if each.active:

each.move()

screen.blit(each.image, each.rect)

else:

#毁灭

each.reset()

#绘制敌方飞机3

for each in Plane3_enemies:

if each.active:

each.move()

screen.blit(each.image, each.rect)

else:

each.reset()

#绘制敌方飞机2

for each in Plane2_enemies:

if each.active:

each.move()

screen.blit(each.image, each.rect)

else:

each.reset()

#绘制敌方飞机1

for each in Plane1_enemies:

if each.active:

each.move()

screen.blit(each.image, each.rect)

else:

each.reset()

#检测我方飞机是否碰撞

enemies_down = pygame.sprite.spritecollide(me,enemies,False,pygame.sprite.collide_mask)

if enemies_down:

#me.active =False

for e in enemies_down:

e.active = False

# 绘制我方飞机

if me.active:

screen.blit(me.image, me.rect)

else:

#毁灭

print("Gameover!")

running = False

#切换图片

if not(delay % 5):

switch_image = not switch_image

delay-=1

if not delay:

delay =99

pygame.display.flip()

clock.tick(60)

if __name__ == '__main__':

try:

main()

except SystemExit:

pass

except:

traceback.print_exc()

pygame.quit()

input()

python飞机大战子弹不显示_飞机大战游戏 飞机打出一发子弹后就不出现子弹了...相关推荐

  1. c语言课程设计坦克大战,funcodec++课程设计_坦克大战

    <funcodec++课程设计_坦克大战>由会员分享,可在线阅读,更多相关<funcodec++课程设计_坦克大战(24页珍藏版)>请在人人文库网上搜索. 1.课程设计一 坦克 ...

  2. java坦克大战 实训报告_坦克大战系统《Java程序开发实训》综合实训报告.doc

    坦克大战系统<Java程序开发实训>综合实训报告 <Java程序开发实训>综合实训报告 题目: 坦克大战系统 姓名: 方庆 学号: 2010203206 班级: 10软件(2) ...

  3. python飞机大战简书_python中的小游戏——飞机大战

    精灵类---plane_sprites #这个模块放一些常用的工具和基础类和精灵类 #在其他模块调用 import pygame import random #设置游戏屏幕大小 这是一个常量 SCRE ...

  4. python网页登录验证码不显示_进网页需要验证码?不好意思,Python从来不惧各种验证码!...

    今天 要来说说滑动验证码了 大家应该都很熟悉 点击滑块然后移动到图片缺口进行验证 现在越来越多的网站使用这样的验证方式 为的是增加验证码识别的难度 那么,对于这种验证码应该怎么破呢 接下来就是见证神奇 ...

  5. python创建dataframe表格不显示_创建列pandas DataFrame数据的表绘图时出现问题?

    我有下面的代码,它创建一个带有标签的列名的表映像.我遇到的问题是让列(dc[x])能够垂直填充表,而不是水平填充.在def drilltable(): c = readcsv3() dc = Data ...

  6. python如何实时捕捉cmd显示_如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出? -问答-阿里云开发者社区-阿里云...

    如果您正在谈论python解释器或CMD.exe,它是您脚本的"父",那么不可能.在每个类似POSIX的系统中(现在你正在运行Windows,看起来可能有一些我不知道的怪癖,YMM ...

  7. python如何设置窗口保持显示_如何保持Python脚本输出窗口打开?

    Cats萌萌 在发生异常时保持窗口打开(但是,同时打印异常)Python 2if __name__ == '__main__': try: ## your code, typically one fu ...

  8. python实时数据存储与显示_利用python进行数据加载和存储

    1.文本文件 (1)pd.read_csv加载分隔符为逗号的数据:pd.read_table从文件.URL.文件型对象中加载带分隔符的数据.默认为制表符.(加载为DataFrame结构) 参数name ...

  9. python电子英汉词典显示_如何使用python为Linux打造一款命令行下的在线英汉词典...

    项目说明 : 在linux终端下有时候遇到一个想查询的英语单词 , 但是不想打开浏览器去谷歌或者百度去搜索 , 因此就写了这个基于爬虫的单词翻译工具 , 实现原理很简单 , 基本开发已经完成 ,总共有 ...

最新文章

  1. 寻找优秀的程序员之实战指南-2
  2. 《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题
  3. 使用SQLyog无法连接到MySQL,error code 2013
  4. 汽车电子及ADAS安全部分相关测试标准
  5. #linux# su命令细节错误
  6. Linux Shell——函数的使用
  7. Java实验二 计算机 1501 王奕开 18
  8. 计算机视觉中的牛人贡献及其主页
  9. 计算机组成原理第二版知识大纲
  10. 2022年春运火车票明起开卖
  11. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps 线段树
  12. base包中自定义activity
  13. 删除iptables nat 规则
  14. 全新 ENVI Modeler 遥感建模工具
  15. php将数组转成字符串的,php怎样将数组转化成字符串
  16. 完整的棋牌游戏开发流程,你知道多少棋牌游戏开发。
  17. 信鸽 ios tag推送 php,信鸽推送平台常见问题汇总iOS端
  18. 微信小程序获取用户收货地址源码
  19. 求生之路2正版rpg服务器,求生之路2怎么屏蔽rpg服务器 求生之路2屏蔽rpg服务器方法-游侠网...
  20. NLP-基础任务-中文分词算法(2)-基于词典:基于N-gram语言模型的分词算法【基于词典的分词方法】【利用维特比算法求解最优路径】【比机械分词精度高】【OOV:基于现有词典,不能进行新词发现处理】

热门文章

  1. 小评最近很火的BERT模型
  2. Python网络编程基础学习笔记-ip地址的介绍
  3. C语言求π的值(2种方法)
  4. TPS和吞吐量的关系
  5. 7-3 单词 (10 分)
  6. CentOS安装指定版本的Mysql
  7. Android修改系统语言
  8. 云运维的启示与架构设计
  9. 【附源码】计算机毕业设计JAVA至臻阁古董拍卖网
  10. 生物信息/微生物组期刊推荐: ISME Journal