亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

opengl 第一個小游戲

發布時間:2020-07-10 00:23:08 來源:網絡 閱讀:805 作者:wzdouban 欄目:編程語言
#include <windows.h>    /* Windows的頭文件 */
#include <gl/gl.h>      /* OpenGL32庫的頭文件 */
#include <gl/glu.h>     /* GLu32庫的頭文件 */
/* #include <gl/glaux.h>    // GLaux庫的頭文件 */
#include <gl/glut.h>    /* Glut庫頭文件 */
#include <time.h>
#include <iostream>
using namespace std;
int	aa[20][20]; int xx = 0; int yy = 0;
int	screenWidth	= 640;
int	screenHeight	= 480;
int	cc		= 0;
/* 全局變量 */
int winWidth( 500 ), winHeight( 500 );

#define MAX_CHAR 128

void Initialization()
{
	glClearColor( 1.0f, 1.0f, 1.0f, 1.0f ); /* 設置背景色為白色 */
}


void OnReshape( int w, int h )
{
	winWidth	= w;
	winHeight	= h;

	glViewport( 0, 0, w, h );       /* 設置視區大小 */

	glMatrixMode( GL_PROJECTION );  /* 投影模式 */
	glLoadIdentity();               /* 載入單位矩陣以初始化當前矩陣 */

	gluOrtho2D( 0, w, 0, h );       /* 將當前繪圖區域設置為二維正交投影 */

	glMatrixMode( GL_MODELVIEW );   /* 模型視圖模式 */
	glLoadIdentity();               /* 初始化當前矩陣 */
}


void drawString( const char* str )      /* 屏幕顯示字體 */
{
	static int	isFirstCall = 1;
	static GLuint	lists;

	if ( isFirstCall )
	{
		isFirstCall = 0;
		/* 申請MAX_CHAR個連續的顯示列表編號 */
		lists = glGenLists( MAX_CHAR );
		/* 把每個字符的繪制命令都裝到對應的顯示列表中 */
		wglUseFontBitmaps( wglGetCurrentDC(), 0, MAX_CHAR, lists );
	}
	/* 調用每個字符對應的顯示列表,繪制每個字符 */
	for (; *str != '\0'; ++str )
	{
		glCallList( lists + *str );
	}
}


void OnDisplay()
{
	glClear( GL_COLOR_BUFFER_BIT );

	glColor3f( 0.0f, 0.0f, 0.0f );          /* 設置字體顏色 */
	glRasterPos2i( 0, winHeight - 15 );     /* 起始位置 */
	drawString( "  Hello,OpenGL." );        /* 輸出的字符串 */

	glutSwapBuffers();                      /* 交換前后緩存區 */
}


void myInit()
{
	glClearColor( 1.0, 1.0, 1.0, 0.0 );
/* 設置背景顏色為亮白 */
	glColor3f( 0.0f, 0.0f, 0.0f );
/* 設置繪圖顏色為黑色 */
	glPointSize( 4.0 );
/* 設置點的大小為4*4像素 */
	glMatrixMode( GL_PROJECTION );
/* 設置合適的矩陣 */
	glLoadIdentity();
	gluOrtho2D( 0.0, screenWidth, 0.0, screenHeight );
}


void myMouse2( int button, int state, int x, int y )
{
	if ( state == GLUT_DOWN )
	{
		if ( button == GLUT_RIGHT_BUTTON )
		{
			glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
			glClear( GL_COLOR_BUFFER_BIT );
			glFlush();
		}
	}
	return;
}


void drawDot( int x, int y )
{
	xx = (x - 30) / 20; yy = y / 20;
	glBegin( GL_POINTS );
	glVertex2i( x, y );
	/* 畫一些點 */

	if ( 30 < x && x < 430 && 0 < y && y < 400 )
		cc++;
	/* aa[yy][xx] == 0;  思路1 */

	cout << cc << endl;


	if ( cc >= 4 )
	{
		glVertex2i( 450, 450 );
		/* 思路3 */
		myMouse2( GLUT_RIGHT_BUTTON, GLUT_DOWN, 300, 400 );
	}
	glEnd();
}


void myMouse( int button, int state, int x, int y )
{
	if ( state == GLUT_DOWN )
	{
		if ( button == GLUT_LEFT_BUTTON )
		{
			drawDot( x, screenHeight - y );
			glFlush();
		}else if ( button == GLUT_RIGHT_BUTTON )
		{
			glClearColor( 1.0f, 0.0f, 0.0f, 0.0f );
			glClear( GL_COLOR_BUFFER_BIT );
			glFlush();
		}
	}
	return;
}


void myDisplay()
{
	glClear( GL_COLOR_BUFFER_BIT );
	/* 清屏 */
	glBegin( GL_POINTS );

	/* 畫一些點 */
	for ( int i = 0; i < 20; i++ )
	{
		for ( int j = 0; j < 20; j++ )
		{
			if ( aa[i][j] == 1 )
				glVertex2i( i * 20 + 33, j * 20 + 5 );
		}
	}
	glEnd();

	GLfloat curSizeLine = 2;
	glLineWidth( curSizeLine );
	glBegin( GL_LINES );
	for ( int i = 0; i <= 400; )
	{
		glVertex3f( 30, 0.0 + i, 0.0f ); glVertex3f( 430, 0.0 + i, 0.0f );
		glVertex3f( 30.0 + i, 0, 0.0f ); glVertex3f( 30.0 + i, 400, 0.0f );
		i += 20;
	}


	glEnd();
	glFlush();
	/* 送所有輸出到顯示設備 */
}


void funrand()
{
	int s = 4; int x = 0; int y = 0;
	srand( time( 0 ) );
	while ( s-- )
	{
		x		= rand() % 20; y = rand() % 20;
		aa[x][y]	= 1;
	}
}


int check()
{
	for ( int i = 0; i < 20; i++ )
	{
		for ( int j = 0; j < 20; j++ )
		{
			if ( aa[i][j] == 1 )
				return(1);
		}
	}
	return(0);
}


void main( int argc, char **argv )
{
	funrand();
	glutInit( &argc, argv );                        /* 初始化工具包 */
	glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );  /* 設置顯示模式 */
	glutInitWindowSize( 640, 480 );                 /* 設置窗口大小 */
	glutInitWindowPosition( 100, 150 );             /* 設置窗口在屏幕上的位置 */
	glutCreateWindow( "大家來找茬,找找點" );                /* 打開屏幕窗口    //注冊回調函數 */
	Initialization();
	glutDisplayFunc( myDisplay );    glutMouseFunc( myMouse );
	myInit();
	glutReshapeFunc( OnReshape );                   /* 重繪函數     打印提示信息好難 */

	glutMainLoop();                                 /* 進入循環 */
}


/****************
*
*  實現鼠標監聽
*  運行效果為面板上加點
**BUG1  打點越界
*有的點能返回1  有的點確不能
**模糊判斷
****************/


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秦皇岛市| 左贡县| 女性| 昆明市| 巴林左旗| 武威市| 雅安市| 琼海市| 西吉县| 莫力| 贡嘎县| 大渡口区| 和政县| 崇明县| 务川| 胶南市| 甘孜| 象州县| 东兰县| 东阳市| 治多县| 离岛区| 策勒县| 山丹县| 伊吾县| 格尔木市| 桃园县| 浦北县| 沈丘县| 黎川县| 双牌县| 昭苏县| 石嘴山市| 延津县| 伊川县| 博兴县| 望江县| 江城| 广饶县| 原平市| 平南县|