2012-07-17 111 views
3

我編寫我的一個類時出現錯誤。語法錯誤'class'@ expected [JAVA - LWJGL]

我的進口,

import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; 
import static org.lwjgl.opengl.GL11.GL_MODELVIEW; 
import static org.lwjgl.opengl.GL11.GL_PROJECTION; 
import static org.lwjgl.opengl.GL11.glClear; 
import static org.lwjgl.opengl.GL11.glLoadIdentity; 
import static org.lwjgl.opengl.GL11.glMatrixMode; 
import static org.lwjgl.opengl.GL11.glOrtho; 

import java.util.Random; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.input.Keyboard; 
import org.lwjgl.input.Mouse; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 

public class InputDemo{ 

public InputDemo(){ 

    int height = 720; 
    int width = 1280; 

    try { 
     Display.setDisplayMode(new DisplayMode(1280, 720)); 
     Display.setTitle("Input Demonstration"); 
     Display.create(); 
    } catch (LWJGLException e) { 
     e.printStackTrace(); 
    } 

    //Initialization code OpenGL 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0.0, 1280.0, 720.0, 0.0, 1.0, -1.0); 
    glMatrixMode(GL_MODELVIEW); 


    while(!Display.isCloseRequested()) { 

    //Render (Quads are X, Y (Across, Up + Down)) 

     glClear(GL_COLOR_BUFFER_BIT); 

     if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) 
     { 
      Display.destroy(); 
      System.exit(0); 
     } 
     int dx = Mouse.getDX(); 
     int dy = -Mouse.getDY(); 
     System.out.println(dx + ", " + dy); 

     Display.update(); 
     Display.sync(60); 
    } 
    Display.destroy(); 
} 

private static class Box{ 
    public int x, y; 
    public boolean selected = false; 
    private float colorRed, colorBlue, colorGreen; 

    Box(int x, int y) 
    { 
     this.x = x; 
     this.y = y; 

     Random randomGenerator = new Random(); 
     colorRed = randomGenerator.nextFloat(); 
     colorBlue = randomGenerator.nextFloat(); 
     colorGreen = randomGenerator.nextFloat(); 
    } 

    boolean inBounds(int mousex, int mousey) 
    { 
     if(mousex > x && mousex < x + 50 && mousey > y && < y + 50) 

      return true; 
     else 
      return false; 


    } 

    void update(int dx, int dy) 
    { 
     x += dx; 
     y += dy; 
    } 

    void randomizeColors() 
    { 
     Random randomGenerator = new Random(); 
     colorRed = randomGenerator.nextFloat(); 
     colorBlue = randomGenerator.nextFloat(); 
     colorGreen = randomGenerator.nextFloat(); 
    } 

    void draw() 
    { 
     glBegin(GL_QUADS); 
      glVertex2f(x, y); 
      glVertex2f(x + 50, y); 
      glVertex2f(x + 50, y + 50); 
      glVertex2f(x, y + 50); 
     glEnd(); 
    } 
} 




/** 
* @param args 
*/ 


public static void main(String[] args) { 
    new InputDemo(); 
} 

}

錯誤是階級 '的語法錯誤',@預計' 藏漢爲, '插入 '}' 來完成塊'

另外,你可以看到draw()的錯誤,因爲我不能,但是glBegin不工作,因爲'GL_QUADS不是一個變量,但我找不到我用它作爲變量的位置。 ..'

回答

3

您的代碼缺失結束}括號爲類和類不包含; t包含(),框定義應該只是Box而不是Box()。你的構造函數關閉,方法關閉,但類不關閉。

+0

非常感謝,我總是那樣做,現在只是潛意識,我必須記住這一點。非常感謝你們兩位。 – user1448741 2012-07-17 14:17:27

4

Box之後應該沒有(),您應該在課程結束時關閉}

此外,您不應該在每個函數調用上創建一個新的Random實例。讓它成爲這個類的一個屬性。

private static class Box { 
    public int x, y; 

    private float colorRed, colorBlue, colorGreen; 
    private Random randomGenerator; 

    public Box(int x, int y) { 
     this.x = x; 
     this.y = y; 
     this.randomGenerator = new Random(System.currentTimeMillis()); 
     randomizeColors(); 
    } 

    public void randomizeColors() { 
     colorRed = randomGenerator.nextFloat(); 
     colorBlue = randomGenerator.nextFloat(); 
     colorGreen = randomGenerator.nextFloat(); 
    } 
} 

對於OpenGL的問題,在這裏採取偷看:
http://en.wikipedia.org/wiki/Java_OpenGL

你確定你一切都是進口的,並呼籲正確? 我只使用Python中的OpenGL,但如果我記得沒錯,GL_QUADS可以與Java中的Enums相比較(或靜態類變量映射到整數但帶有枚舉類名稱)

+1

非常感謝,那就是問題所在,我一直這樣做,現在只是潛意識,我必須記住這一點。非常感謝你們兩位。 – user1448741 2012-07-17 14:17:34

相關問題