zoukankan      html  css  js  c++  java
  • pygame飞机大战之英雄机近距离发射子弹击毁敌飞机-peter(董老师)

    #coding:utf-8
    import pygame,sys,easygui
    from pygame.locals import *
    #初始化pygame环境
    pygame.init()

    #创建一个长宽分别为480/650窗口
    canvas = pygame.display.set_mode((480, 650))
    canvas.fill((255,255,255))

    #设置窗口标题
    pygame.display.set_caption("飞机大战")


    # 加载敌方小飞机图片
    enemy=pygame.image.load("images/enemy1.png")
    # 加载子弹图片
    bullet=pygame.image.load("images/bullet1.png")
    #加载英雄机图片
    hero=pygame.image.load("images/hero.png")
    # 加载背景图片
    bg=pygame.image.load("images/bg4.png")

    def handleEvent():
        for event in pygame.event.get():
            if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
    # 声明变量y1和y2表示敌飞机和英雄机的坐标
    y1 = 0
    y2 = 600
    # 声明变量b1和b2表示两颗子弹的y轴坐标
    b1 = 620
    b2 = 620
    # 声明变量m、n1和n2分别表示英雄机、子弹1和子弹2的速度
    m = 0.5
    n1 = 0.5
    n2 = 0.5
    while True:
        # 先画背景
        canvas.blit(bg,(0,0))
        # 画出两颗子弹(先画子弹,后画飞机保证飞机遮住子弹)
        canvas.blit(bullet,(225,b1))
        canvas.blit(bullet,(225,b2))
        # 画敌飞机并向下飞行(速度不要设置太大)
        canvas.blit(enemy,(200,y1))
        y1 = y1 + 0.2
        # 画英雄机并向上飞行(飞行速度用变量表示,为后面修改速度做准备)
        canvas.blit(hero,(200,y2))
        # 要保证英雄机、两颗子弹速度相等,三者一块移动(始终让飞机遮住子弹)
        y2 = y2 - m
        b1 = b1 - n1
        b2 = b2 - n2
        # 当英雄机飞行到y=300的位置停止飞行发射子弹
        if y2 <= 300:
            # 英雄机的速度m等于0停止飞行
            m = 0
            # 子弹1速度设置为1,向上发射打飞机
            n1 = 1
            # 子弹2速度设置为0(和英雄机速度一致,暂不发射)
            n2 = 0
        # 首发子弹击中敌机,子弹消失
        if b1 <= y1:
            b1 = -1000
        # 当敌机y轴坐标超出200px时,英雄机后退避险
        if y1 >= 200:
            # 英雄机往后退(将英雄机的速度m改成负数)
            m = -0.15
            # 第二颗子弹速度和英雄机速度一致(防止暴露)
            n2 = -0.15
        # 当敌机向下飞到y轴坐标超过300时,子弹2速度n2设置为1快速击中敌机
        if y1 >= 300:
            n2 = 1
        # 第二颗子弹击中敌机,敌机和子弹同时消失并且英雄机快速向上飞行成功脱险
        if b2 <= y1:
            y1 = -1000
            b2 = -1000
            m = 3
        # 更新屏幕内容
        pygame.display.update()
        #监听有没有按下退出按钮
        handleEvent()
       
       

  • 相关阅读:
    TH-Union教学机 指令总结
    Manjaro 显卡驱动安装
    grub学习内容
    manjaro 折腾
    链栈的实现
    汇编综合实验
    二叉树
    Oracle表空间基本操作
    Windows7/10实现ICMP(ping命令)
    WireShark——IP协议包分析(Ping分析IP协议包)
  • 原文地址:https://www.cnblogs.com/dongks/p/11848181.html
Copyright © 2011-2022 走看看