6

クラスの 1 つをコーディング中にエラーが発生しました。

私の輸入品は、

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();
}

}

エラーは、「「クラス」の構文エラー、@ が期待される」、「ブロックを完了するために「}」を挿入する」です。

また、「GL_QUADS は変数ではありませんが、変数として使用した場所が見つからないため、glBegin が機能しないため、draw() でエラーが表示されますか?」 '

4

2 に答える 2

9

()後はなく、クラスの最後に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 の列挙型 (または int にマップされているが列挙型の名前を持つ静的クラス変数) に匹敵するものでした。

于 2012-07-17T14:13:12.457 に答える
3

あなたのコード}には、クラスとクラスのエンドブレースがありません。含まれていません。()ボックスの定義は、そうではありBoxませんBox()。コンストラクターとメソッドは閉じられていますが、クラスは閉じられていません。

于 2012-07-17T14:13:02.497 に答える