📄 tutorial_21.htm
字号:
glVertex2d( 5, 5);
glVertex2d( 5,-5);
glVertex2d(-5, 5);
glEnd(); </font></pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%"> 绘制玩家的显示效果,让它看起来更好看些(其实没用)</td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre> glRotatef(player.spin*0.5f,0.0f,0.0f,1.0f);
glColor3f(0.0f,0.75f,0.0f);
glBegin(GL_LINES);
glVertex2d(-7, 0);
glVertex2d( 7, 0);
glVertex2d( 0,-7);
glVertex2d( 0, 7);
glEnd(); </pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%">接下来绘制追击玩家的敌人</td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre> for (loop1=0; loop1<(stage*level); loop1++)
{
glLoadIdentity();
glTranslatef(enemy[loop1].fx+20.0f,enemy[loop1].fy+70.0f,0.0f);
glColor3f(1.0f,0.5f,0.5f);
glBegin(GL_LINES);
glVertex2d( 0,-7);
glVertex2d(-7, 0);
glVertex2d(-7, 0);
glVertex2d( 0, 7);
glVertex2d( 0, 7);
glVertex2d( 7, 0);
glVertex2d( 7, 0);
glVertex2d( 0,-7);
glEnd(); </pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%"> 下面的代码绘制敌人的显示效果,让其更好看。</td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre> glRotatef(enemy[loop1].spin,0.0f,0.0f,1.0f);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_LINES);
glVertex2d(-7,-7);
glVertex2d( 7, 7);
glVertex2d(-7, 7);
glVertex2d( 7,-7);
glEnd();
}
return TRUE;
}
</pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%">KillGLWindow函数基本没有变化,只在最后一行添加KillFont函数</td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre>GLvoid KillGLWindow(GLvoid)
{
if (fullscreen)
{
ChangeDisplaySettings(NULL,0);
ShowCursor(TRUE);
}
if (hRC)
{
if (!wglMakeCurrent(NULL,NULL))
{
MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
}
if (!wglDeleteContext(hRC))
{
MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
}
hRC=NULL;
}
if (hDC && !ReleaseDC(hWnd,hDC))
{
MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
hDC=NULL;
}
if (hWnd && !DestroyWindow(hWnd))
{
MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
hWnd=NULL;
}
if (!UnregisterClass("OpenGL",hInstance))
{
MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMATION);
hInstance=NULL;
}
KillFont(); <font color="#ffffaa">// 删除创建的字体</font>
}
</pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%"> <p>函数CreateGLWindow() and WndProc() 没有变化。</p>
<p>游戏控制在WinMain中完成的</p></td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre>int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
BOOL done=FALSE;
if (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO)
{
fullscreen=FALSE;
}
</pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/tc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/tr.png" height="28" width="28"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td background="Tutorial_21_files/l.png"><img src="Tutorial_21_files/l.png"></td>
<td valign="top" width="100%"> 在创建完OpenGL窗口后,我们添加如下的代码,它用来创建玩家和敌人,并初始化时间计时器</td>
<td background="Tutorial_21_files/r.png"><img src="Tutorial_21_files/r.png"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/bl.png" height="28" width="28"></td><td width="100%"><img src="Tutorial_21_files/bc.png" height="28" width="100%"></td><td><img src="Tutorial_21_files/br.png" height="28" width="28"></td></tr></tbody></table><font color="#aaffaa" size="3">
<pre> if (!CreateGLWindow("NeHe's Line Tutorial",640,480,16,fullscreen))
{
return 0;
}
ResetObjects(); <font color="#ffffaa">// 重置玩家和敌人</font>
TimerInit(); <font color="#ffffaa">// 初始化时间计时器</font>
while(!done)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message==WM_QUIT)
{
done=TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
</pre>
</font><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td><img src="Tutorial_21_files/tl.png" height="28" width="28"></td><td width="100%"><img src="T
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -