疯狂猜歌实现(8)—— 实现答案判断逻辑
来源:互联网 发布:淘宝评价怎么取消隐藏 编辑:程序博客网 时间:2024/05/22 10:50
游戏进行之中会有相应的状态值,比如过关,不过关以及进行中等多种状态,本游戏也不例外,不过相应状态会少一些也比较简单。 在疯狂猜歌中游戏的状态包括,1. 答案正确; 2. 答案错误 3. 答案缺失。 所以我们需要定义3个状态值来表示每一种状态的情况,这样在用户点击每一个按钮时便可以进行相应的逻辑判断。
private static final int CHECK_ANSWER_RIGHT = 0; private static final int CHECK_ANSWER_LACK = 1; private static final int CHECK_ANSWER_WRONG = 2;上面便是定义的三种状态,包括答案正确,答案缺失以及答案错误,那么每一种状态究竟是如何判断的呢,可以看一下下面相关状态的判断方法
/** * 检查当前答案情况 * @return 答案状态值,0:答案正确,1:答案缺失,2:答案正确 */ private int checkTheAnswer(){ //答案缺失 for(int i=0;i<mSelectButtons.size();i++){ if(mSelectButtons.get(i).mWordText.length() == 0){ return CHECK_ANSWER_LACK; } } //答案错误 StringBuilder sb = new StringBuilder(); for(int i=0;i<mSelectButtons.size();i++){ sb.append(mSelectButtons.get(i).mWordText); } String songName = getCurrentStageSong(mCurrentStageIndex).getSongName(); if(!sb.toString().equals(songName)){ return CHECK_ANSWER_WRONG; } //答案正确 return CHECK_ANSWER_RIGHT; }逻辑比较简单,就不赘述了,那么有了状态后究竟该在什么地方进行状态的判断呢?显而易见,应该是当用户每次点击button的时候就进行判断。而我们知道当答案正确时应当显示过关界面,这个以后联系过关界面的布局再去实现,此处先只是简单的显示一个黑屏的布局;当答案错误时,我们需要实现一个文字不同颜色交替闪烁的效果,来提示用户答案错误;而当答案缺失时是属于一个用户正在选择答案的过程,应该暂时不做什么特殊的处理。
通过以上分析,重点便是答案错误时的逻辑处理,一下代码是处理的结果,
/** * 根据答案状态值 */ private void handleTheAnswer(){ int result = checkTheAnswer(); switch (result){ //答案缺失 case CHECK_ANSWER_LACK: Logger.d(TAG, "answer is lack"); break; //答案错误 case CHECK_ANSWER_WRONG: Logger.d(TAG, "answer is wrong"); //闪烁提示用户 TimerTask task = new TimerTask() { //标志位,用于交替闪烁 boolean mChange = false; //闪烁次数 int times = 0; @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if(times > 6){ return; } //文字交替闪烁 for(int i=0;i<mSelectButtons.size();i++){ if(!mChange){ mSelectButtons.get(i).mButton.setTextColor(Color.RED); }else{ mSelectButtons.get(i).mButton.setTextColor(Color.WHITE); } } mChange = !mChange; times ++; } }); } }; Timer timer = new Timer(); timer.schedule(task,1,150); break; //答案正确 case CHECK_ANSWER_RIGHT: Logger.d(TAG, "answer is right"); handlePassEvent(); break; }这里我们通过一个Timer定时器以及TimerTask实现对文字闪烁的一个控制。以上便是对答案判断逻辑的代码实现,详情请下载源码。
源码下载
0 0
- 疯狂猜歌实现(8)—— 实现答案判断逻辑
- 疯狂猜歌实现(11)—— 过关、通关界面及相关逻辑实现
- 疯狂猜歌实现(10)—— 实现提示、删除按键之事件处理以及金币逻辑
- 疯狂猜歌实现(1)—— 实现顶部布局
- 疯狂猜歌实现(2)—— 实现唱片布局以及播放动画
- 疯狂猜歌实现(3)—— 实现播放相关动画
- 疯狂猜歌实现(12)——实现主界面的提示对话框
- 疯狂猜歌实现(7)—— 文字选择框的显示和隐藏
- 疯狂猜歌实现(9)—— 为游戏主界面添加浮动按钮
- 疯狂猜歌实现(13)—— 播放歌曲与音效
- 疯狂猜歌实现(4)—— 实现文字待选框与已选文字框布局
- 疯狂猜歌实现(5)—— 实现待选文字框动画以及点击事件
- DBMS实现——疯狂的开始
- 疯狂猜歌实现(6)—— 生成待选文字框随机文字以及动态生成已选框
- 【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断(五)
- 【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断(五)
- 【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断(五)
- 【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断(五)
- 网络IO之阻塞、非阻塞、同步、异步总结
- 概率论
- handsontable自定义渲染
- icloud之部署架构
- Acdream 1061 郭式树
- 疯狂猜歌实现(8)—— 实现答案判断逻辑
- Enable multithreading to use std::thread: Operation not permitted
- iOS--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- 24v转12v芯片
- 致PHP路上的“年轻人”
- php 下载完成后删除文件
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0错误解析
- js、jquery、包括后台程序的验证、正则