import pygame,sys,os,random

import time as t

from pygame import *

import tkinter

from tkinter import messagebox

root=tkinter.Tk()

root.withdraw()

# 定义常量

SCREEN_WIDTH = 480

SCREEN_HEIGHT = 700

# 初始化 pygame

pygame.init()

# 设置游戏界面大小

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# 游戏界面标题

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

path = os.listdir("images") #这里可以按照需求更换路径

#加载所有图片

img={}

for i in path:

img[i]=pygame.image.load("images//"+i)

#定义变量(不要在意变量名)

x1=0

x2=700

nowType=1

bulletPos=[]

nowT=0

enemy1=[]

enemy2=[]

enemy3=[]

e1Hit=[]

e2Hit=[]

e3Hit=[]

score=0

life=3

counte1=0

msme=None

e1DL=[]

e2DL=[]

e3DL=[]

meAlive=True

gamerun=True

LP=None

da=0

dn=0

dc=True

A1T=False

A2T=False

res=False

resu=False

stime=2.0

#字体

font=pygame.font.SysFont("微软雅黑",25)

font2=pygame.font.SysFont("微软雅黑",40)

font1=pygame.font.SysFont("幼圆",40)

#主循环

while True:

for event in pygame.event.get():

if event.type==QUIT:

if tkinter.messagebox.askyesno("飞机大战","确定退出吗?"):

pygame.quit()

sys.exit()

elif event.type==KEYDOWN:

if event.key==K_ESCAPE and life!=0 and meAlive:

if gamerun and life!=0 and meAlive:

gamerun=False

res=True

LP=mems

elif event.type==MOUSEBUTTONDOWN:

if event.button==1:

if res and pygame.mouse.get_pos()[0]>=122 and pygame.mouse.get_pos()[0]<=122+232 and pygame.mouse.get_pos()[1]>=380 and pygame.mouse.get_pos()[1]<=380+47: #122,380 232,47

resu=True

elif meAlive==False and pygame.mouse.get_pos()[0]>=100 and pygame.mouse.get_pos()[0]<=100+300 and pygame.mouse.get_pos()[1]>=550 and pygame.mouse.get_pos()[1]<=550+41:

nowType=1

bulletPos=[]

nowT=0

enemy1=[]

enemy2=[]

enemy3=[]

e1Hit=[]

e2Hit=[]

e3Hit=[]

score=0

life=3

counte1=0

msme=None

e1DL=[]

e2DL=[]

e3DL=[]

meAlive=True

gamerun=True

LP=None

da=0

dn=0

dc=True

A1T=False

A2T=False

res=False

resu=False

stime=2.0

elif meAlive==False and pygame.mouse.get_pos()[0]>=100 and pygame.mouse.get_pos()[0]<=100+300 and pygame.mouse.get_pos()[1]>=600 and pygame.mouse.get_pos()[1]<=600+41:

if tkinter.messagebox.askyesno("飞机大战","确定退出吗?"):

pygame.quit()

sys.exit()

#绘制图片

screen.blit(img['background.png'],(0,x1))

screen.blit(img['background.png'],(0,x2))

if life!=0:

screen.blit(font.render("LIFE:"+str(life),True,(0,0,0)),(10,10))

screen.blit(font.render("SCORE:"+str(score),True,(0,0,0)),(340,10))

counte1=0

for i in range(len(enemy1)):

screen.blit(img['enemy1.png'],(enemy1[i-counte1][0],enemy1[i-counte1][1]))

if gamerun:

try:

enemy1[i-counte1][1]+=2

if pygame.Rect(enemy1[i-counte1][0]+3.5,enemy1[i-counte1][1]+3.5,43-3.5,57-3.5).colliderect(pygame.Rect(mems[0]+5,mems[1]+5,102-5,126-5)):

life-=1

e1DL.append((enemy1[i-counte1][0],enemy1[i-counte1][1]))

del enemy1[i-counte1]

counte1+=1

for j in bulletPos:

if enemy1[i-counte1][1]+43>=j[1] and enemy1[i-counte1][1]<=j[1] and enemy1[i-counte1][0]<=j[0] and enemy1[i-counte1][0]+57>=j[0]:

screen.blit(pygame.transform.scale(img['bullet2.png'],(8,15)),(j[0]-2,j[1]))

bulletPos.remove(j)

e1Hit[i-counte1]+=1

if e1Hit[i-counte1]>=2:

e1DL.append((enemy1[i-counte1][0],enemy1[i-counte1][1]))

del enemy1[i-counte1]

counte1+=1

e1Hit.remove(2)

score+=2

except:

pass

mems=(pygame.mouse.get_pos()[0]-(102/2),pygame.mouse.get_pos()[1]-(126/2))

counte1=0

for i in range(len(enemy2)):

if e2Hit[i-counte1]>=1:

screen.blit(img['enemy2_hit.png'],(enemy2[i-counte1][0],enemy2[i-counte1][1]))

else:

screen.blit(img['enemy2.png'],(enemy2[i-counte1][0],enemy2[i-counte1][1]))

if gamerun:

try:

enemy2[i-counte1][1]+=2

for j in bulletPos:

if enemy2[i-counte1][1]+99>=j[1] and enemy2[i-counte1][1]<=j[1] and enemy2[i-counte1][0]<=j[0] and enemy2[i-counte1][0]+69>=j[0]:

screen.blit(pygame.transform.scale(img['bullet2.png'],(8,15)),(j[0]-2,j[1]))

bulletPos.remove(j)

e2Hit[i-counte1]+=1

if pygame.Rect(enemy2[i-counte1][0]+4,enemy2[i-counte1][1]+4,69-4,99-4).colliderect(pygame.Rect(mems[0]+5,mems[1]+5,102-5,126-5)):

life-=1

e2DL.append((enemy2[i-counte1][0],enemy2[i-counte1][1]))

del enemy2[i-counte1]

counte1+=1

if e2Hit[i-counte1]>=5:

e2DL.append((enemy2[i-counte1][0],enemy2[i-counte1][1]))

del enemy2[i-counte1]

counte1+=1

e2Hit.remove(5)

score+=5

except:

pass

counte1=0

for i in range(len(enemy3)):

if e3Hit[i-counte1]>=1:

screen.blit(img['enemy3_hit.png'],(enemy3[i-counte1][0],enemy3[i-counte1][1]))

else:

if gamerun:

if random.randint(0,1)==0:

screen.blit(img['enemy3_n1.png'],(enemy3[i-counte1][0],enemy3[i-counte1][1]))

else:

screen.blit(img['enemy3_n2.png'],(enemy3[i-counte1][0],enemy3[i-counte1][1]))

else:

screen.blit(img['enemy3_n1.png'],(enemy3[i-counte1][0],enemy3[i-counte1][1]))

if gamerun:

try:

enemy3[i-counte1][1]+=2

for j in bulletPos:

if enemy3[i-counte1][1]+261>=j[1] and enemy3[i-counte1][1]<=j[1] and enemy3[i-counte1][0]<=j[0] and enemy3[i-counte1][0]+165>=j[0]:

screen.blit(pygame.transform.scale(img['bullet2.png'],(8,15)),(j[0]-2,j[1]))

bulletPos.remove(j)

e3Hit[i-counte1]+=1

if pygame.Rect(enemy3[i-counte1][0]+10,enemy3[i-counte1][1]+10,165-10,261-10).colliderect(pygame.Rect(mems[0]+5,mems[1]+5,102-5,126-5)):

life-=1

e3DL.append((enemy3[i-counte1][0],enemy3[i-counte1][1]))

del enemy3[i-counte1]

counte1+=1

if e3Hit[i-counte1]>=10:

e3DL.append((enemy3[i-counte1][0],enemy3[i-counte1][1]))

del enemy3[i-counte1]

e3Hit.remove(10)

score+=10

except:

pass

for i in bulletPos:

screen.blit(pygame.transform.scale(img['bullet1.png'],(8,15)),(i[0]-2,i[1]))

if gamerun:

i[1]-=3

if meAlive and gamerun:

if dc:

if nowT%5==0:

screen.blit(img['me1.png'],mems)

else:

screen.blit(img['me2.png'],mems)

else:

da+=1

if da>=50 and da<=100:

screen.blit(img['me1.png'],mems)

if da>=100:

da=0

dn+=1

if dn>=3:

if life==2:

A2T=True

else:

A1T=True

dc=True

dn=0

if life==2 and not A2T:

dc=False

elif life==1 and not A1T:

dc=False

if nowT%20==0:

bulletPos.append([pygame.mouse.get_pos()[0],pygame.mouse.get_pos()[1]-(126/2)])

if nowT%100==0:

if gamerun:

ET=random.randint(1,100)

if ET>=1 and ET<=88:

enemy1.append([random.randint(0,480-57),-43])

e1Hit.append(0)

elif ET>=88 and ET<=97:

enemy2.append([random.randint(0,480-69),-99])

e2Hit.append(0)

elif ET>=97 and ET<=100:

enemy3.append([random.randint(0,480-169),-258])

e3Hit.append(0)

#背景移动

if gamerun:

x1+=1

x2+=1

if x2>=700:

x2=-700

if x1>=700:

x1=-700

for i in e1DL:

screen.blit(img['enemy1_down1.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy1_down2.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy1_down3.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy1_down4.png'],i)

t.sleep(0.01)

pygame.display.update()

e1DL.remove(i)

for i in e2DL:

screen.blit(img['enemy2_down1.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy2_down2.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy2_down3.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy2_down4.png'],i)

t.sleep(0.01)

pygame.display.update()

e2DL.remove(i)

for i in e3DL:

screen.blit(img['enemy3_down1.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy3_down2.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy3_down3.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy3_down4.png'],i)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['enemy3_down5.png'],i)

t.sleep(0.01)

pygame.display.update()

e3DL.remove(i)

if life<=0 and meAlive:

life=0

meAlive=False

screen.blit(img['me_destroy_1.png'],mems)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['me_destroy_2.png'],mems)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['me_destroy_3.png'],mems)

t.sleep(0.01)

pygame.display.update()

screen.blit(img['me_destroy_4.png'],mems)

t.sleep(0.01)

pygame.display.update()

t.sleep(0.01)

nowT+=1

if life<=0:

life=0

gamerun=False

if res:

screen.blit(img['me1.png'],LP)

screen.blit(font1.render("已暂停",True,(0,0,0)),(180,290))

if pygame.mouse.get_pos()[0]>=122 and pygame.mouse.get_pos()[0]<=122+232 and pygame.mouse.get_pos()[1]>=380 and pygame.mouse.get_pos()[1]<=380+47:

screen.blit(img['run_pressed.png'],(122,380))

else:

screen.blit(img['run_nor.png'],(122,380))

if resu:

res=False

screen.blit(img['me1.png'],LP)

screen.blit(font2.render(str(round(stime,1)),True,(0,0,0)),(210,290))

t.sleep(0.07)

stime-=0.1

if stime<=0.0:

resu=False

gamerun=True

stime=3.0

if not meAlive:

screen.blit(img['gameoverbg.png'],(0,-100))

screen.blit(font1.render("您的得分:"+str(score),True,(0,0,0)),(130,200))

screen.blit(img['again.png'],(100,550))

screen.blit(img['gameover.png'],(100,600))

pygame.display.update()

小甲鱼python飞机大战素材_用Python做飞机大战(含素材)相关推荐

  1. 学python看小甲鱼还是黑马_P1 跟着小甲鱼(2019年新版)学习Python的第一天

    P1 跟着小甲鱼(2019年新版)学习Python的第一天 (如有侵权,请联系小up删除) 作为一个python的初学者,一直没有毅力好好学习一门编程语言,想利用这个方法监督自己,跟着小甲鱼一起学习p ...

  2. python小应用之整理手机图片_用Python这个小工具,一次性把论文作图与数据处理全部搞定!...

    整理完这些资料已经凌晨3点了,困得眼睛都睁不开,一想到明天就截稿了,他只好随便拼凑一篇应付. 结果可想而知,导师还没看完第一页就把论文给退回来了,说论文通篇缺乏具体数据分析,研究计划就很粗糙,实施起来 ...

  3. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础

    本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...

  4. python list查找元素_使用python list 查找所有匹配元素的位置实例

    使用python list 查找所有匹配元素的位置实例 如下所示: import re word = "test" s = "test abcdas test 1234 ...

  5. python画交互式地图_使用Python构建交互式地图-入门指南

    python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...

  6. python商城源码_自学Python才几天,就成功编写出俄罗斯方块游戏,附自学教程

    人们常说,python不适合做游戏,但我偏爱玩游戏,做不了大的,做个小的也行啊. 于是,我在自己毫无基础的条件下,用两天时间学python基础理论,再用已有的俄罗斯方块游戏源码和源文件,在我的不懈努力 ...

  7. python画素描画_使用Python将图片变成铅笔素描

    原标题:使用Python将图片变成铅笔素描 新书即将面市,敬请关注 本文转自:JiekeXu之路(ID:JiekeXu_IT,已获授权) " 我们知道一张色彩鲜艳的美照,看起来自然赏心悦目的 ...

  8. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  9. python写新年快乐程序_新年快乐! python实现绚烂的烟花绽放效果

    新年快乐! python实现绚烂的烟花绽放效果 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  新年快乐! python实现绚烂的烟花绽放效果.txt ] (友情 ...

  10. python图片字符分割_图像分割python

    常用的十大 python 图像处理工具 本文为 AI 研习社编译的技术博客,原标题 : 10 Python image manipulation tools. 作者 | Parul Pandey 翻译 ...

最新文章

  1. APACHE-TOMCAT集群环境部署
  2. JavaEE5种常见的设计模式
  3. Python基础(5) - 文件
  4. shouldParkAfterFailedAcquire
  5. linux下julia的开发环境,Ubuntu搭建Julia远程开发环境
  6. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d详解(二)
  7. 转载 Spark性能优化指南——基础篇
  8. 22岁印度大学生获谷歌天价offer,击败6000人年薪百万
  9. 程序设计与算法----递归之放苹果问题
  10. linux 文件类型 时间戳 ls bash特性四 文件查看命令 cp move echo
  11. 如果知道它们的热量,还想点吗?
  12. FastStone Capture(定时自动截图)
  13. k8s初始化报错[kubelet-check] Initial timeout of 40s passed.
  14. 谷木美身粥要怎样做?谷木美身粥功效真的那么神奇?
  15. UVa 12118 Inspector's Dilemma
  16. Yolov5中使用Resnet18作为主干网络
  17. Camera中onPreviewFrame()方法的视频方向旋转
  18. SFTP下载文件到本地
  19. 用关键词获取店铺详情
  20. xw总结4:jmmntsj

热门文章

  1. pmp考试中应该注意的点是什么?
  2. 微分方程传染病模型之指数模型-SI模型-SIS模型-SIR模型
  3. V20西门子变频器怎么选型
  4. [学习]啦啦外卖定位修复,商家经纬度保存修复
  5. java roll_java.util.Calendar roll()方法
  6. 三星固态优化软件.samsung magician 中文下载地址
  7. 大学计算机基础试题 百度网盘,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
  8. ubuntn 16.04.2下caffee的安装教程
  9. ADC和DAC中常见技术术语
  10. 笔记———No.1 使用matlab画圆