QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
查看: 142|回复: 7

为什么这个count再for循环里,却没有重置呢?

[复制链接]
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-9-3 19:36:53 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
package ciel;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.util.Scanner;

import com.rupeng.game.GameCore;

import java.awt.event.KeyEvent;
public class game2 implements Runnable
{
        public static void main(String[] args)
        {
                GameCore.start(new game2());
        }

        public void run()
        {
               
        int [] x_pos = {101,256,355,472,564,694,782};
        int [] y_pos = {328,171,524,219,475,235,111};
        boolean [] g_tf = new boolean [x_pos.length];
        GameCore.loadBgView("46905.jpg");
        GameCore.setGameTitle("夏培鑫的第一个游戏");
        for (int i=0;i<g_tf.length;i++)
        {
                 GameCore.createSprite(i, "coin");
                 GameCore.setSpritePosition(i,x_pos,y_pos);
                 GameCore.playSpriteAnimate(i,"rotate",true);
        }
       
       
       
         int mlid = 999; int txid = 777;
         GameCore.createSprite(mlid, "mario");
         GameCore.setSpritePosition(mlid,50,20);
         GameCore.playSpriteAnimate(mlid,"walk",true);
         
         Dimension mlbig =GameCore.getSpriteSize(mlid);
         int mlw = mlbig.width;
         int mlh = mlbig.height;
         
         GameCore.createText(txid,"金币数量:0");
         GameCore.setTextPosition(txid,777,20);
         GameCore.setTextColor(txid,Color.yellow);
         
       
         
         for (;;)
         {
                 
                 
                 int kc = GameCore.getPressedKeyCode();
                 Point pos = GameCore.getSpritePosition(mlid);
                 if (kc==KeyEvent.VK_UP)
                 {
                        GameCore.setSpritePosition(mlid,pos.x,pos.y-20);
                 }
                 if (kc==KeyEvent.VK_DOWN)
                 {
                        GameCore.setSpritePosition(mlid,pos.x,pos.y+20);
                 }
                 if (kc==KeyEvent.VK_LEFT)
                 {
                        GameCore.setSpriteFlipX(mlid,false);
                        GameCore.setSpritePosition(mlid,pos.x-20,pos.y);
                 }
                 if (kc==KeyEvent.VK_RIGHT)
                 {
                         GameCore.setSpriteFlipX(mlid,true);
                         GameCore.setSpritePosition(mlid,pos.x+20,pos.y);
                 }
                  
                 GameCore.pause(50);
                 
                 for (int i=0;i<g_tf.length;i++)
                 {
                         if (g_tf)
                         {
                                continue;
                         }
                         
                         Dimension gbig =GameCore.getSpriteSize(i);
                         int gw = gbig.width;
                         int gh = gbig.height;
                         
                         int gmidx = x_pos+gw/2;
                         int gmidy = y_pos+gh/2;
                         
                         int mlmidx =pos.x+mlw/2;
                         int mlmidy =pos.y+mlh/2;
                         
                         double magjl =Math.pow((gmidx-mlmidx)*(gmidx-mlmidx)+(gmidy-mlmidy)*(gmidy-mlmidy),0.5);
                         
                         if (magjl<30)
                         {
                                GameCore.hideSprite(i);
                                g_tf=true;
                               
                                int count = 0;
                                for (int s=0;s<g_tf.length;s++)
                                {
                                        if (g_tf)
                                        {
                                                 count++;
                                        }
                                       
                                }
                        GameCore.setText(txid,"金币数量:"+count);
                         if (count==7)
                         {
                                 GameCore.alert("游戏结束");
                                 break;
                         }
                         }
                 }                                  
}
         
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
 楼主| 发表于 2017-9-3 19:38:07 | 显示全部楼层
int count = 0;  这个应该是每次循环都变成0了啊,但是实际运行不是这样的.会一直自增.
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:13 天
连续签到:1 天
最佳答案
0 
发表于 2017-9-5 09:00:36 | 显示全部楼层
count,在循环外面,当然每次循环都不会置0了,g_tf在循环之前已经为true了,那么你的if(g_tf){
   count++;
}
自然每次循环都会递增了,因为你的代码太长了,我只看了你划线的哪里,只看到了这个问题。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:6 天
连续签到:6 天
最佳答案
2 
发表于 2017-9-5 10:16:23 | 显示全部楼层
count和for基本没有关联   除了count++之外

每次循环  条件成立   迭代count

所以  count并不归零
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
 楼主| 发表于 2017-9-7 18:48:41 | 显示全部楼层
最终的执念 发表于 2017-9-5 10:16
count和for基本没有关联   除了count++之外

每次循环  条件成立   迭代count

count 再 for(;;) 里面啊
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
 楼主| 发表于 2017-9-7 18:49:11 | 显示全部楼层
小气鬼 发表于 2017-9-5 09:00
count,在循环外面,当然每次循环都不会置0了,g_tf在循环之前已经为true了,那么你的if(g_tf){
   count++ ...

这个count 再for(;;)这个死循环里面啊
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:6 天
连续签到:6 天
最佳答案
2 
发表于 2017-9-8 17:10:58 | 显示全部楼层
xiazhianran6 发表于 2017-9-7 18:48
count 再 for(;;) 里面啊

count初始化之后  就没有归零的代码   如何重置
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:13 天
连续签到:1 天
最佳答案
0 
发表于 2017-9-9 10:34:54 | 显示全部楼层
如果你是想在每次循环完之后重置为0,那把count放在for循环里面的第一行就行了。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-23 08:21 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表