飞机大战项目(源代码(直接用),有效果图,素材包)

上个星期弄了好久的打飞机,折磨了我好久,其实上周末都已经做好了,整体的一些大功能已经实现,缺少的就是一些小功能,比如说选关啊,变身啊,超级炸弹啊,本来想加上去,但是又比较花费时间,主要以后我也没有想要去从事游戏这么方面的工作,但是Pygame这个东西是真的好用,里面有各种各样的工具,基本可以满足你的所有需求,我只是用了几个必须的方法,做出来了游戏的雏形,以后有时间的话再慢慢优化吧,不过比较Low的事就是我把素材包给换了,我自己再网上找了图片,自己P了一套素材,整出来一个美少女战士,惊了吧,我自己也惊了,好好的打飞机不好吗?其实原理都一样只是换了一个外壳,废话不多说,先给大家看看效果图。
这里写图片描述
这里写图片描述
这里写图片描述

其实就是都做的是飞机没啥意思,就面向‘肥宅’来一个美少女吧,基本就是这个样子,简单的功能,基本没有什么bug,代码全部写在了一个Py文件中,本来想分开写,然后导入呢,但是有点麻烦,现在我的水平只能达到这样,等以后有能力了,把代码优化一下,我基本都是用类来写的,把代码封装起来,显得简洁一点吧(虽然也不是那么简洁),下面给大家看一下我的代码,一共500多行吧。
这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

总体的代码就是这样,下面给大家看看我每个类里面的代码
每个列表里面放的基本都是图片

# 需求 制作一款全新版本的美少女战士
# 分析思路:图片素材  声音素材
# 1:启动界面
# 背景图片  开始游戏按钮 标题(使用sin(x)可以动画)

# 2:游戏界面
#  英雄类:
#      属性:图片 血量 速度 渲染屏幕 初始位置
#      方法:移动 发射子弹 死亡 无敌  碰撞敌机
#  敌人类:
#      属性:图片 血量 速度 初始位置  渲染屏幕
#      方法:移动  死亡
#   子弹类:
#      属性:图片 位置 速度 屏幕
#      方法:移动 碰撞敌机
#   敌机工厂类:负责敌机的产生 敌机的移动
# 3:分数界面
#   历史分数最大值:储存最大值,显示分数

import pygame
import sys
import math
import copy
import random
import os

'''enemy_imgs = [
    pygame.image.load('images/enemy1.png'),
    pygame.image.load('images/enemy2.png'),
    pygame.image.load('images/enemy3.png'),
    pygame.image.load('images/enemy4.png'),
    pygame.image.load('images/enemy5.png')
]
'''
history = 0

enemy_list = []
enemy_imgs1 = [
    pygame.transform.scale((pygame.image.load('images/diren1.png')), (120, 130)),
    pygame.transform.scale((pygame.image.load('images/diren1baozha1.png')), (120, 130)),
    pygame.transform.scale((pygame.image.load('images/diren1baozha2.png')), (120, 130)),
    pygame.transform.scale((pygame.image.load('images/diren1baozha3.png')), (120, 130))
]
enemy_imgs2 = [
    pygame.transform.scale((pygame.image.load('images/diren2.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/deren2baozha1.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/diren2baozha2.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/diren2baozha3.png')), (80, 85))
]
enemy_imgs3 = [
    pygame.transform.scale((pygame.image.load('images/diren3.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/diren3baozha1.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/diren3baozha2.png')), (80, 85)),
    pygame.transform.scale((pygame.image.load('images/diren3baozha3.png')), (80, 85))

]
enemy_imgs4 = [
    pygame.transform.scale((pygame.image.load('images/direndaboss.png')), (220, 160)),
    pygame.transform.scale((pygame.image.load('images/bossbaozha1.png')), (220, 160)),
    pygame.transform.scale((pygame.image.load('images/bossbaozha2.png')), (220, 160)),
    pygame.transform.scale((pygame.image.load('images/bossbaozha3.png')), (220, 160)),
    pygame.transform.scale((pygame.image.load('images/bossbaozha4.png')), (220, 160)),
    pygame.transform.scale((pygame.image.load('images/bossbaozha5.png')), (220, 160))

]

bullet_img = [
    pygame.transform.scale((pygame.image.load('images/bullet2.png')), (36, 34)),
    pygame.transform.scale((pygame.image.load('images/heartbullet.png')), (36, 34)),
    pygame.transform.scale((pygame.image.load('images/heartbullet.png')), (36, 34)),
]
bullet_list = []

# 加载背景图片
start_bg = [
    pygame.image.load('images/beijing2.png'),
    pygame.image.load('images/beijing4.png'),
    pygame.image.load('images/zitibiaoti5.png'),
    pygame.image.load('images/starbit.png'),
    pygame.image.load('images/engbg1.png'),
    pygame.image.load('images/beijingtu1.png'),
    pygame.image.load('images/beijingtu2.png')
]
start_star = [
    pygame.image.load("images/star3.png"),
    pygame.image.load("images/star2.png"),
    pygame.image.load("images/star1.png")
]

# 开始界面类
class StatPanel:
    is_inside = False

    def __init__(self, screen, start_bg=start_bg, start_star=start_star):
        self.screen = screen
        self.start_bg = start_bg
        self.start_star = start_star
        self.index = 0

        self.statIndex = 0
        self.statAddIndex = 0
评论 633
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值