打砖块,Android休闲小游戏开发

A. 项目描述

《打砖块》是一款经典的休闲小游戏 ,结合了经典的图形和音效,给玩家带来了轻松愉快的游戏体验。
该游戏操作简单易上手。玩家只需通过触摸屏幕控制底部的“拍子”左右移动,以反弹“小球” 击碎 顶部的砖块。玩家可以根据球的角度和速度调整“拍子”的位置,以便更好地击碎砖块并获得高分。
该游戏注重用户体验和界面设计。游戏界面简洁清晰,色彩搭配和谐,给人一种舒适愉悦的感觉。游戏操作流畅自然,音效效果逼真,让玩家沉浸其中。
游戏预览

B. 开发工具

  • Android Studio Dolphin | 2021.3.1 Patch 1
  • Java , JDK 11.0.13
  • Gradle , gradle-7.4

C. 代码设计

界面设计

界面设计

游戏主界面的上部,展示当前的得分、历史最高分以及生命值,这部分的信息由 TextView 显示。
以下的部分为玩家的操控界面,这部份的采用了自定义示图来实现,即 GameView 类,它继承自 GLSurfaceView,负责游戏画面的绘制和响应用户的操作。

GLSurfaceView 是可以使用OpenGLSurfaceView,它继承自 SurfaceView,具备 SurfaceView 的特性,并加入了EGL的管理,它自带了一个GLThread绘制线程,绘制的工作直接通过OpenGL在绘制线程进行,不会阻塞主线程。

  • GameView 的绘制函数 —— onDrawFrame(),逐帧绘制画面。
        /* onDrawFrame():每帧都通过该方法进行绘制。*/public void onDrawFrame(GL10 gl) {......// 一个简单的游戏循环实现int frame_counter = 0;while (mLag >= Config.MS_PER_UPDATE) {// 如果游戏结束或暂停,则停止更新状态并冻结最后一帧,以便用户可以看到发生了什么。if (!State.getGamePaused() && !State.getGameOver()) {mGame.updateState();}mLag -= Config.MS_PER_UPDATE;// 如果设备速度太慢,无法保持良好的帧速率,则跳过游戏处理,以便游戏在该设备上运行速度较慢。if (frame_counter >= Config.FRAME_SKIP) {break;}frame_counter++;}gl.glClear(GL10.GL_COLOR_BUFFER_BIT);mGame.drawElements(gl);}
  • GameView 监听屏幕触摸事件 —— onTouchEvent(),响应用户的操作。
    public boolean onTouchEvent(MotionEvent e) {switch (e.getAction()) {case MotionEvent.ACTION_MOVE:......// 更新球拍位置mRenderer.updatePaddlePosition(resultWorldPos[0]);break;case MotionEvent.ACTION_DOWN:// 仅当用户单击屏幕时才开始游戏State.setGamePaused(false);break;}return true;}

元素设计

游戏的元素包含如下:

  • 球拍,位于界面的底部,作用是接住小球、控制小球的反弹方向,用橙色来表示;

  • 小球,在界面中上下运动,击碎砖块,用橙色来表示;

  • 砖块:

    • 普通砖块,击打一次就破碎,用白色表示;
    • 硬砖块,需要击打两次才能击碎,用深蓝色表示;
    • 运动砖块,该砖块是左右移动的,位置变化,要击中它有一定挑战,用黄颜色表示;
    • 爆炸砖块,击中之后回发生爆炸,同时会将相邻的砖块炸碎,用红色表示;
    • 碎砖块,用于展现爆炸之后的碎屑效果。

这些元素具有一些的共同的属性和行为,因此设计了共同的基类 Rectangle ,规范定义了通用的属性和函数。

D. 项目演示

打砖块,开发了一款 Android 休闲小游戏

E. 项目源码

AS-截图
关注公众号『数字森林』,后台发送关键字:打砖块,获取项目源码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA+SSM+VUE的前后端分离的大学竞赛管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着互联网技术的快速…

青龙面板的安装

一、安装docker 首先,需要在服务器上安装docker。 没有服务器的可以使用虚拟机,或申请一台三丰云的免费云服务器体验一下,独立IP地址,送免备案服务,可以满足基本的使用,三丰云上还有免费虚拟主机等其他免费…

ES6之解构赋值详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

Springboot整合MybatisPlus的基本CRUD

目录 前言1. 搭建项目2. 基本的CRUD 前言 发现项目框架是MybatisPlus的,由于个人使用该框架的CRUD比较少 对此学习过程中,从零到有开始搭建学习还是比较重要的,感悟会比较多 关于各个类的使用,可看如下文章: 剖析Ja…

Java—AOP案例-记录操作日志

简介:上一篇文章“JAVA语言—AOP基础”已经详细的介绍了AOP的各个功能接口,已经使用步骤,这篇文章就是基于此来做的一个小案例。案例的功能是记录登录的用户对于数据库表的相关信息进行增、删、查、改的操作记录下来,并且存储到数…

腾讯云轻量应用服务器详细介绍(全网超详细说明)

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器,CPU内存带宽配置高并且价格特别优惠,轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年,540元三年、2核4G5M带宽218元一年,756元3年、4核8G12M带宽646元15个月等&#xf…

微信小程序开发系列-08自定义组件模版特性

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

点成案例 | 如何利用细胞计数仪在单细胞测序中评估细胞

一、概述 单细胞测序技术能够用来表征异常细胞群,分析稀有细胞和细胞图谱网络,发现异质性等。由于单细胞测序巨大的应用潜力,目前此技术正在经历爆炸性增长。然而,单细胞测序需要成本和时间的大量投资。为了确保时间和资源的投资…

正确的认识 字节码文件

上一篇中认识了JVM的基本组成,我们说JVM只认识字节码文件。那么在字节码文件进入JVM之前,我们先认识了解字节码文件长什么样,我们作为工程师不需要去死扣底层的理论知识,但是我们只是需要正确的打开字节码文件 知道里面有哪些部分…

[Angular] 笔记 22:ElementRef

chatgpt: ElementRef 是 Angular 中的一个类,它用于包装对 DOM 元素的引用。它允许开发者直接访问与 Angular 组件关联的宿主 DOM 元素。 当在 Angular 中需要直接操作 DOM 元素时,可以使用 ElementRef。通常情况下,最好避免直接操作 DOM&a…

Prism介绍

Prism介绍 Prism是一个框架,用于在WPF、Xamarin Forms、Uno Platform和WinUI中构建松散耦合、可维护和可测试的XAML应用程序。 设计目标 为了实现下列目的: 创建能够由模块组成的程序,这些模块能够被单独地编写、组装、部署,并且对…

十三:爬虫-Scrapy框架(下)

一:各文件的使用回顾 1.items的使用 items 文件主要用于定义储存爬取到的数据的数据结构,方便在爬虫和 Item Pipeline 之间传递数据。 items.pyimport scrapyclass TencentItem(scrapy.Item):# define the fields for your item here like:title scr…

jmeter函数助手-常用汇总

一.函数助手介绍 1.介绍及作用 介绍: jmeter自带的一个特性,可以通过指定的函数规则创建后进行调用该函数,在后续接口请求参数中进行调用 作用 (1)做参数化。 2.如何使用 jmeter工具栏-->工具-->函数助手…

LabVIEW在大型风电机组状态监测系统开发中的应用

LabVIEW在大型风电机组状态监测系统开发中的应用 风电作为一种清洁能源,近年来在全球范围内得到了广泛研究和开发。特别是大型风力发电机组,由于其常常位于边远地区如近海、戈壁、草原等,面临着恶劣自然环境和复杂设备运维挑战。为了提高风电…

DockerCompose - 容器编排、模板命令、compose命令、Pottainer 可视化界面管理(一文通关)

目录 一、DockerCompose 容器编排 1.1、简介 1.2、Docker-Compose 安装 1.2.1、在线安装 1.2.2、离线安装 1.3、docker-compose.yml 中的模板命令 前置说明 模板命令 1.4、DockerCompse 命令 前置说明 up down exec ps restart rm top pause暂停 和 unpause恢…

linux下的进程布局与ububtu操作系统下的proc文件夹学习笔记一

相关内容我写在公众号,写的挺详细的,欢迎关注我的公众号。请使用鼠标右键,新建标签页打开,直接点击显示参数错误,不知道怎么回事?linux下的进程布局与ububtu操作系统下的proc文件夹学习笔记 (qq.com)https:…

Windows下配置GCC(MinGW)环境

一、下载并安装MinGW 步骤1:下载MinGW安装器 前往MinGW的官方下载源,通过以下链接可以获取到最新版的MinGW安装程序: 网页地址:https://sourceforge.net/projects/mingw/files/ [MinGW 下载地址](https://sourceforge.net/proj…

二级路由的配置以及注意项

二级路由 比如说LayOut组件是父亲,LayOut和ArtComp是儿子,那我们怎么给儿子配路由呢? 1、首先在router下的index.js导入组件,配置规则,详细如下 // 导入路由相关组件 import LayOut from /views/LayOut import UserC…

页面布局--Flexbox的自动边距

标题页面布局–Flexbox的自动边距 通过简单的margin:auto,我们就能实现元素的多种对齐方式。 假设我们在盒子模型里有四个元素: 先给容器使用flex布局: .container {display: flex;justify-content: flex-start;align-items: center;gap: 6…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-00x00

如上表所示,MOE0,OSSI0,CCxE0,CCxNE0时,OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…