2014-12-08 4 views
0

Я делаю очень простой автоматический «Cookie Clicker» программу, и я получил проблему с этой строки кода:не будет обновлять значение

z = Math.ceil(15*java.lang.Math.pow(1.15, x)); 

когда х обновляется в Условный оператор этой строка кода, похоже, не понимает этого и z продолжает использовать инициализированное значение x (которое равно 0) и остается равным 15 (15 * 1,15 ф 0).

Кто-нибудь знает, что делать?

public class Tryout { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    double x = 0;    //Number of Cookie Clickers 
    double z;     // Cost of the Cookie Clickers 
    double cookies = 0;   //Amount of Cookies 
    double count = 0;   //Additional amount of cookies per second from the Cookie Clickers 
    final double constant = 0.1; //Amount of CPS (cookies per second) you get from 1 Cookie Clicker 
    z = Math.ceil(15*java.lang.Math.pow(1.15, x)); //with 0 CC the cost is 15, with 1 CC the cost is 18, with 2 CC... 
    while (1>0) {    // the game loop, (infinity loop) 
     if(cookies >= z) { //If you got enough cookies you autobuy a new CC and the number of CC's increase as well as the cost of a CC 
      System.out.println("cookies" + cookies); //Amount of cookies before you buy 
      System.out.println("You bought a new Cookie Clicker; +0.1 cookie each second!"); 
      System.out.println(cookies + " - " + z + " = " + (cookies - z)); 
      cookies = cookies - z; 
      x++; 
     } 


     try { //delayer (Uptades 1 time per second) 
      Thread.sleep(1000); 
      } catch (InterruptedException ex) { 
       Thread.currentThread().interrupt(); 
      } 

     count = x*constant; 
     cookies = cookies + 1 + count; 
     Math.round(cookies); 
     System.out.println("cookies; " + cookies);   // Your current amount of cookies 
    } 
    } 
    } 
+2

'z = Math.ceil (15 * java.lang.Math.pow (1.15, x));' вызывает 'z' для этого ** в этой точке **. Он не говорит программе перепрограммировать 'z' при каждом изменении' x'. Вы должны сделать это сами. – ajb

+0

Чтобы посмотреть на это по-другому: 'z' является _variable_, который содержит одно значение, и _nothing else_; 'z' не имеет« функции »или« формулы ». – ajb

+0

Спасибо за ответ, я не понял. – ShadowNinja

ответ

2

Эта строка кода выполняется только один раз. Переместите его внутри цикла, чтобы z повторно оценивал каждый раз, когда x изменяется.

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