2012-07-17 64 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