python练习,飞机大战(1)小甲鱼

游戏基本设定
敌方共有大中小三款飞机 ,分为 高中低三种速度;
子弹的射程并非 全屏,而大概是屏幕长度的80%;
消灭小飞机需要 1发 子弹,中飞机 需要8发,大飞机需要20发;
每消灭一家小飞机得1000分 ,中飞机6000分,大飞机10000分;
每个30秒有一个随机的道具补给,分为两种道具,全屏炸弹 和双倍子弹;
全屏炸弹最多只能存放 3枚,双倍子弹可以维持18秒钟的效果;
游戏将根据分数逐步提高难度,难度的提高表示飞机数量的增多 以及速度的加快。
中飞机和大飞机增加血槽的显示;

道具补给还未实现,逐渐提高难度也没有实现,剩下的都实现了。

飞机的碰撞检测:
首先是类要继承pygame.sprite.Sprite,然后设置一个mask属性,用于完美检测,也就是飞机透明部分的内容碰撞不会击毁,self.mask = pygame.mask.from_surface(self.image)enemies_dowm = pygame.sprite.spritecollide(me, enemies, False,pygame.sprite.collide_mask)#me这个 精灵是否跟Enemies里面的任何一个精灵有碰撞,如果有碰撞,返回跟他碰撞的精灵列表。

后面可能会继续写,不过现在我对爬虫比较好奇,想先学习爬虫了

关于字体和图片资源,CSDN好像 不能添加附件,有想要的可以留邮箱发给你~ ^ ^!

main.py

import pygame
import sys
import traceback
import myplane
import enemy
import supply
import bullet
from random  import *
from pygame.locals import *

pygame.init()
#混音器初始化
pygame.mixer.init()
#屏幕大小,就是背景图片的大小
bg_size = width, height =  480, 700
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("飞机大战 -- Plane Wars")

background = pygame.image.load("images/background.png").convert()

BLACK = (0,0,0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
WHITE = (255, 255, 255)

#载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound('sound/supply.wav')
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound  = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.1)
enemy2_down_sound  = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound  = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound  = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)

def add_small_enemies(group1, group2, num):
    for i in range(num):
        e1 = enemy.SmallEnemy(bg_size)
        group1.add(e1)
        group2.add(e1)
def add_mid_enemies(group1, group2, num):
    for i in range(num):
        e2 = enemy.MidEnemy(bg_size)
        group1.add(e2)
        group2.add(e2)
def add_big_enemies(group1, group2, num):
    for i in range(num):
        e3 = enemy.BigEnemy(bg_size)
        group1.add(e3)
        group2.add(e3)


def main():

    pygame.mixer.music.play(-1)
    #生成我方飞机
    me  = myplane.MyPlane(bg_size)

    enemies = pygame.sprite.Group()
    # 生成敌方小型飞机
    small_enemies = pygame.sprite.Group()
    add_small_enemies(small_enemies, enemies, 15)
    # 生成敌方中型飞机
    mid_enemies = pygame.sprite.Group()
    add_mid_enemies(mid_enemies, enemies, 4)
    # 生成敌方大型飞机
    big_enemies = pygame.sprite.Group()
    add_big_enemies(big_enemies, enemies, 2)
    #生成普通子弹
    bullet1 = []
    bullet1_index = 0
    BULLET1_NUM = 4
    #总共有 四颗子弹
    for  i in range(BULLET1_NUM):
        bullet1.append(bullet.Bullet1(me.rect.midtop))

    #中弹图片索引
    e1_destroy_index = 0
    e2_destroy_index = 0
    e3_destroy_index = 0
    me_destroy_index = 0

    #统计得分
    score = 0
    score_font = pygame.font.Font("font/font.ttf" , 36)
    #标志是否暂停游戏
    paused = False
    #加载暂停图片 按下 还有鼠标放上 有不同效果
    pause_nor_image 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值