打砖块,Android休闲小游戏开发
作者:访客发布时间:2023-12-31分类:程序开发学习浏览:96
导读:A.项目描述《打砖块》是一款经典的休闲小游戏,结合了经典的图形和音效,给玩家带来了轻松愉快的游戏体验。该游戏操作简单易上手。玩家只需通过触摸屏幕控制底部的“拍子”左右移动,...
A. 项目描述
《打砖块》是一款经典的休闲小游戏 ,结合了经典的图形和音效,给玩家带来了轻松愉快的游戏体验。 该游戏操作简单易上手。玩家只需通过触摸屏幕控制底部的“拍子”左右移动,以反弹“小球” 击碎 顶部的砖块。玩家可以根据球的角度和速度调整“拍子”的位置,以便更好地击碎砖块并获得高分。 该游戏注重用户体验和界面设计。游戏界面简洁清晰,色彩搭配和谐,给人一种舒适愉悦的感觉。游戏操作流畅自然,音效效果逼真,让玩家沉浸其中。
B. 开发工具
- Android Studio Dolphin | 2021.3.1 Patch 1
- Java , JDK 11.0.13
- Gradle , gradle-7.4
C. 代码设计
界面设计
游戏主界面的上部,展示当前的得分、历史最高分以及生命值,这部分的信息由 TextView
显示。
以下的部分为玩家的操控界面,这部份的采用了自定义示图来实现,即 GameView
类,它继承自 GLSurfaceView
,负责游戏画面的绘制和响应用户的操作。
GLSurfaceView
是可以使用OpenGL
的 SurfaceView
,它继承自 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. 项目演示
E. 项目源码
关注公众号『数字森林』,后台发送关键字:打砖块,获取项目源码。
相关推荐
- 轻松上手:
(三)笔记可再编辑 - 如何在iPhone,iPad和Android上使用WordPress应用程序
- 一款简单高效的Android异步框架
- [Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- Android---View中的setMinWidth与setMinimumWidth的踩坑记录
- Android广播如何解决Sending non-protected broadcast问题
- 有关Android Binder面试,你未知的9个秘密
- 开启Android学习之旅-2-架构组件实现数据列表及添加(kotlin)
- Android低功耗蓝牙开发总结
- Android 通知文本颜色获取
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 8Android广播如何解决Sending non-protected broadcast问题
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版