python项目实战——飞机大战

python实践:实践是检验知识的核武器

1.项目实战

在这里插入图片描述

1)pygame的一些基本使用
2)实战

在这里插入图片描述

2.pygame快速入门

在这里插入图片描述

2.1 使用pygame创建图形窗口

2.1.1 游戏的初始化与退出

在这里插入图片描述

在这里插入图片描述

第一步必须是调用初始化方法init():

  • 加载pygame的所有模块

最后一步必须是调用退出方法quit():

  • 把所有加载到内存中的pygame模块卸载

2.1.2 游戏中的坐标系

矩形区域:(x,y)(width, height)

  • 1)左上角位置;
  • 2)区域大小;
    在这里插入图片描述
    在这里插入图片描述
    ->:表示返回类型

调用Rect对象的size属性时,会返回对象的(width, height)元组;

2.1.3 创建游戏主窗口

在这里插入图片描述

set_mode() -> Surface:表示该方法的返回值为Surface

在这里插入图片描述
游戏循环的上边部分,称为游戏的初始化;

进入游戏循环,代表着游戏的开始;

2.2 理解 图像 并实现 图像绘制

在这里插入图片描述

在这里插入图片描述

理解update()方法的作用

在这里插入图片描述

2.3 理解 游戏循环 与 游戏时钟

在这里插入图片描述

一帧对应一次update()方法的调用。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.4 理解 精灵 和 精灵组

在这里插入图片描述
可以根据不同的游戏角色(例如:子弹需要从下往上运动、敌机从下往上运动),派生精灵子类——重写精灵类的update()方法,改变位置变化方法。

在这里插入图片描述
开始正式使用类与对象,模块名称需要正式一些:play_sprites.py

import pygame

class GameSprite(pygame.sprite.Sprite):
    """文档注释:飞机大战游戏精灵"""
    def __init__(self, image_name, speed = 1):

        # 父类初始化方法的调用
        super().__init__()

        self.image = pygame.image.load(image_name)
        self.speed = speed

        self.rect = self.image.get_rect()

    def update(self):

        # 在屏幕的垂直方向移送
        self.rect.y += self.speed

在这里插入图片描述

import pygame
from play_sprites import *

#第一步:初始化:
pygame.init()

# 创建游戏展示的主窗口:
screen = pygame.display.set_mode((400,700))

# 1.图片加载:
bg = pygame.image.load("./images/background.png")
hero = pygame.image.load("./images/me1.png")

# 2.图片描绘到游戏主窗口上
screen.blit(bg,(0,0))
screen.blit(hero,(200,400))

# 3.更新显示
pygame.display.update()

# 设置游戏时钟对象
clock = pygame.time.Clock()

# 定义飞机的初始位置
hero_rect = pygame.Rect(150,500,102,126)

# 1.创建敌机精灵
enemy = GameSprite("./images/enemy1.png")
enemy1 = GameSprite("./images/enemy1.png", 2)

# 2.创建敌机精灵组
enemy_group = pygame.sprite.Group(enemy, enemy1)

# 第二步:游戏循环
while True:

    # 设置屏幕刷新频率
    clock.tick(60)

    #event_list = pygame.event.get()
    
  • 6
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Java的飞机大战游戏主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐。我方飞机可以随意移动,敌方飞机无规律出现。游戏玩家通过鼠标移动控制飞机移动,我方飞机在游戏开始时就一直能发射子弹,当我方子弹碰到敌方飞机时,敌方飞机消失。当玩家飞机碰到敌方子弹时,生命值减一,直到玩家飞机生命值为一时,游戏结束。基本模块包括:游戏状态控制功能模块、游戏难度的调整模块、游戏界面绘画功能模块、玩家游戏控制功能模块等。本系统结构如下: (1)游戏状态控制功能模块:游戏的状态控制包括运行及结束游戏,首先进入游戏的开始页面,在游戏进行时,玩家必须躲避或者击落敌方飞机,玩家飞机的生命值降低为0的时候游 戏就会结束,弹出游戏结束界面 (2)游戏难度的调整模块:玩家玩的时间越长游戏的难度越高,敌方飞机的数量越多、敌方飞机出现的频率越高,玩家保证飞机的存活的难度越高,操作难度相应也高。 (3)游戏界面绘画功能模块:左上角会显示玩家飞机当前生命值,游戏时间,当前分数,其他地方用来输出玩家对我方飞机的控制与敌方飞机的动作显示 (4)玩家游戏控制功能模块: 玩家可以通过控制鼠标或者键盘来控制方飞机(Hero airplane)的移动。 源码都是经过本人亲测的,都是完整可运行的,对于源码本身大家不必担心,用idea或eclipse或者myeclipse,只要是java专用的编译器都是可以运行起来
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值