2011-02-01 3 views
0

Я делаю автомобиль игры в java. Скорость дороги задана основным методом, но мне нужно обновить скорость (автомобиль выходит за пределы и замедляется травой).Обновление переменных в основном методе?

Вот часть, которую я хочу контролировать, скорость меняется.

if(collision[12] > x)   
{ 
    roadSpeed = 150; 
    System.out.println("outside"); 
} 
else 
{ 
    System.out.println("inside"); 
    roadSpeed = 100; 
} 

Вот основной метод до того, что мне нужно обновить.

public static void main(String[] args) 
{ 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      final TestRoad road = new TestRoad(); 
      road.timer.setDelay(roadSpeed); 

После изменения значения int основной метод не обновляет задержку таймера. Я смотрел на списки изменений, но я не хочу никаких кнопок или слайдеров.

были ИНТ объявлен в были его называют

public Boolean start = true; 
    public int i; 
    public int x; 
    public int y; 
    public int z; 
    public static int roadSpeed = 100; //<<<<<<<<<<declared here  
    public int lcolPoint = 0; 
    public int rcolPoint = 0; 
    public int colSlot = 0; 
    public int colOffset = 0; 
    public int carY; 
    public int[] collision; 
    public int[] colBuffer; 
    private BufferedImage carImg; 
    private Boolean right=false; 
    private Boolean left=false; 
    private Boolean first=true; 




    public TestRoad(){ 

     this.setFocusable(true); 
     addKeyListener(this);      //THIS IS ADDING THE KEYLISTENER 
     Color colors = new Color(51,102,0);    
     setBackground(colors); 


     //uses setPreferredSize instead of setSize because parent component utilizes a layout manager. 
     setPreferredSize(new Dimension(500, 500)); 

     collision = new int[500]; 
     colBuffer = new int[2]; 

     for(int i=0; i<500; i++){ 
       collision[i] = 0; 
     } 


     timer = new javax.swing.Timer(25, new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       addPoint(); 
       carMove(); //<<<<< called here 
       repaint(); 
      } 
     }); 

carmove -

public void carMove() 
    { 
     if(right==true) 
      x+=8; 

     if(left==true) 
      x-=8; 

      colBuffer[0] = collision[1]; 
      collision[1] = lcolPoint; 

      collision[colSlot] = lcolPoint; 

      for(int z=2; z<21; z++){ 
      colBuffer[1] = collision[z]; 
      collision[z] = colBuffer[0]; 
      colBuffer[0] = colBuffer[1]; 
      }  

      if(collision[12] > x)   
      { 
       roadSpeed = 100; 
       System.out.println("outside"); 
      } 
      else 
      { 
       System.out.println("inside"); 
       roadSpeed = 50; 
      } 


    } 
+0

Что в мире происходит с вашим отступом? Вы действительно отступаете от тел ifs меньше, чем сами? –

+0

Я нормализовал отступы для остальной части удобства чтения в мире. –

+0

, но я проклят, если я собираюсь повторить второй код кода. –

ответ

1

Phillip, это помогло бы всего много, если бы мы могли видеть, как ты называешь эту часть код. Как бы то ни было, мы не можем видеть, где объявлено roadSpeed, и мы не имеем никаких подсказок в его области.

Но, скажем, это было что-то вроде этого

class Game { 
    private int roadSpeed = 200 ; // just an initial value 

    public void getSpeed(int collision, int roadSpeed){ 
    if(collision[12] > x){ 
     roadSpeed = 150; 
     System.out.println("outside"); 
    } else { 
     System.out.println("inside"); 
     roadSpeed = 100; 
    } 
    return; 
    } 

    public static void main(String[] args){ 
    // do something that sets collision 
    getSpeed(collision, roadSpeed); 
    // and on with your code 

В этом коде, например, вы думаете вы настраиваете roadSpeed, но это внутреннийroadSpeed, а не переменная член.

Так что, если это не поможет, вам придется включить дополнительные подсказки.

+0

Это комментарий, а не ответ. Это делает меня подозрительной, потому что вы должны знать лучше. –

+0

ну, у меня просто был более длинный ответ, который, к сожалению, был у C. Теперь я возвращаюсь и говорю это на Java. Что касается подозрительности, не будь таким циником. –

+0

Я добавил еще несколько кода, надеюсь, это помогло. Извините за бедные организации несколько человек работают над этим, и некоторые из форматирования перепутались при копировании. – Phillip

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