OpenGLでオセロを作る①「ボードの描画」

岡野です。
初のシリーズ物です。
僕がプログラミングで最初に作ったのがオセロでした。
最初はコマンドライン上で座標を入力して置いてましたが、OpenGLを使ってGUI化してからはクラスでよくドヤ顔してました。

  1. はじめに

    OpenGLを使ってオセロゲームを作ります。
    さらに、敵コンピュータを作って簡単な人工知能を作ってみたいと思います。
    ゲームとそのゲームで動く敵コンピュータを自分で作って闘いながら改良していくのがプログラミングの醍醐味だと思います。

  2. プロジェクトの作成

    まずは、こちらを参考にOpenGLのプロジェクトを作成します。

  3. 早速、オセロボードの作成

    ではさっそく、オセロのゲームボードを表示させてみましょう。
    まず、下のソースコードにをコピペしてください。
    ところどころ、コメントの//が表示されてませんが、コピペはできます。

    
    #ifdef __APPLE__
    	#include <GLUT/glut.h>
    #else 
    	#include <glut.h> 
    	//#include <GL/glut.h> 
    #endif
    
    void display(void)
    {	
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	//ラインを描く
    	glColor3f(0,0,0);
    	glLineWidth(3);//線幅の指定。省略可。指定しなければ1。
    	glBegin(GL_LINES);
    	for(int i=0;i<9;i++){
    		glVertex2i(80+80*i,720);//縦線上端
    		glVertex2i(80+80*i,80);//縦線下端
    		glVertex2i(80,80+80*i);//横線左端
    		glVertex2i(720,80+80*i);//横線右端
    	}
    	glEnd();
    
    	//点を4箇所描く
    	glColor3f(0,0,0);
    	glPointSize(10);
    	glBegin(GL_POINTS);
    		glVertex2i(240,240);
    		glVertex2i(240,560);
    		glVertex2i(560,240);
    		glVertex2i(560,560);
    	glEnd();
    	glutSwapBuffers();
    }
    
    int main(int argc, char *argv[])
    {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);	
    	glutInitWindowSize(800,800);//ウィンドウの画面の幅と高さを指定
    	glutInitWindowPosition(0, 0);//ウィンドウの場所を指定
    	glutCreateWindow("Othello");//ウィンドウの名前
    	glClearColor( 0 , 0.7, 0, 1);//オセロ盤の色
    	gluOrtho2D(0, 800, 800,0);//座標系の設定
    	glutDisplayFunc(display);//描画関数を指定
    	glutMainLoop();
    	return 0;
    }
    
    

    visual studioでは「デバッグ」->「デバッグ無しで実行」を押してみると、コンパイルされ、実行されます。
    Xcodeでは、左上の再生ボタンで実行されます。

    実行してみると次のように表示されると思います。
    othello1
    これでオセロボードが作成できました。

  4. 解説

    OpenGLの関数にはgl~やglu~という名前がついています。
    main関数を見ると、OpenGLの初期化に様々な関数が呼び出されていますが、関数名やコメントを見れば、大体察しが付くと思います。
    とりあえず、今回は「おまじない」ということにしてスルーします。
    基本的には、glutDisplayFunc関数の引数に、描画の関数の名前を与えると、描画するときに、その描画関数が呼び出されます。
    サンプルコードの場合は、display関数が与えられているので、描画をする時はdisplay関数が呼び出されます。
    display関数の中で、線や四角形などの図形を描画します。

    基本的には、
    1.glColor3f関数でRGBで色を指定し、
    2.glBegin関数の引数で図形を指定し。
    3,glEnd関数との間に、glVertex2i関数で図形の頂点を指定します。

    glColor3fの引数は0~1で表します。

    glBeginの引数は、ググればいろいろ出てきますが。
    GL_LINESは直線。
    GL_QUADSは四角形。
    などいろいろあります。

    glVertexAB関数では、A={2,3}が次元を表し、B={i,f,d}が引数の型を指定します。
    例えば、3次元で浮動小数点数float型で頂点したい場合はglVertex3fを使います。

    簡単ですが、これだけで、OpenGLは半分理解できたと思っても過言ではありません。

  5. 次回は石を表示させてみましょう。

広告

OpenGLでオセロを作る①「ボードの描画」」への2件のフィードバック

  1. tellko

    こんにちは!
    オセロの作り方の更新楽しみにしています、またお時間があるときにでもお願いします!

    返信

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中