2017-01-24 2 views
0

im new для студии android, и я хочу, чтобы эта функция зациклилась и создала бесконечную петлю падающего шара, которая будет забита до тех пор, пока два целых числа не совпадут, но когда i попробуйте запустить его, то это будет только цикл один раз, и если я изменить streak = 2 в else заявлении приложение врезаетсякак организовать эту функцию, чтобы она работала так, как я ее намереваюсь

public void mainGameLoop(){ 
    do { 
     //sets Balls integer 
     setColourint(); 
     ball.setVisibility(View.VISIBLE); 
     //ball fall 
     float bottomOfScreen = getResources().getDisplayMetrics() 
       .heightPixels - (ball.getHeight() * 4); 

     //fall animation 
     ball.animate() 
       .translationY(bottomOfScreen) 
       .setInterpolator(new AccelerateInterpolator()) 
       .setInterpolator(new BounceInterpolator()) 
       .setDuration(9000); 
     //once animation is complete compares balls variable with current variable 
     if (colourint == ranint){ 
      //if they are same then +1 score 
      score = score+1; 
      scr.setText(Integer.parseInt(String.valueOf(score))); 

     } else { 
      //else game is over 
      streak = 2; 
     } 
     //repeat until game is over 
    } while (streak == 1); 
} 

как только шары достигли дна относительного расположения я хочу функция, чтобы проверить, если setcoulour int а ran int те же, а затем, если score = score + 1, мяч возвращается в начало, вызывается функция setColourInt, и мяч снова падает (и так далее и т. д.), но если не кончится цикл, и это игра закончится ... я извиняюсь за свою вопиющую некомпетентность, но я не могу себе представить, что вы, ребята, не помните, когда вы тоже были, это было наивно, когда дело доходило до кодирования , большое спасибо Tom

+0

Что он делает сейчас, когда вы считаете «неправильным»? – markspace

ответ

0

Вы должны дать UI шанс нарисовать то, что вы делаете. Способ, которым вы его закодировали, какой бы способ (onStart, onCreate и т. Д.), Который вызывает ваш mainGameLoop, никогда не вернется, потому что он застрял в бесконечном цикле. Это ошибка.

Один из способов сделать это - создать View и реализовать логику рисования игры в методе onDraw. Поток пользовательского интерфейса вызовет ваш метод onDraw, когда пришло время рисовать. Вот статья, в которой говорится об этом подходе: http://cjds.github.io/2014/04/28/Creating-a-simple-android-game/

Смежные вопросы