为了账号安全,请及时绑定邮箱和手机立即绑定

老师,您的代码有BUG!!!

找到文字之后再扣掉金币,如果用户金币不够呢!!!

这样是不能够扣金币的啊!!!所以老师您的代码有BUG啊!!1

当用户的金币不足的时候,按照您的代码,应该是先会提示一个文字在答案框里面,然后提示一下金币不足。

显然啊,应该金币不足的时候,不应该立即提示答案,而应先提示金币不足。

为此我写了一个解决方案。

我写了一个判断用户当前是否可以减少金币的方法,该方法如下:

/**
 * 判断用户当前是否可以减少金币
 * 
 * @return 可以:返回true,否则返回false
 */
private boolean isAbleDelCoins(int data) {
    // 判断当前总的金币数量是否可被减少
    if (mCurrentCoins + data >= 0) {
        return true;
    } else {
        return false;
    }
}

然后我们在tipAnswer里面开始的时候调用,

/**
 * 提示文字,自动选择一个答案
 */
private void tipAnswer() {
    if(!isAbleDelCoins(-getTipCoins())){
        //金币数量不够,提示错误并且返回
        Toast.makeText(MainActivity.this, "您的金币不够呀,请充值~", Toast.LENGTH_LONG).show();
    }
    boolean tipWord = false;
    for (int i = 0; i < mBtnSelectWords.size(); ++i) {
        if (mBtnSelectWords.get(i).mWordString.length() == 0) {
            onWordButtonClick(findIsAnswerWord(i));
            // 找到一个答案的文字,并且根据当前答案框的文字填入
            tipWord = true;
            // 减少金币数量
            if (!handleCoins(-getTipCoins())) {
                // 金币数量不够,显示对话框,提示用户金币不够
                return;
            }
            break;
        }
    }
    // 没有找到可以填充的答案
    if (!tipWord) {
    // 闪烁文字来提示用户
    sparkTheWords();
    }
}

这样整个逻辑就是实现了,嘿嘿,看看效果,当我再点击提示文字的时候且金币不够的话:

54822b730001981904330662.jpg

小伙伴们如果有更好的解决方案,欢迎交流呀~

正在回答

6 回答

好,很好,非常好~

0 回复 有任何疑惑可以回复我~
#1

noprom 提问者

嘿嘿!
2014-12-08 回复 有任何疑惑可以回复我~

你的Genymotion是在win10上面跑吗?

0 回复 有任何疑惑可以回复我~
#1

noprom 提问者

win8
2016-03-10 回复 有任何疑惑可以回复我~

其实貌似 不需要新添加方法,在老师原来的代码上,变换 onWordButtonClick(findIsAnswerWord(i)); 这个语句到 break 之前就可以了!

    private void tipAnswer(){    	
    	boolean tipWord = false;
    	for (int i = 0; i < mBtnSelectWords.size(); i++){
    		if (mBtnSelectWords.get(i).mWordString.length() == 0){
  			
    			tipWord = true;
    	    	// 减少金币数量
    	    	if (!handleCoins(-getTipCoins())){
    	    		// 金币数量不够, 显示对话框
    	    		Toast.makeText(MainActivity.this, "您的金币不够,请充值~", Toast.LENGTH_LONG).show();
    	    		tipWord = false;
    	    		return;
    	    	} 
    	    	
    	    	// 根据当前的答案框条件选择对应的文字并填入
    			onWordButtonClick(findIsAnswerWord(i));
    			break;
    		}
    	}
    	
    	// 提示用户没有找到可以填充的答案
    	if (!tipWord){
    		// 闪烁文字提示用户
    		sparkTheWords();
    	}
    }


0 回复 有任何疑惑可以回复我~
#1

noprom 提问者

好像是呀,嘿嘿,多谢~O(∩_∩)O哈哈~
2015-02-02 回复 有任何疑惑可以回复我~
/**
 * 提示文字,自动选择一个答案
 */
private void tipAnswer() {
    if(!isAbleDelCoins(-getTipCoins())){
        //金币数量不够,提示错误并且返回
        Toast.makeText(MainActivity.this, "您的金币不够呀,请充值~", Toast.LENGTH_LONG).show();
        return;
    }
    boolean tipWord = false;
    for (int i = 0; i < mBtnSelectWords.size(); ++i) {
        if (mBtnSelectWords.get(i).mWordString.length() == 0) {
            onWordButtonClick(findIsAnswerWord(i));
            // 找到一个答案的文字,并且根据当前答案框的文字填入
            tipWord = true;
            // 减少金币数量
            if (!handleCoins(-getTipCoins())) {
                // 金币数量不够,显示对话框,提示用户金币不够
                return;
            }
            break;
        }
    }
    // 没有找到可以填充的答案
    if (!tipWord) {
    // 闪烁文字来提示用户
    sparkTheWords();
    }
}

谢谢@小小皓,加了一个return,程序效率又高了~O(∩_∩)O谢谢~

0 回复 有任何疑惑可以回复我~

你的四个待选文字框是怎么写哒...?为什么只出现了一个,一直找不出来错误...

0 回复 有任何疑惑可以回复我~

考虑到代码的简介,我又重写了该方法啊,嘿嘿。

        /**
	 * 判断用户当前是否可以减少金币
	 * 
	 * @return 可以:返回true,否则返回false
	 */
	private boolean isAbleDelCoins(int data) {
		// 判断当前总的金币数量是否可被减少
		return (mCurrentCoins + data >= 0);
	}

然后效果和之前是一样的,只不过少几行代码呢。

0 回复 有任何疑惑可以回复我~
#1

小小皓

Toast.makeText(MainActivity.this, "您的金币不够呀,请充值~", Toast.LENGTH_LONG).show(); 后面是不是应该有return啊,要不提示了toast,还是给找了
2015-01-25 回复 有任何疑惑可以回复我~
#2

noprom 提问者 回复 小小皓

对对!!!非常感谢!!这样程序又高效了!!O(∩_∩)O谢谢
2015-01-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android猜歌游戏是这样炼成的
  • 参与学习       27735    人
  • 解答问题       422    个

手把手教你完成一款猜歌类游戏,向你展示游戏实现的全部细节

进入课程

老师,您的代码有BUG!!!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信