質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.77%

JOGLでループ文を書く方法は有りますか?。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 403
退会済みユーザー

退会済みユーザー

最近JavaでOepnGLライブラリを使い始めまして、そこで、ゲームを開発しようと思っていた次第なのですが、
どの様にすればループ文を掛けるのかが、分からなくて困惑しています。

よろしければその方法を教えて頂けませんか?。

ちなみに、現在記述途中のソースコードはこちらです。

import com.jogamp.opengl.GL2;
import com.jogamp.opengl.GLAnimatorControl;
import com.jogamp.opengl.GLAutoDrawable;
import com.jogamp.opengl.GLCapabilities;
import com.jogamp.opengl.GLEventListener;
import com.jogamp.opengl.GLProfile;
import com.jogamp.opengl.awt.GLCanvas;
import javax.swing.*;

import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

public class Main extends JFrame implements KeyListener, Runnable, GLEventListener {

    private static final long serialVersionUID = 1L;
    public static boolean Game = true;

    public static void main(String[] args){

       Main mt = new Main();
       Thread thread = new Thread(mt);
       thread.start();

       //getting the capabilities object of GL2 profile
       final GLProfile profile = GLProfile.get(GLProfile.GL2);
       GLCapabilities capabilities = new GLCapabilities(profile);

       // The canvas
       final GLCanvas glcanvas = new GLCanvas(capabilities);

       Main b = new Main();
       glcanvas.addGLEventListener(b);
       glcanvas.setSize(800, 700);
       //creating frame
       final JFrame frame = new JFrame (" Shooting game");
       //adding canvas to it
       frame.getContentPane().add(glcanvas);
       frame.setSize(frame.getContentPane().getPreferredSize());
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       //ImageIcon icon = new ImageIcon ("./icon.png") ;
       //frame.setIconImage(icon.getImage());
       frame.setLocationRelativeTo(null);
       frame.setVisible(true);
    }



  @Override
   public void run(){
    /*
    while(Game ==true){
    addKeyListener(this);
    }
    */
   }

      /** 初期処理 */
    @Override
   public void init(GLAutoDrawable drawable) {
     // 画面を初期化する
     GL2 g = drawable.getGL().getGL2();
     // black background(黒で初期化)
     g.glClearColor(0, 0, 0, 0);
   }

  /**
   * Draw 2D graphics "H"
   * 2次元描画で"H”を描く
   */
    @Override
   public void display(GLAutoDrawable drawable) {

      // 表示 start GL(GL2 or GL2)
      GL2 g = drawable.getGL().getGL2();
      g.glClear(GL2.GL_COLOR_BUFFER_BIT);
      // draw in red
      g.glColor3d(1, 0, 0);
      // draw "H"
      g.glBegin(GL2.GL_LINES);
      // raw line
      g.glVertex2d(-0.8, 0.8);
      g.glVertex2d(-0.8, -0.8);
      g.glVertex2d(-0.8, 0.0);
      g.glVertex2d(-0.4, 0.0);
      g.glVertex2d(-0.4, 0.8);
      g.glVertex2d(-0.4, -0.8);

      // stop draw
      g.glEnd();
   }

    @Override
   public void dispose(GLAutoDrawable arg0) {
      //method body
   }

    @Override
   public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
      // method body
   }


    @Override
    public void keyTyped(KeyEvent e) {
        int key = 0;
        int keycode = e.getKeyCode();
        if (key == KeyEvent.VK_W){
         System.out.println("Wキーが押された");
         }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void keyReleased(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}

開発環境

OS:Windows10 OpenGLライブラリ:GL2 (JOGL)

何故ループ文を定義したいのかについて

要するに前置きでも言った桃李ゲームプログラムを書きたいので、ループ文を記述したり(定義したい)という事です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/04/20 18:54

    何をどうしたくてループを書きたいのでしょうか?ライブラリ利用とはいえJavaなのでJavaの文法にのっとって書けば良いとは思うのですが

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2019/04/27 11:34

    言え、その~上記の質問の前置き道理、ゲーム開発したいのでループ文が書きたいというだけの事です。
    後、このライブラリはウィンドウ描画クラスと似た感じの物なので、少し特殊な定義と成っております。

    そして返信ありがととう御座います。

    キャンセル

回答 1

check解決した方法

0

一応あれからウェブサイト上で調べまくった結果、rehape関数にループ文を直接定義すればいいという事が
発覚しました、申し訳ありません。

なかなかウェブサイト上でも見つからなかった物でつい質問してしまいました・・。
結局最終的にはJOGLゲームプログラミング方法的なキーワード関連の言葉から飛んで、
JOGLマルチスレッドというキーワードで調べたりなんだかんだして居たら見つかりました!!(*´ω`*)

にしても全く見つから無かったので、大分苦労しました・・・。

ですが、実を言うとまだ問題は有り、OpenGL全体検索掛けると有るのですが、JOGLには無いものが一つ
有りまして、実を言うとJOGLライブラリは文字を描画する定義に関する僕でも理解出来る様な情報が少ない
という事なんですよね・・・なので、タイトル画面に文字を描画したいと思っている僕からしたら、
かなり痛い事なのです。。

なので、また今度どうしても分からなかったり苦戦しまくった場合は質問させて頂く事と成ると思うので
その時にまたアドバイスよろしくお願いします!。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る