用户:
3141592653abc查看:0 回复:1 评论:0 创建时间:2021-12-12T15:41:08
【作品展示】

【作品介绍】
飞机大战
【作品源代码】
def abc():
import os
import random
import math
import pygame
import time
import numpy
import easygui
t = True
cg = None
gst = time.time()
# 初始化
pygame.init()
# 创建主窗口
screen = pygame.display.set_mode((900, 800))
# 题目
pygame.display.set_caption('飞机')
# 变量run(运行)
run = True
bz = pygame.image.load('图片\爆炸.png').convert_alpha()
bzt = []
bzx = []
bzy = []
#我机
# 我机图片
p = pygame.image.load('图片\我方飞机.png').convert_alpha()
# 我方飞机图片宽
pw = 103
# 我方飞机图片高
ph = 137
# 我方飞机x位置
px = 450
# 我方飞机y位置
py = 600
# 我方飞机x位置增加
jpx = 0
# 我方飞机y位置增加
jpy = 0
# 子弹x位置
dx = []
# 子弹y位置
dy = []
# 子弹发射时间
ds = []
djd = []
djdj = numpy.arange(-180, 180, 9)
df = 0
# 敌机图片
dp1 = pygame.image.load('图片\敌机.png').convert_alpha()
dp2 = pygame.image.load('图片\敌机.png').convert_alpha()
dp3 = pygame.image.load('图片\敌机.png').convert_alpha()
dp4 = pygame.image.load('图片\敌机.png').convert_alpha()
dp5 = pygame.image.load('图片\敌机.png').convert_alpha()
dp6 = pygame.image.load('图片\敌机.png').convert_alpha()
dp7 = pygame.image.load('图片\敌机.png').convert_alpha()
dp8 = pygame.image.load('图片\敌机.png').convert_alpha()
dp9 = pygame.image.load('图片\敌机.png').convert_alpha()
dp10 = pygame.image.load('图片\敌机.png').convert_alpha()
shibai = pygame.image.load('图片\失败.png').convert_alpha()
chenggong = pygame.image.load('图片\成功.png').convert_alpha()
# 敌方飞机x位置 # 的方飞机y位置
dpx1 = random.randint(0, 900)
dpy1 = 0
dpx2 = random.randint(0, 900)
dpy2 = 0
dpx3 = random.randint(0, 900)
dpy3 = 0
dpx4 = random.randint(0, 900)
dpy4 = 0
dpx5 = random.randint(0, 900)
dpy5 = 0
dpx6 = random.randint(0, 900)
dpy6 = 0
dpx7 = random.randint(0, 900)
dpy7 = 0
dpx8 = random.randint(0, 900)
dpy8 = 0
dpx9 = random.randint(0, 900)
dpy9 = 0
dpx10 = random.randint(0, 900)
dpy10 = 0
dpd1 = False
dpd2 = False
dpd3 = False
dpd4 = False
dpd5 = False
dpd6 = False
dpd7 = False
dpd8 = False
dpd9 = False
dpd10 = False
file = r'图片\红旗颂.mp3'
pygame.mixer.init()
track = pygame.mixer.music.load(file)
pygame.mixer.music.play(-1, 0.0)
dh = 65
dw = 59
a = 1
b = 0.5
dj1 = random.uniform(a, b)
dj2 = random.uniform(a, b)
dj3 = random.uniform(a, b)
dj4 = random.uniform(a, b)
dj5 = random.uniform(a, b)
dj6 = random.uniform(a, b)
dj7 = random.uniform(a, b)
dj8 = random.uniform(a, b)
dj9 = random.uniform(a, b)
dj10 = random.uniform(a, b)
# 定义子弹函数--当发射子弹时,添加数据
def zidan():
dx.append(px)
dy.append(py)
ds.append(time.time())
dh = 65
dw = 59
gest = time.time()
喵景
screen.fill((255, 255, 255))
if time.time() - gest > 0.05:
zidan()
djd.append(0)
gest = time.time()
for event in pygame.event.get():
# 点击×关闭
if (event.type == pygame.QUIT):
pygame.mixer.stop()
run = False
# 当按下上下左右改变jpx、jpy
if (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_RIGHT): # 右
jpx = 1
elif (event.key == pygame.K_LEFT): # 左
jpx = -1
elif (event.key == pygame.K_DOWN): # 下
jpy = 1
elif (event.key == pygame.K_UP): # 上
jpy = -1
if (event.type == pygame.KEYUP):
if (event.key == pygame.K_RIGHT): # 右
jpx = 0
elif (event.key == pygame.K_LEFT): # 左
jpx = 0
elif (event.key == pygame.K_DOWN): # 下
jpy = 0
elif (event.key == pygame.K_UP): # 上
jpy = 0
elif (event.key == pygame.K_j):
for i in djdj:
zidan()
djd.append(i)
# 子弹
dz = 0
if len(dx) > 0:
for i in range(len(dx)):
if i < len(dx):
if djd[i] != 0:
zdlswzy = (dy[i] - (time.time() - ds[i])
* 500 - 100 / (abs(djd[i])))
else:
zdlswzy = (dy[i] - (time.time() - ds[i]) * 500 - (60 / 1))
dx[i] += djd[i] / 50
# 绘制子弹
pygame.draw.circle(screen, (250, 0, 0),
(dx[i - dz], zdlswzy), 5)
# 子弹离开边缘时,删除数据
if (zdlswzy < 0):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
elif (abs(zdlswzy - dpy1) < 30) and (abs(dx[i] - dpx1 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd1 = True
elif (abs(zdlswzy - dpy2) < 30) and (abs(dx[i] - dpx2 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd2 = True
elif (abs(zdlswzy - dpy3) < 30) and (abs(dx[i] - dpx3 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd3 = True
elif (abs(zdlswzy - dpy4) < 30) and (abs(dx[i] - dpx4 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd4 = True
elif (abs(zdlswzy - dpy5) < 30) and (abs(dx[i] - dpx5 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd5 = True
elif (abs(zdlswzy - dpy6) < 30) and (abs(dx[i] - dpx6 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd6 = True
elif (abs(zdlswzy - dpy7) < 30) and (abs(dx[i] - dpx7 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd7 = True
elif (abs(zdlswzy - dpy8) < 30) and (abs(dx[i] - dpx8 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd8 = True
elif (abs(zdlswzy - dpy9) < 30) and (abs(dx[i] - dpx9 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd9 = True
elif (abs(zdlswzy - dpy10) < 30) and (abs(dx[i] - dpx10 + dw/2) < 30):
del dy[i]
del dx[i]
del ds[i]
del djd[i]
dpd10 = True
bztz = 0
if (len(bzx) > 0):
for i in range(len(bzx)):
screen.blit(bz, (bzx[i-bztz], bzy[i-bztz]))
if (time.time() - bzt[i-bztz]) > 0.7:
del bzy[i-bztz]
del bzx[i-bztz]
del bzt[i-bztz]
bztz += 1
screen.blit(dp1, (dpx1, dpy1))
screen.blit(dp2, (dpx2, dpy2))
screen.blit(dp3, (dpx3, dpy3))
screen.blit(dp4, (dpx4, dpy4))
screen.blit(dp5, (dpx5, dpy5))
screen.blit(dp6, (dpx6, dpy6))
screen.blit(dp7, (dpx7, dpy7))
screen.blit(dp8, (dpx8, dpy8))
screen.blit(dp9, (dpx9, dpy9))
screen.blit(dp10, (dpx10, dpy10))
dpy1 += dj1
dpy2 += dj2
dpy3 += dj3
dpy4 += dj4
dpy5 += dj5
dpy6 += dj6
dpy7 += dj7
dpy8 += dj8
dpy9 += dj9
dpy10 += dj10
if dpy1 > 900:
dpd1 = True
if dpy2 > 900:
dpd2 = True
if dpy3 > 900:
dpd3 = True
if dpy4 > 900:
dpd4 = True
if dpy5 > 900:
dpd5 = True
if dpy6 > 900:
dpd6 = True
if dpy7 > 900:
dpd7 = True
if dpy8 > 900:
dpd8 = True
if dpy9 > 900:
dpd9 = True
if dpy10 > 900:
dpd10 = True
if dpd1:
bzx.append(dpx1)
bzy.append(dpy1)
bzt.append(time.time())
dpx1 = random.randint(0, 900)
dpy1 = 0
dpd1 = False
df += 1
if dpd2:
bzx.append(dpx2)
bzy.append(dpy2)
bzt.append(time.time())
dpx2 = random.randint(0, 900)
dpy2 = 0
dpd2 = False
df += 1
if dpd3:
bzx.append(dpx3)
bzy.append(dpy3)
bzt.append(time.time())
dpx3 = random.randint(0, 900)
dpy3 = 0
dpd3 = False
df += 1
if dpd4:
bzx.append(dpx4)
bzy.append(dpy4)
bzt.append(time.time())
dpx4 = random.randint(0, 900)
dpy4 = 0
dpd4 = False
df += 1
if dpd5:
bzx.append(dpx5)
bzy.append(dpy5)
bzt.append(time.time())
dpx5 = random.randint(0, 900)
dpy5 = 0
dpd5 = False
df += 1
if dpd6:
bzx.append(dpx6)
bzy.append(dpy6)
bzt.append(time.time())
dpx6 = random.randint(0, 900)
dpy6 = 0
dpd6 = False
df += 1
if dpd7:
bzx.append(dpx7)
bzy.append(dpy7)
bzt.append(time.time())
dpx7 = random.randint(0, 900)
dpy7 = 0
dpd7 = False
df += 1
if dpd8:
bzx.append(dpx8)
bzy.append(dpy8)
bzt.append(time.time())
dpx8 = random.randint(0, 900)
dpy8 = 0
dpd8 = False
df += 1
if dpd9:
bzx.append(dpx9)
bzy.append(dpy9)
bzt.append(time.time())
dpx9 = random.randint(0, 900)
dpy9 = 0
dpd9 = False
df += 1
if dpd10:
bzx.append(dpx10)
bzy.append(dpy10)
bzt.append(time.time())
dpx10 = random.randint(0, 900)
dpy10 = 0
dpd10 = False
df += 1
# 绘制我机
screen.blit(p, (px - pw/2, py - ph/2))
# 将我机的x、y坐标增加(减少)jpx、jpy
if (px < 900) and (jpx > 0):
px += jpx
if (px > 0) and (jpx < 0):
px += jpx
if (py < 800) and (jpy > 0):
py += jpy
if (py > 0) and (jpy < 0):
py += jpy
# 刷新
pygame.display.update()
pygame.quit()
chu = '您的得分是' + str(df) + '分'
shuchu1 = '{:*^74}'.format(chu)
shuchu2 = '{:*^80}'.format('GAME OVER')
global shuchu
shuchu = shuchu2 + '\n\n' + shuchu1
import easygui
cran = True
while cran:
abc()
if easygui.ynbox(shuchu+'\n\n{:^74}'.format('是否再来一次?'), '游戏已暂停!', ('是的,再来一次!', '不,不玩了!')):
pass
else:
cran = False
easygui.msgbox('游戏已结束!', '')
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn