Android学习游戏开发之打地鼠(二,游戏设计和主界面设计)

Android学习游戏开发之打地鼠(二,游戏设计和主界面设计)

2023年7月7日发(作者:)

Android学习游戏开发之打地⿏(⼆,游戏设计和主界⾯设计)游戏设计思路:主界⾯点击开始游戏:进⼊打地⿏界⾯游戏中有12个地洞,游戏时间为30s(可以⾃⼰设置),每0.5s会有地⿏随机出现在⼀个地洞中,玩家触摸屏幕,打到地⿏加10分,否则不加分。30s后游戏结束,弹出窗⼝显⽰获得分数,需要玩家输⼊姓名后,点击确定保存到本地数据库中。设计实现:每个地洞为⼀个ImageButton,开始设置背景为地洞图⽚,地⿏出现则设置为地⿏图⽚,给每个按钮添加点击事件,当玩家点击按钮时,如果打到地⿏,该按钮设置打中地⿏图⽚,否则设置没打中地⿏的图⽚。游戏结束开启记录窗⼝,记录玩家信息。主界⾯点击排⾏榜:如果没有记录,提⽰暂⽆排⾏,有记录就跳转界⾯,按分数从⾼到低显⽰玩家信息。设计实现:通过对数据库的查询操作,返回⼀个ArrayList,如果ArrayList长度为0,则提⽰“暂⽆排⾏”,否则开启⼀个新的Activity显⽰玩家信息。主界⾯点击关于:显⽰游戏的相关信息。设计实现:Activity跳转。主界⾯点击退出:游戏退出设计实现:调⽤finish()函数。主界⾯点击⾳乐图标:游戏打开默认播放⾳乐,点击图标背景⾳乐和⾳效会关闭,再次点击会播放背景⾳乐和⾳效。设计实现:⼀个ToggleButton(开关按钮)背景设置成⾳乐图标,点击会触发响应事件。按物理返回键游戏停⽌,在onDestroy()⽅法中做释放资源等操作。注:游戏中所写的Activity继承BaseActivity,⾃⼰实现的⼀个继承Activity的类。那么为什么要实现这么⼀个类呢?在游戏的后期添加⾳效时,程序进⼊后台,背景⾳乐会⼀直播放,因为背景⾳乐在所有的Activity中都会播放,所以要在每个Activity的⽣命周期的回调函数中对⾳乐操作⽆疑是⽐较⿇烦的,所以继承⾃⼀个我们⾃⼰实现的BaseActivity,只需要在BaseActivity中来操作即可。BaseActivity的代码如下:package ;import ty;import ;/** *

* @author cyj *

*/public class BaseActivity extends Activity { // ⾳乐播放标记 protected Boolean isLive = false; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); } @Override protected void onResume() { me(); // 如果进⼊后台前⾳乐是播放的,进⼊前台时继续播放 if (isLive) { uePlay(); } } // 进⼊后台时系统调⽤ @Override protected void onUserLeaveHint() { LeaveHint(); // 如果⾳乐在播放就暂停 if (()) { usic(); isLive = true; } else { isLive = false; } }}主界⾯代码如下:package ;import ;import ;import Event;import ;import kListener;import hListener;import utton;import ;import Button;import .R;import ller;import n;/** * 游戏主界⾯ *

* @author cyj *

*/ */public class MouseStart extends BaseActivity { // 开始游戏按钮 ImageButton start; // 排⾏榜按钮 ImageButton rank; // 关于按钮 ImageButton about; // 退出按钮 ImageButton exit; // ⾳乐开关 ToggleButton music; Intent intent; // 只有能⼀个controller定义成静态共别的Activity调⽤,之前在BaseActivity创建controller的对象每个⼦类都会有⼀个controller,出现问题 public static Controller controller; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_gamestart); controller = new Controller(this); /* * 初始化各个按钮 */ start = (ImageButton) findViewById(ame); rank = (ImageButton) findViewById(); about = (ImageButton) findViewById(); exit = (ImageButton) findViewById(); music = (ToggleButton) findViewById(l); /* * 给每个按钮添加点击事件 */ GameStartOnClick game = new GameStartOnClick(); lickListener(game); ouchListener(game); lickListener(game); ouchListener(game); lickListener(game); ouchListener(game); lickListener(game); ouchListener(game); lickListener(game); // 游戏开启默认播放背景⾳乐 (); } class GameStartOnClick implements OnClickListener, OnTouchListener { @Override public void onClick(View v) { int id = (); switch (id) { case ame: // 进⼊开始游戏Activity intent = new Intent(, ); gs(_ACTIVITY_NO_USER_ACTION); ctivity(intent); break; case : // 通过控制类对象查询全部玩家信息 if (!()) { xt(, "暂⽆排⾏", _SHORT) .show(); } break; case : case : // 打开关于Activity intent = new Intent(, ); gs(_ACTIVITY_NO_USER_ACTION); startActivity(intent); break; case : // 关闭Activity finish(); break; case l: if (ked()) { (); } else { (); } break; default: break; } } /** * 设置按钮按下和抬起的效果 */ @Override public boolean onTouch(View v, MotionEvent event) { int id = (); switch (id) { case ame: if (ion() == _DOWN) { kgroundResource(amean); } if (ion() == _UP) { kgroundResource(ame); } break; case : if (ion() == _DOWN) { kgroundResource(); } if (ion() == _UP) { kgroundResource(); } break; case : if (ion() == _DOWN) { kgroundResource(n); } if (ion() == _UP) { kgroundResource(); } break; case : if (ion() == _DOWN) { kgroundResource(); } if (ion() == _UP) { kgroundResource(); } break; default: break; break; } return false; } } @Override protected void onDestroy() { // TODO Auto-generated method stub roy(); (); }}顺便贴⼀下About中的代码:这个类⽐较简单直接加载对应的xml⽂件就可以,⼀些介绍的话在xml中写。package ;import ;import .R;/** * 关于界⾯ * @author cyj * */public class About extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_about); }}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688673788a161495.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信