deqin -飞机大战8.0

# 制作游戏   导包
import random
import time
import pygame
import sys
import plane
import enemy


def key_control(hero):
    global game_start
    # event 事件,我们对电脑的每一次操作都是一个事件
    for shi_jian in pygame.event.get():
        # print(shi_jian)
        if shi_jian.type == pygame.QUIT:
            pygame.quit()
            sys.exit()  # 系统文件的退出
        # 判断我们有没有按键 KEY
        elif shi_jian.type == pygame.KEYDOWN:
            # 判读我们按了什么键
            if shi_jian.key == pygame.K_a :
                hero.move_left()
            if shi_jian.key == pygame.K_d:
                hero.move_right()
            if shi_jian.key == pygame.K_w:
                hero.move_up()
            if shi_jian.key == pygame.K_s:
                hero.move_down()
            if shi_jian.key == pygame.K_f:
                hero.fire()
            if shi_jian.key == pygame.K_k:
                game_start = False


def set_ziti(window, content, ziti_size, xy, color = (0,0,0)):
    # 设置文字字体和大小
    font = pygame.font.Font("ziti.ttf", ziti_size)
    # 设置文字内容和颜色
    imgText = font.render(content, True, color)
    # 将文字放到窗口上
    window.blit(imgText, xy)


def main():
    global game_start
    # 1。初始化
    pygame.init()
    # 2。制作窗口
    window = pygame.display.set_mode((400, 600))
    # 3。给一个标题
    pygame.display.set_caption("星球大战")
    # 导入图片f
    background = pygame.image.load("图片/background.png")
    # 新建一个战机对象
    hero = plane.plane(window)
    bad_egg = []
    # 5。刷新
    # 电脑每隔多少毫秒时间响应一次
    pygame.key.set_repeat(100, 1)

    score = 0
    game_start = True
    game_over  = False

    while True:
        window.blit(background, (0, 0))
        key_control(hero)
        if game_start:
            #准备按键开始游戏
            set_ziti(window, "开始游戏",66, (75, 270))
            set_ziti(window, "按k键开始游戏",30, (120,350),(100,0,0))

        elif game_over:
            # 显示游戏结束画面
            pass
        else:
            num_bad_egg = random.randint(1, 50)
            if num_bad_egg == 30:
                bad_egg.append(enemy.enemy(window))
            # 控制函数
            # 敌机运动轨迹:一直往右走

            # 显示战机
            zidan_x, zidan_y = hero.show()
            # print(zidan_x)
            # print(zidan_y)
            for e in bad_egg:
                e.show()
                e.move()
                if hero.x < e.x < hero.x + 120 and hero.y < e.y < hero.y + 100:
                    hero.boom()
                    game_over = True


                for zi_i in range(len(zidan_x)):
                    if e.x < zidan_x[zi_i] < e.x + 51 and e.y < zidan_y[zi_i] < e.y + 39:
                        e.boom()
                        try:
                            bad_egg.remove(e)
                            score = score + 1
                        except:
                            pass
                # 判断子弹是否碰到敌机

            # 判断敌机的x坐标是不是在飞机的两个x坐标之间
            set_ziti(window, "分数%d"%score, 30, (0, 0))
        pygame.display.update()
            # time.sleep(0.1)
    pygame.quit()


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值