疯狂猜歌实现(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
原创粉丝点击