飞机大战源码(python+pygame)


用python+pygame实现的飞机大战的源码,包含资源,可直接运行。通过鼠标控制。 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() # 绘画背景 screen.blit(background,(0, 0)) # 检测游戏状态 if not gameover: # 定位鼠标的x, y坐标 x, y = pygame.mouse.get_pos() # 发射子弹 interval_b -= 1 if interval_b < 0: bullets[index_b].restart() interval_b = 100 index_b = (index_b + 1) % count_b for b in bullets: if b.active: # 检查子弹命中情况 for e in enemies: # 击中敌机,分数加100 if checkHit(e, b): score += 100 b.move() screen.blit(b.image, (b.x, b.y)) # 绘画机群 for e in enemies: e.move() screen.blit(e.image, (e.x, e.y)) if checkCrash(e, plane): gameover = True e.move() screen.blit(e.image, (e.x, e.y)) plane.move() screen.blit(plane.image, (plane.x, plane.y)) # 屏幕左上角显示分数 text = font.render("Score: %d" % score, 1, (0, 0, 0)) screen.blit(text, (0, 0)) else: text = font.render("Score: %d" % score, 1, (0, 0, 0)) screen.blit(text, (190, 400)) # 游戏结束后,检测鼠标抬起就“重置游戏” if gameover and event.type == pygame.MOUSEBUTTONUP: plane.restart() for e in enemies: e.restart() for b in bullets: b.active = False score = 0 gameover = False pygame.display.update()
资源截图
代码片段和文件信息
import pygame
import os
from sys import exit 
import random

class Bullet:
    def __init__(self):
        ‘‘‘初始化子弹坐标并加载子弹图片‘‘‘
        self.x = 0
        self.y = -1
        self.image = pygame.image.load(bullet_img).convert_alpha()
        self.active = False

    def move(self):
        ‘‘‘移动子弹‘‘‘
        if self.active:
            self.y -= 3

        if self.y < 0:
            self.active = False

    def restart(self):
        mouseX mouseY = pygame.mouse.get_pos()
        self.x = x - self.image.get_width()/2
        self.y = y - self.image.get_height()/2
        self.active = True

class Enemy:
    def __init__(self):
        self.restart()
        self.image = pygame.image.load(enemy_img).convert_alpha()

    def restart(self):
        self.x = random.randint(50400)
        self.y = random.randint(-200-50)
        self.speed = random.random() + 0.1

    def move(self):
        if self.y < 800:
            self.y += self.speed
        else:
            self.restart()



pygame.init()
bg_img = ‘.\uishoot_background\background.png‘
bg_img2 = ‘bg2.jpg‘
plane_img = ‘.\ui\plane.png‘
bullet_img = ‘.\ui\bullet.png‘
enemy_img = ‘.\ui\enemy.png‘

screen = pygame.display.set_mode((450 800) 0 32)
pygame.display.set_caption(‘Hello World!‘)
background = pygame.image.load(bg_img).convert()
plane = pygame.image.load(plane_img).convert_alpha()
bullet = Bullet()
enemy = Enemy()     # 建立敌机

bullets = []
for i in range(5):
    bullets.append(Bullet())

count_b = len(bullets)      # 子弹的总数
index_b = 0         # 即将激活的子弹序号
interval_b = 0      # 发射子弹的间隔

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()


    # 绘画背景
    screen.blit(background(0 0))

    # 定位鼠标的x y坐标
    x y = pygame.mouse.get_pos()

    # 绘画敌机到屏幕上
    enemy.move()
    screen.blit(enemy.image (enemy.x enemy.y))

    # 发射子弹
    interval_b -= 1
    if interval_b < 0:
        bullets[index_b].restart()
        interval_b = 100
        index_b = (index_b + 1) % count_b

    for b in bullets:
        if b.active:
            b.move()
            screen.blit(b.image (b.x b.y))

    # 定位并绘画飞机到屏幕上
    x -= plane.get_width()/2
    y -= plane.get_height()/2
    screen.blit(plane (x y))
    pygame.display.update()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4714  2014-07-17 15:26  Airplane121.png

     文件      68134  2014-12-27 16:16  Airplaneg1.jpg

     文件      27996  2014-12-27 16:10  Airplaneg2.jpg

     文件       1679  2013-08-29 08:17  Airplanefontfont.fnt

     文件       5193  2013-08-29 08:17  Airplanefontfont.png

     文件    1437502  2014-12-27 19:35  Airplanegame04.gif

     文件       6590  2014-07-17 15:58  Airplanegame_Reagain.png

     文件       6871  2014-07-17 15:57  Airplanegame_start.png

     文件    1278671  2014-12-27 19:19  AirplanePyGame系列-12.pdf

     文件       2553  2017-10-11 14:17  Airplanepygam_hello.py

     文件       2979  2017-10-11 14:19  Airplanepygam_hello_10.py

     文件       4102  2017-10-11 14:19  Airplanepygam_hello_11.py

     文件       4903  2017-10-11 15:05  Airplanepygam_hello_12.py

     文件       2553  2017-10-11 14:18  Airplanepygam_hello_8.py

     文件       2625  2017-10-11 14:19  Airplanepygam_hello_9.py

     文件       8831  2013-08-29 08:17  Airplanesoundachievement.mp3

     文件      12327  2013-08-29 08:17  Airplanesoundig_spaceship_flying.mp3

     文件       7751  2013-08-29 08:17  Airplanesoundullet.mp3

     文件       6815  2013-08-29 08:17  Airplanesoundutton.mp3

     文件      11287  2013-08-29 08:17  Airplanesoundenemy1_down.mp3

     文件      12847  2013-08-29 08:17  Airplanesoundenemy2_down.mp3

     文件       9415  2013-08-29 08:17  Airplanesoundenemy3_down.mp3

     文件     117728  2013-08-29 08:17  Airplanesoundgame_music.mp3

     文件      14615  2013-08-29 08:17  Airplanesoundgame_over.mp3

     文件       9653  2013-08-29 08:17  Airplanesoundget_bomb.mp3

     文件      13494  2013-08-29 08:17  Airplanesoundget_double_laser.mp3

     文件      10693  2013-08-29 08:17  Airplanesoundout_porp.mp3

     文件      10703  2013-08-29 08:17  Airplanesounduse_bomb.mp3

     文件       1378  2014-07-21 09:00  Airplaneuikmusic_close.png

     文件       1398  2014-07-21 09:00  Airplaneuikmusic_play.png

............此处省略62个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)