猫史档案馆


【Python作品分享】飞机大战主程序2.2

用户:3141592653abc3141592653abc查看:0 回复:1 评论:0 创建时间:2021-12-12T15:41:08


【作品展示】

center_image

 

【作品介绍】

飞机大战

 

【作品源代码】

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


回复

上一页1 页 / 共 1下一页
WE工作室长WE工作室长

666

 

 

点赞0


评论