锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓涓槸涓嬪鏈熻璇劇殑ppt錛屾垜鎯籌紝澶ф鍑嗗20璇炬椂灝卞彲浠ヤ簡鍚с?/p>
鍐嶅氨鏄偅涓彲鐖辯殑欏圭洰鐨勫紑棰樻姤鍛婂惂錛屾垨鑰呰璁″垝涔︼紝铏界劧姊佽佸笀娌¤錛屾垜鑷繁涔熻瑙勫垝瑙勫垝鐨勩?/p>
鍐嶅仛浠借嚜宸辯殑綆鍘嗐傛垜鐭ラ亾浼氭湁寰堝鑷繁涔熶笉婊℃剰鐨勫湴鏂癸紝鍔姏鍚с?/p>
鍐欎竴涓瘮杈冭鐨勮繃鍘葷殑淇勭綏鏂柟鍧椼?/p>
榪欏嚑鏉℃槸搴曢檺銆?/p>
浣欏榪樺彲浠ュ仛鐐逛簨鎯呫傛瘮濡傚拰鎴戠殑澶х瀛愪竴璧峰洖鏉ョ殑涓夋湰涔︼紝榪樻湁閭f湰钀戒簡寰堝鐏扮殑浣欑闆ㄦ枃闆嗐?/p>
鎴戣寰楄繖涓亣鏈熻矊浼間細榪囩殑寰堢瘡鐨?#8230;…
#include <cstdlib>
#include <ctime>
#include <cstdlib>
#include <windows.h>
int x,y;
int key = GLUT_KEY_RIGHT;
int snake[100][2];
int len = 5;
void myDisplay( void )
{
glClear( GL_COLOR_BUFFER_BIT );
glColor3f( 1.0f, 1.0f, 1.0f );
for ( int i = 0; i < len; ++i )
{
glRecti( snake[i][0], snake[i][1], snake[i][0]+1, snake[i][1]+1 );
}
glColor3f( 1.0f, 0.0f, 0.0f );
glRecti( x, y, x+1, y+1 );
glutSwapBuffers();
}
int Hit( int x, int y )
{
int i;
for ( i = 0; i < len; ++i )
{
if ( snake[i][0] == x && snake[i][1] == y )
{
return 1;
}
}
return 0;
}
int Eat( int a, int b )
{
if ( a == x && y == b )
{
do
{
x = rand()%64;
y = rand()%48;
} while ( Hit(x,y) );
return 1;
}
return 0;
}
void Add( int a, int b )
{
snake[len][0] = a;
snake[len][1] = b;
++len;
}
void Move( int x, int y )
{
int i;
for ( i = 0; i < len-1; ++i )
{
snake[i][0] = snake[i+1][0];
snake[i][1] = snake[i+1][1];
}
snake[len-1][0] = x;
snake[len-1][1] = y;
}
void Step( void )
{
switch ( key )
{
case GLUT_KEY_RIGHT:
if ( Hit( snake[len-1][0]+1, snake[len-1][1] ) == 1 )
{
exit(0);
}
else if ( Eat( snake[len-1][0]+1, snake[len-1][1] ) )
{
Add( snake[len-1][0]+1, snake[len-1][1] );
}
else
{
Move( snake[len-1][0]+1, snake[len-1][1] );
}
break;
case GLUT_KEY_LEFT:
if ( Hit( snake[len-1][0]-1, snake[len-1][1] ) == 1 )
{
exit(0);
}
else if ( Eat( snake[len-1][0]-1, snake[len-1][1] ) )
{
Add( snake[len-1][0]-1, snake[len-1][1] );
}
else
{
Move( snake[len-1][0]-1, snake[len-1][1] );
}
break;
case GLUT_KEY_UP:
if ( Hit( snake[len-1][0], snake[len-1][1]+1 ) == 1 )
{
exit(0);
}
else if ( Eat( snake[len-1][0], snake[len-1][1]+1 ) )
{
Add( snake[len-1][0], snake[len-1][1]+1 );
}
else
{
Move( snake[len-1][0], snake[len-1][1]+1 );
}
break;
case GLUT_KEY_DOWN:
if ( Hit( snake[len-1][0], snake[len-1][1]-1 ) == 1 )
{
exit(0);
}
else if ( Eat( snake[len-1][0], snake[len-1][1]-1 ) )
{
Add( snake[len-1][0], snake[len-1][1]-1 );
}
else
{
Move( snake[len-1][0], snake[len-1][1]-1 );
}
break;
default:
break;
}
}
void myKey( int k, int not_use, int not_use1 )
{
switch ( k )
{
case GLUT_KEY_DOWN:
if ( key != GLUT_KEY_UP )
{
key = k;
Step();
}
break;
case GLUT_KEY_UP:
if ( key != GLUT_KEY_DOWN )
{
key = k;
Step();
}
break;
case GLUT_KEY_LEFT:
if ( key != GLUT_KEY_RIGHT )
{
key = k;
Step();
}
break;
case GLUT_KEY_RIGHT:
if ( key != GLUT_KEY_LEFT )
{
key = k;
Step();
}
break;
default:
break;
}
glutPostRedisplay();
}
void Init( void )
{
int i;
for ( i = 0; i < len; ++i )
{
snake[i][0] = i;
snake[i][1] = 0;
}
srand( GetTickCount() );
do
{
x = rand()%64;
y = rand()%48;
} while ( Hit(x,y) );
}
int main( int argc, char* argv[] )
{
Init();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 480);
glutCreateWindow("絎竴涓狾penGL紼嬪簭");
glutSpecialFunc( &myKey );
glutDisplayFunc(&myDisplay);
gluOrtho2D( 0, 64, 0, 48 );
glutMainLoop();
return 0;
}
澶у寰堥粯濂戝湴涓璧峰仠浜嗛殢絎斻傛垜鏈榪戠瘡鐨勫ご鏄忚剳鑳銆備漢鏄渶瑕佸帇鍔涚殑錛岃鑷繁緇欒嚜宸卞帇鍔涳紝涓嶈鎬繪嫋鎷栨媺鎷夋嫋鍒癲eadline錛岃嚜宸變篃浼氫笉鐖界殑銆?br>
鎴戜細涓ユ牸瑕佹眰鑷繁鐨勩?
2 #define _DEFINITION_H_
3
4 enum Page
5 {
6 WelcomePage = 0, SelectPage, GamePage
7 };
8 enum Direct
9 {
10 ENTER = 13,
11 UP = 77,
12 LEFT = 61,
13 DOWN = 73,
14 RIGHT = 64
15 };
16 #endif
2 #include "SelectPage.h"
3 #include "GamePage.h"
4 #include "GLobal.h"
5 #include "definition.h"
6
7 #include <cstdlib>
8 #include <gl\glut.h>
9
10 void Display( void )
11 {
12 glClear( GL_COLOR_BUFFER_BIT );
13 switch( page )
14 {
15 case WelcomePage:
16 if ( welcome_page != NULL )
17 {
18 welcome_page->Draw();
19 }
20 break;
21 case SelectPage:
22 if ( select_page != NULL )
23 {
24 select_page->Draw();
25 }
26 break;
27 case GamePage:
28 if ( game_page != NULL )
29 {
30 game_page->Draw();
31 }
32 break;
33 default:
34 break;
35 }
36 glutSwapBuffers();
37 }
2 #include "SelectPage.h"
3 #include "GamePage.h"
4 #include "Global.h"
5
6 void Init( void )
7 {
8 welcome_page = new CWelcomePage;
9 select_page = new CSelectPage;
10 game_page = new CGamePage;
11 }
#include "SelectPage.h"
#include "GamePage.h"
#include "GLobal.h"
#include "definition.h"
#include <cstdlib>
void Key( int key_char, int not_use, int not_use1 )
{
switch( page )
{
case WelcomePage:
if ( welcome_page != NULL )
{
welcome_page->SetDirect( key_char );
}
break;
case SelectPage:
if ( select_page != NULL )
{
select_page->SetDirect( key_char );
}
break;
case GamePage:
if ( game_page != NULL )
{
game_page->SetDirect( key_char );
}
break;
default:
break;
}
}
2 #include "SelectPage.h"
3 #include "GamePage.h"
4 #include "GLobal.h"
5 #include "definition.h"
6
7 #include <cstdlib>
8
9 void Keyboard( unsigned char key_char, int not_use, int not_use1 )
10 {
11 switch( page )
12 {
13 case WelcomePage:
14 if ( welcome_page != NULL )
15 {
16 welcome_page->SetDirect( key_char );
17 }
18 break;
19 case SelectPage:
20 if ( select_page != NULL )
21 {
22 select_page->SetDirect( key_char );
23 }
24 break;
25 case GamePage:
26 if ( game_page != NULL )
27 {
28 game_page->SetDirect( key_char );
29 }
30 break;
31 default:
32 break;
33 }
34 }
2
3 #include "global.h"
4
5 int main( int argc, char* argv[] )
6 {
7 Init();
8
9 glutInit( &argc, argv );
10 glutInitDisplayMode( GLUT_RGBA| GLUT_DOUBLE );
11 glutInitWindowPosition( 50, 50 );
12 glutInitWindowSize( WindowWidth, WindowHeight );
13 glutCreateWindow( "閫佺粰浜茬埍鐨勭敎鐢?/span>");
14 glutDisplayFunc( Display );
15 glutKeyboardFunc( Keyboard );
16 glutSpecialFunc( Key );
17 glutTimerFunc( 10, Timer, 0 );
18 gluOrtho2D( 0, WindowWidth, WindowHeight, 0 );
19 glutMainLoop();
20
21 return 0;
22 }
23
2 #define _GLOBAL_H_
3
4 #include "Init.h"
5 #include "Display.h"
6 #include "Key.h"
7 #include "Keyboard.h"
8 #include "Timer.h"
9 #include "definition.h"
10 #include "WelcomePage.h"
11 #include "SelectPage.h"
12 #include "GamePage.h"
13 #include "ReadBMP24.h"
14 #include <cstdlib>
15
16 static const int WindowWidth = 640;
17 static const int WindowHeight = 480;
18
19 extern CWelcomePage* welcome_page;
20 extern CSelectPage* select_page;
21 extern CGamePage* game_page;
22
23 extern Page page;
24 extern bool two_players;
25
26 #endif
27
2 #include "SelectPage.h"
3 #include "GamePage.h"
4 #include "definition.h"
5
6 #include <cstdlib>
7
8 CWelcomePage* welcome_page = NULL;
9 CSelectPage* select_page = NULL;
10 CGamePage* game_page = NULL;
11
12 Page page = WelcomePage;
13 bool two_players = false;
鎴戞槸铚傜獫澶寸殑閲庣敯鎯?#8230;…
澶╁湴涔嬬伒16:11:21
WM_QUIT
瀛欏┓16:11:22
錛?
澶╁湴涔嬬伒16:11:36
榪欐槸鍞竴涓涓窡紿楀彛娌℃湁鍏崇郴鐨勬秷鎭?
澶╁湴涔嬬伒16:11:44
瀹冭〃紺猴細榪欎釜紼嬪簭瑕佺粨鏉熶簡
澶╁湴涔嬬伒16:12:14
閭d箞錛屾渶澶栭潰鎴戜滑涓寮濮嬮偅涓驚鐜紝灝卞簲璇ョ粨鏉熶簡
澶╁湴涔嬬伒16:12:39
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
鍜?br>while( true )
{ GetMessage(&msg,NULL,0,0));
TranslateMessage(&msg);
DispatchMessage(&msg);
}
鍥炲埌濠峰┓鍒氭墠鐨勯棶棰?
澶╁湴涔嬬伒16:13:11
GetMessage鐨勪綔鐢ㄥ氨鏄細絳夊緟涓涓秷鎭傚鏋滆繖涓秷鎭槸WM_QUIT錛岄偅涔堣繑鍥濬ALSE銆傚惁鍒欒繑鍥濼RUE
wtt PureMilk16:13:52
鏄庣櫧
澶╁湴涔嬬伒16:13:54
鎵浠ュ畠浠殑鍖哄埆灝辨槸錛屽墠闈竴涓槸鏍囧噯鐨勶紝褰撴敹鍒癢M_QUIT娑堟伅鐨勬椂鍊欙紝寰幆緇撴潫錛屾甯擱鍑虹▼搴忋?br>鑰屽悗闈㈤偅涓紝鍥犱負涓嶈兘鎺ュ彈WM_QUIT娑堟伅錛屾墍浠ユ案榪滀笉浼氱粨鏉?
澶╁湴涔嬬伒16:14:40
WM_QUIT鐨勪綔鐢ㄧ硸緋栨槑鐧戒簡鍚?
wtt PureMilk16:14:52
絳変竴涓嬪張涓嶆槑鐧戒簡
澶╁湴涔嬬伒16:14:57
瀛欏┓16:15:08
鎭╁憿
澶╁湴涔嬬伒16:15:16
鍝噷涓嶆槑鐧戒簡
wtt PureMilk16:15:30
鍦ㄦ垜浠殑WindowProc閲岄潰鏄笉浼氬嚭鐜癢M_QUIT鐨勬槸鍚?
澶╁湴涔嬬伒16:15:37
鏄殑銆?nbsp;
澶╁湴涔嬬伒16:15:43
WM_QUIT鏄敮涓涓涓笌紿楀彛鏃犲叧鐨勬秷鎭?nbsp;
wtt PureMilk16:15:44
閭e畠鏄庝箞鏉ョ殑鍛?
瀛欏┓16:15:52
WM_QUIT銆傘傛槸涓嶆槸灝辯浉褰撲簬鎴戞寜涓媏sc鎴栬卆lt+f4鐨勬椂鍊欑劧鍚庡鐞嗘秷鎭氨鎺ㄥ嚭浜嗐傘傚叧浜嗙獥鍙d簡
澶╁湴涔嬬伒16:15:56
瀹冪殑鏉ユ簮鏄疨ostQuitMessage鍑芥暟
澶╁湴涔嬬伒16:16:05
緋栫硸錛氫笉瀹屽叏鏄?nbsp;
wtt PureMilk16:16:09
鍟婃垜鐭ラ亾浜?
澶╁湴涔嬬伒16:16:18
鍏跺疄錛屽綋浣犳寜涓婣lt+F4鐨勬椂鍊欙紝鍒嗕負涓変釜姝ラ
wtt PureMilk16:16:20
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"鏄惁鐪熺殑緇撴潫錛?,"weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
澶╁湴涔嬬伒16:16:35
1銆佺郴緇熷彂鍑篧M_CLOSE錛岃〃紺虹敤鎴瘋瘯鍥懼叧闂獥鍙?nbsp;
澶╁湴涔嬬伒16:16:49
褰撶劧錛岃繖鏃跺欎綘鍙互寮逛竴涓彁紺虹‘璁や竴涓?nbsp;
wtt PureMilk16:16:57
MessageBox(hwnd,"鏄惁鐪熺殑緇撴潫錛?,"weixin",MB_YESNO))
澶╁湴涔嬬伒16:17:13
2銆丏estroyWindow錛岀湡鐨勫叧闂獥鍙o紝鍙戝嚭涓涓猈M_DESTORY
澶╁湴涔嬬伒16:17:32
3銆佸鏋滆繖涓獥鍙e叧闂氨鎰忓懗鐫紼嬪簭緇撴潫錛岄偅涔堝鐞嗗嚱鏁伴噷鍙戝嚭涓涓狿ostQuitMessage
澶╁湴涔嬬伒16:17:42
鐒跺悗GetMessage榪斿洖FALSE錛岀▼搴忕粨鏉?nbsp;
wtt PureMilk16:18:06
褰誨簳鏄庣櫧
瀛欏┓16:18:36
澶濂囦簡
澶╁湴涔嬬伒16:18:52
濂斤紝榪樻湁涓や釜鍐呭錛岀涓鑺傝灝辯粨鏉熶簡
澶╁湴涔嬬伒16:19:07
鍐呭1鏄細DefWindowProc
澶╁湴涔嬬伒16:19:32
瀹為檯涓婄郴緇熷彂鍑虹殑娑堟伅闈炲父闈炲父鐨勫錛岀綾誨崄鍒嗗崄鍒嗗鏉?nbsp;
澶╁湴涔嬬伒16:19:40
鑰屾垜浠疄闄呬笂鍙叧蹇冩垜浠渶瑕佸叧蹇冪殑娑堟伅
澶╁湴涔嬬伒16:19:56
鑰屽浜庢垜浠笉鍏沖績鐨勬秷鎭紝濡傛灉鎴戜滑涓嶅仛澶勭悊錛屾湁鏃跺欏氨浼氬嚭闂
澶╁湴涔嬬伒16:20:12
姣斿
case WM_CLOSE:
return;
紿楀彛灝卞叧涓嶆帀
澶╁湴涔嬬伒16:20:33
瀵逛簬榪欎竴綾繪秷鎭紝鎴戜滑閫氬父鏄笇鏈涜Windows甯垜浠鐞?nbsp;
澶╁湴涔嬬伒16:20:42
鎹㈠彞璇濊錛?#8220;涓鑸殑紿楀彛搴旇鎬庝箞鍋氾紝灝辨庝箞鍋?#8221;
澶╁湴涔嬬伒16:20:53
榪欏氨鏄疍efWindowProc鐨勪綔鐢?nbsp;
澶╁湴涔嬬伒16:21:08
涓句緥鏉ヨ錛屽畠浼氬湪WM_CLOSE鐨勬椂鍊欒嚜鍔―estoryWindow
wtt PureMilk16:21:15
鐪熺殑鑰?
wtt PureMilk16:21:22
鍘熸潵榪樻槸鍏蟲帀浜?
澶╁湴涔嬬伒16:22:22
鍙﹀,DefWindowProc涔熸槸涓涓爣鍑嗙殑WindowProc
澶╁湴涔嬬伒16:22:53
鎹㈠彞璇濊錛屽鏋滀綘浠涔堟秷鎭兘涓嶆兂鑷繁澶勭悊錛屼綘鍙互鐩存帴鎶奃efWindowProc浣滀負紿楀彛綾葷殑WindowProc
澶╁湴涔嬬伒16:23:25
鍐呭2錛歅eekMessage
澶╁湴涔嬬伒16:23:39
鎴戜滑鐭ラ亾GetMessage鐨勬剰鎬濇槸“絳夌潃涓涓秷鎭殑鍙戠敓”
澶╁湴涔嬬伒16:23:57
鑰屾垜浠湪榪樻病鏈夋秷鎭彂鐢熺殑鏃跺欏氨浠涔堜篃涓嶈兘鍋氫簡
澶╁湴涔嬬伒16:24:36
鑰屽浜庢父鎴忔潵璇達紝鎴戜滑瑕佹眰鍦ㄦ病鏈夋秷鎭彂鐢熺殑鏃跺欙紝涓嶆柇鍦伴噸鏂扮敾鏁翠釜鐢婚潰
澶╁湴涔嬬伒16:25:01
鎵浠ユ垜浠笉鑳借GetMessage鍗犱綇
wtt PureMilk16:25:15
鏈夐亾鐞?
澶╁湴涔嬬伒16:25:21
PeekMessage鐨勬剰鎬濇槸錛?br>濡傛灉鏈夋秷鎭渶瑕佸鐞嗭紝榪斿洖TRUE錛屽惁鍒欒繑鍥濬ALSE
澶╁湴涔嬬伒16:26:07
鍙﹀瀹冪殑鍙傛暟鏈夊緢澶氱錛屾瘮濡傝繖涓鍙栧嚭鐨勬秷鎭槸鍚︿粠娑堟伅闃熷垪涓竻闄?nbsp;
澶╁湴涔嬬伒16:27:21
鎵浠ワ紝鎴戜滑鍙互鍐?br>while (true)
{
if (PeekMessage(xxxx, xxx, PM_REMOVE))
{
Tranlate
Dispatch()
}
else
{
doSomething();
Sleep(0);
}
}
澶╁湴涔嬬伒16:27:43
Sleep(0);鐨勭洰鐨勬槸璁╁嚭CPU鎺у埗鏉冿紝浣垮緱鍏朵粬紼嬪簭鍙互嫻佺晠榪愯錛岃緇嗙殑鍐呭浠ュ悗鍐嶈瑙?nbsp;
wtt PureMilk16:28:03
鑰訛紝閭e矀涓嶆槸鍙堝儚鎴戝垰鍐欑殑閭f牱鍏充笉鎺変簡
澶╁湴涔嬬伒16:28:12
鏄殑
澶╁湴涔嬬伒16:28:29
PeekMessage鐨勪竴涓笉鍚岀殑鍦版柟灝辨槸錛屽畠鏀跺埌WM_QUIT鏃朵笉浼氬仛浠涔堢壒孌婂鐞?nbsp;
澶╁湴涔嬬伒16:28:40
鎴戜滑瑕佽嚜宸辨潵鍋氳繖涓鐞?nbsp;
澶╁湴涔嬬伒16:28:57
while (true)
{
if (PeekMessage(xxxx, xxx, PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
Tranlate
Dispatch()
}
else
{
doSomething();
Sleep(0);
}
}
澶╁湴涔嬬伒16:29:56
鍙﹀錛屾垜璇昏繃鐨勪唬鐮侀噷錛屾湁璁稿紼嬪簭娌℃湁榪欎釜else銆傚┓濠瘋兘鍒嗘瀽涓嬭繖鏍蜂細鏈変粈涔堜笉濂戒箞錛?nbsp;
澶╁湴涔嬬伒16:30:16
while (true)
{
if (PeekMessage(xxxx, xxx, PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
Tranlate
Dispatch()
}
doSomething();
Sleep(0);
}
浠栦滑榪欎箞鍐?nbsp;
wtt PureMilk16:30:24
cpu鍗犵敤鐜囨瘮杈冮珮錛?
澶╁湴涔嬬伒16:30:29
涓嶆槸
澶╁湴涔嬬伒16:30:34
浠旂粏鎯蟲兂
澶╁湴涔嬬伒16:31:13
絳旀鏄紝榪欐牱鐨勪唬鐮佹瘡嬈″彧鑳藉鐞嗕竴涓秷鎭?nbsp;
澶╁湴涔嬬伒16:31:19
鐒跺悗灝辮繘鍏ヤ簡doSomething
wtt PureMilk16:31:44
鍝?#8230;…
澶╁湴涔嬬伒16:31:47
1銆佸鏋渄oSomething鏄釜闈炲父鎱㈢殑鍑芥暟錛屾瘮濡傛覆鏌撳浘褰紝閭d箞瀵規秷鎭殑澶勭悊涔熶細寰堟參寰堟參
wtt PureMilk16:31:56
鐭ラ亾浜?
澶╁湴涔嬬伒16:32:02
縐帇鐨勬秷鎭笉鑳藉強鏃跺鐞嗭紝灝卞鏄撹windows璁や負娌℃湁鍝嶅簲
wtt PureMilk16:32:04
鍟婂ソ鏈夋剰鎬濆晩
澶╁湴涔嬬伒16:32:14
2銆佹渶鍧忕殑鎯呭喌錛屽鏋渄oSomething閲屾瘡嬈¢兘鍙戝嚭浜嗕竴涓秷鎭?nbsp;
澶╁湴涔嬬伒16:32:30
閭d箞娑堟伅灝辨案榪滃鐞嗕笉瀹屼簡錛屾渶鍚庣▼搴忓氨浼氬嚭鐜伴敊璇?nbsp;
wtt PureMilk16:32:38
鍡瘇
wtt PureMilk16:33:02
鍝囩尗鎴戣嚜宸卞鐨勮瘽瑕佸澶氫箙鎵嶈兘鏄庣櫧榪欎竴鐐瑰摝
澶╁湴涔嬬伒16:33:19
while (true)
{
if (PeekMessage(xxxx, xxx, PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
Tranlate
Dispatch()
}
else
{
doSomething();
Sleep(0);
}
}
while (true)
{
while (PeekMessage(xxxx, xxx, PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
Tranlate
Dispatch()
}
if (msg.message == WM_QUIT) break;
doSomething();
Sleep(0);
}
榪欎袱孌典唬鐮佸嵈鏄瓑浠風殑
澶╁湴涔嬬伒16:34:05
絎簩孌典唬鐮侀噷鎶奿f鏀逛負浜唚hile,鎰忔濆氨鏄細鎶婃墍鏈夌殑娑堟伅澶勭悊瀹岋紝鐒跺悗鎵嶅仛鎴戞兂鍋氱殑浜嬫儏
wtt PureMilk16:34:24
鍡瘇~鏄庣櫧
澶╁湴涔嬬伒16:34:39
鍙﹀錛宨f/while (PeekMessage(xxxx, xxx, PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
榪欎釜姣旇緝鏈夋椂鍊欐瘮杈冭鍘岋紝鎴戜滑鍙互鏇?#8220;浼橀泤”鐨勬潵鍐?nbsp;
wtt PureMilk16:35:00
鎬庝箞涓紭闆呮硶錛?
澶╁湴涔嬬伒16:35:23
if/while (PeekMessage(xxxx, xxx, PM_NOREMOVE))
{
if (GetMessage(xxx, xxx))
{
Tranlate
Dispatch
}
else
break;
wtt PureMilk16:35:50
wow
澶╁湴涔嬬伒16:35:55
娉ㄦ剰PeekMessage鐨勫弬鏁板彉涓轟簡涓嶇Щ鍑?nbsp;
澶╁湴涔嬬伒16:36:03
鐒跺悗緇х畫鍒╃敤GetMessage鐨勮繑鍥炲?nbsp;
瀛欏┓16:36:18
榪欐牱鏈変粈涔堝ソ澶勫憿錛?nbsp;
澶╁湴涔嬬伒16:36:23
姣旇緝甯?nbsp;
wtt PureMilk16:36:25
婕備寒
瀛欏┓16:36:27
- -0
澶╁湴涔嬬伒16:36:30
榪欎釜鎶宸ф垜鏄湪鎴戦仐鐣欑殑鏃╂湡浠g爜閲屽鍒扮殑
瀛欏┓16:36:31
寰堝ソ
澶╁湴涔嬬伒16:36:37
鎴戝凡緇忓繕璁版棭鏈熺殑鎴戝湪鍝噷瀛﹀埌鐨勪簡
wtt PureMilk16:36:40
鏄緢婕備寒錛屾紓浜浜?
澶╁湴涔嬬伒16:37:25
澶╁湴涔嬬伒16:37:36
鍏充簬娑堟伅銆佹秷鎭驚鐜殑鎵鏈夊唴瀹歸兘宸茬粡璁插畬浜?nbsp;
wtt PureMilk16:37:58
鐚垜濂藉磭鎷滀綘鍠?
澶╁湴涔嬬伒16:38:14
瀛欏┓16:38:24
鍝囧崱鍗″崱~~~鎴戜粖澶╀細澶辯湢銆傘?nbsp;
wtt PureMilk16:40:58
澶╁湴涔嬬伒(402740419) 16:22:53
鎹㈠彞璇濊錛屽鏋滀綘浠涔堟秷鎭兘涓嶆兂鑷繁澶勭悊錛屼綘鍙互鐩存帴鎶奃efWindowProc浣滀負紿楀彛綾葷殑WindowProc
榪欏彞璇濈殑鎰忔濇槸錛屼粈涔堟秷鎭兘鑷繁鍔ㄦ墜鍐欎唬鐮佸悧
澶╁湴涔嬬伒16:41:09
涓嶆槸
澶╁湴涔嬬伒16:41:23
濡傛灉浣犳兂鍐欎竴涓?#8220;闈炲父鏍囧噯”鐨勭獥鍙o紝浠涔堟秷鎭綘閮戒笉闇瑕佺煡閬?nbsp;
wtt PureMilk16:41:24
閭f槸浠涔堥兘涓嶈嚜宸卞姩鎵嬪啓
澶╁湴涔嬬伒16:41:32
瀵癸紝浣犲氨鍙互浠涔堥兘涓嶅啓
wtt PureMilk16:41:45
鍝﹀摝鍝︽垜鏄庣櫧浜?
瀛欏┓16:41:47
涓轟粈涔堝憿錛?nbsp;
wtt PureMilk16:41:49
鐪嬮敊浜?
瀛欏┓16:42:12
鑷繁鍐欑殑鍜屾爣鍑嗙獥鍙f槸涓嶄竴鏍風殑涔堬紵
wtt PureMilk16:42:16
灝辨槸榪濿indowProc閮戒笉瑕佷簡瀵瑰惂
澶╁湴涔嬬伒16:42:18
鎭?nbsp;
wtt PureMilk16:42:28
璋佺殑鎭╋紵
瀛欏┓16:42:33
閭f垜鎬庝箞鍦ㄨ繖涓獥鍙e仛浠涔堝晩銆傘?nbsp;
澶╁湴涔嬬伒16:42:33
鎭╁┓濠風殑
澶╁湴涔嬬伒16:42:54
鏈夋椂鍊欏氨浠涔堜篃涓嶅仛鍟?nbsp;
澶╁湴涔嬬伒16:43:19
涓鑸湪娓告垙閲屽啓WindowProc灝辨槸涓轟簡涓涓猈M_CLOSE涓涓猈M_DESTORY
澶╁湴涔嬬伒16:43:28
鍦ㄥ緢鐗規畩鐨勬椂鍊欎篃璁鎬細榪炶繖涓や釜涔熺敤涓嶇潃
cpp鏂囦歡鍜宔xe鏂囦歡閮芥斁鍦ㄤ笅闈㈢殑鍘嬬緝鍖呴噷浜嗭紝910琛屼唬鐮佸憖銆?br>
/Files/jiangnan/DrMario2.rar
鏄ㄥぉ蹇樿鍐欐棩蹇椾簡……浠g爜涓鍐欏啓鍒頒簡鍗佺偣浜屽崄錛屾濈淮榪樺浜庢瀬鍏舵販涔辯殑鐘舵侊紝鍦ㄨ繖閲岃ˉ涓婃槰澶╃殑閮ㄥ垎銆傛槰澶╄鏁欎簡鐚庢牱鍒嗘枃浠跺啓錛屽寘鎷庢牱瀹氫箟class鍜宔num錛屾庢牱瀹氫箟鍜屽紩鐢ㄥ叏灞鍙橀噺鍜屽叏灞鍑芥暟錛屽彈鐩婂尓嫻咃紝鎰熻阿鐚紝闉犺含銆?br>
鎺ヤ笅鏉ユ垜鎯抽噸鍐橠r Mario錛屽啓瀹岀編鐗坴2.0錛屽笇鏈涜兘鍑犱箮瀹屽叏鎸夌収鍘熸湰鐨凞r Mario鍋氾紝瀹炵幇瀹冨叏閮ㄧ殑鍔熻兘銆?br>
涓嬮潰璇翠綘鎺╅グ浜嗕粈涔堛?br>鎴戝摢鐭ラ亾浣犳帺楗頒簡浠涔堬紝鎵浠ユ垜鍙兘鐚滄祴銆備綘鏄湪瀹蟲曠姱閿欙紵鍡紝榪欐槸鎴戣兘鎯沖埌鐨勫敮涓鐨勫仴搴風殑鍙互鎺╅グ鐨勪笢瑗夸簡銆傚共鍚楄瀹蟲曠姱閿欏憿錛岃嚜宸變笉浼氬氨鏄笉浼氫笉鎳傚氨鏄笉鎳傦紝鑷繁娌″姫鍔涙墍浠ヤ笉鎳傦紝榪欐湁浠涔堝晩錛岃繖闄や簡璇存槑浣犱箣鍓嶆病鍔姏鍏朵粬鐨勪粈涔堜篃璇存槑涓嶄簡鍟娿傛病鍔姏鍙堜笉鏄剳鐦紝騫插悧鎷呭績鍒漢璁鍟娿備笉鍔姏鏄繃鍘葷殑浜嬫儏錛屾病鏈変竴涓甯鎬漢鎶撲綇榪囧幓鐨勪簨鎯呮姝諱笉鎾掓墜鐨勩傚ぇ瀹剁湅濂界殑姘歌繙鏄綘鐨勭幇鍦ㄥ拰鏈潵錛屽洜涓轟綘鐨勮繃鍘誨浠栨病鏈夋剰涔夛紝浣犻渶瑕佽〃鐜頒綘鐨勭敤鍔燂紝璁╁ぇ瀹剁煡閬撲綘鐜板湪寮濮嬪姫鍔涗簡錛岄潪鍥㈤槦鐨勪漢浼氱湅濂戒綘錛屽洟闃熼噷鐨勪漢涔熶笉鐢ㄦ媴蹇冧綘銆備綘涓嶄綔涓猴紝鎴栬呰浣犱笉琛ㄧ幇浣犱綔涓猴紝浼氱粰鎴戜滑鍥㈤槦鐨勫瀛愪滑涓浜涘績鐞嗕笂鐨勫皬鐤欑槱銆傛垜浠湁鍏卞悓鐨勭瓥鐣ワ紝鎴戜滑闇瑕佽冭檻姣忎釜浜虹殑榪涘睍鎯呭喌錛屽洜涓烘垜浠槸 鎴戜滑銆傛墍浠ュ敖閲忕殑璁╁ぇ瀹朵簡瑙d綘錛岀煡閬撲綘鐜板湪鐨勭▼搴︼紝涓鏉ユ湁鑳藉姏鐨勮瘽緇欎笌鏀寔錛屼簩鏉ヤ簡瑙h繘搴︼紝瀹氬ぇ瀹剁殑姝ラ暱銆?br>
璇磋繖璇濇垜閮芥儹鎰с傞偅灝變互涓婂紩鐢╳tt鍚屽鍙戣█銆?br>鍏跺疄榪欓樀瀛愭垜浠竴鐩村湪鎷呭績榪欎釜欏圭洰錛屼笉鍏佽瀛樺湪涓涓洸鐐癸紝鑰屼綘鐜板湪瀵逛簬鍥㈤槦鏉ヨ鏄洸鍖猴紝澶у閮戒笉鐭ラ亾浣犵殑鎯呭喌鍜岃繘搴︺?/font>
鎴戞浘緇忔槸涓共浜嬶紝鍚庢潵鏄釜澶村効錛岀幇鍦ㄤ篃鏄釜騫蹭簨錛?strong>孌夸笅鎵嬩笅鐨勫共浜?/strong>銆備絾鏄紝鐜板湪鍋氬共浜嬪拰鏇劇粡鐨勫仛騫蹭簨鏈夊緢澶х殑涓嶅悓銆傝佸ぇ璇達紝寰堝鏃跺欏仛浜嗗ご鍎挎墠鐭ラ亾鎬庢牱鍋氬共浜嬶紝浣嗘槸緇濆ぇ閮ㄥ垎浜烘槸娌℃湁鏈轟細鍘諱綋楠屾庢牱鍋氬ご鍎跨殑銆傚緢渚ュ垢鎴戠珶鐒朵綋楠岃繃銆傛浘緇忔垜涓嶆槸涓ソ澶村効錛岄偅涓嶆槸閫傚悎鎴戠殑浣嶇疆錛岀幇鍦ㄦ垜瑕佸仛涓悎鏍肩殑騫蹭簨銆?br> 鎴戜滑鏄釜鍥㈤槦錛屽繀欏昏鏈夊崄鍒嗙殑鍑濊仛鍔涖傛渶媯掔殑鍥㈤槦鎴愬憳鏄細鏈夊師鍒?amp;&鑲厤鍚堛傚ぇ瀹跺姞娌廣?br>
鍘熷洜錛氬繕璁拌皟鐢╥nit()鍑芥暟錛屽鑷翠袱涓被娌℃湁瀹炰緥鍖栵紝鐩存帴璇誨彇閲庢寚閽堛?br>瑙e喅錛氬湪涓誨嚱鏁伴噷璋冪敤init()鍑芥暟銆?br>2銆佸彂鐜版瘡嬈$敓鎴愮殑铏瓙閮芥槸涓鏍風殑錛屼富鍑芥暟閲岃櫧鐒秙rand浜嗭紝鍗存病鏈夎揪鍒板垵濮嬪寲闅忔満縐嶅瓙鐨勬晥鏋溿?br>鍘熷洜錛氭垜鍌諱簡錛屽厛init()鎵峴rand()銆? =||
瑙e喅錛氬厛srand()鍐峣nit()銆?br>3銆佸彂鐜板疄闄呯敓鎴愮殑铏瓙鏁版繪瘮搴旇鐢熸垚鐨勫皯閭d箞涓涓や釜銆?br>鍘熷洜錛氭垜鍙嫻嬩簡鐢熸垚鐨勯殢鏈鴻櫕瀛愭槸鍚﹁秺鐣屽拰鍥涘懆鏄惁鏋勬垚鍚岄鑹茬殑涓夎鎴栬呬笁鍒楋紝蹇樿媯嫻嬫湰浣嶇疆鏄惁鍘熸湰鏈夎櫕瀛愬鑷村悗鐢熸垚鐨勭鍚堣姹傜殑铏瓙灝嗗師鐢熸垚鐨勮櫕瀛愯鐩栥?br>瑙e喅錛歰k()鍑芥暟閲屽鍔犱竴鏉″垽鏂鍙?br> if ( b_grid_type[x][y] == WORM ) return false;
4銆佹寜鍚戝彸閿篃鏄悜宸︾Щ鍔ㄣ?br>鍘熷洜錛歝ase RIGHT:閲岄潰鏈簲++d_x鍐欐垚浜?-d_x;
瑙e喅錛?gt;.<
5銆佷笅钀芥椂RE銆?br>鍛冿紝榪欎釜闂寰堝ぇ錛屽績寰堥潤鐨勬椂鍊欒В鍐充簡錛屽繕璁版庝箞瑙e喅鐨勪簡銆傚ぇ姒傛槸閲嶅啓浜嗗緢澶氬嚱鏁幫紝寰堝浠g爜榪欐牱……
6銆佺敓鎴愮殑鑽父鎬繪槸闈掕壊鐨勩?br>鍘熷洜錛歞rawCapsule()鍑芥暟蹇樿_setColor()浜嗐?br>瑙e喅錛氱粰drawCapsule()鍑芥暟澧炲姞涓涓鑹插艦寮忓弬鏁板茍璁劇疆棰滆壊銆?br>7銆佹寜涓涓嬪乏浼氬悜宸︾Щ鍔ㄥ緢澶氬緢澶氭牸銆?br>鍘熷洜錛氭寜閿椂闂磋櫧鐒舵劅瑙夊緢鐭紝鍙槸鐢佃剳宸茬粡媯嫻嬪埌澶氭浜嗐?br>瑙e喅錛氱敤GetTickCount()鍑芥暟鑾峰彇褰撳墠鎸夐敭鏃墮棿錛岃揪鍒?0ms浠ュ悗鍐嶅仛鍔ㄤ綔銆傚茍涓旂敤涓涓猻tatic unsigned char鍙橀噺鍒ゆ柇鏄惁鐪熸璇誨叆浜嗘寜閿?br>8銆佽嵂涓稿彲浠ユ洿婕備寒浜?br>鍘熷洜錛氬彲鐖辯殑緋栫硸鐢諱簡濂藉鍥懼浘錛屾姠榪囨潵鐢紝鍢垮樋 ^.^
瑙e喅錛氬啓浜嗕竴涓猺eadBMP()鍑芥暟錛屽厤寰楁瘡嬈¤鍙栧浘鐗囬兘瑕佸鍔犱竴澶х墖浠g爜銆?br>×××××××9銆佽綺劇伒鍥劇墖璇諱笉鍑烘潵
鍘熷洜錛?br>瑙e喅錛?br>10銆佷笉浼氳嚜宸辨帀钀?br>瑙e喅錛歝ount姣忓埌speed鐨勬椂鍊欓兘鎵ц涓嬈all()鍑芥暟銆?br>11銆佹渶鍚庝竴妯榪炵畫鍥涗釜娑堜笉鎺?br>鍘熷洜錛氱珶鐒舵妸16鍐欐垚浜?5……
瑙e喅錛氭垜鎯充互鍚庤繕鏄鐢ㄧ偣const int涔嬬被鐨勪笢瑗垮惂……
×××××××12銆佹柊鐢熸垚鐨勪笉榪炴帴鑽父钀戒笅鏃朵駭鐢熺殑鍙秷鍥涘垪鐩磋嚦涓嬩竴嬈℃墠鑳芥秷鍘匯?br>鍘熷洜錛?br>瑙e喅錛?br>13銆佹湁鏃跺欎細鐢熸垚涓変釜榪炵畫鍚岃壊铏瓙
鍘熷洜錛氭湁涓縐嶆儏鍐墊槸錛屽厛鐢熸垚宸﹁櫕瀛愶紝鍚庣敓鎴愬彸铏瓙錛屾渶鍚庣敓鎴愪腑闂寸殑铏瓙
瑙e喅錛氬姞涓婅繖縐嶆儏鍐典互鍚庯紝嫻嬭瘯30浣欐錛屾病鏈夐棶棰樸?br>×××××××14銆佺珶鐒跺伓鐒跺彂鐜拌繛鎺ョ姸鎬佹湭鍙樺寲鐨勫崟鐙嵂涓鎬笉鑳借惤鐨刡ug
鍘熷洜錛氭湭鐭?br>瑙e喅錛歜ug鏈啀鍑虹幇榪?#8230;…
15銆佽嵂涓稿湪鐡跺瓙鏈涓婇潰鐨勬椂鍊欎笉鑳藉彉鍖栵紝緇欑帺瀹跺甫鏉ヤ笉渚褲?br>瑙e喅錛歟mpty()鍑芥暟閲屾坊鍔爄f ( y == -1 ) return true;澶勭悊鐗規畩鎯呭喌
×××××××16銆佺珶鐒跺彂鐜版湁涓嶄負絀哄嵈棰滆壊涓洪粦鐨勬牸瀛愶紝bug鍟奲ug錛屽洤bug錛宐ug鎬繪槸寰堥毦棰勬枡鐨?br>鍘熷洜錛氭湭鐭?br>瑙e喅錛?
鎴戞湁涓涓緢浼熷ぇ鐨勮鍒掞紝灝辨槸閲嶅啓……
瀵規垬妯″紡鍙互鎵╁睍鐨勫姛鑳藉氨鏇村浜嗭紝姣斿閬撳叿鍟婁箣綾葷殑銆?br>
鏆傛椂鍙兂鍒拌繖鍑犵偣錛岃嚦浜庤兘涓嶈兘瀹炵幇灝辨槸鍚庤瘽浜嗐?br>
/Files/jiangnan/DrMario.rar
浠ュ強exe鏂囦歡涓嬭澆銆?br>
/Files/jiangnan/exe.rar
琛ュ厖錛屽氨鍦ㄥ啓瀹岃繖綃囨棩蹇楃殑鐬棿錛屾樉紺鴻鐩栭棶棰樿В鍐籌紝鍜斿挃
鍘熷洜錛氬繕璁拌皟鐢╥nit()鍑芥暟錛屽鑷翠袱涓被娌℃湁瀹炰緥鍖栵紝鐩存帴璇誨彇閲庢寚閽堛?br>瑙e喅錛氬湪涓誨嚱鏁伴噷璋冪敤init()鍑芥暟銆?br>2銆佸彂鐜版瘡嬈$敓鎴愮殑铏瓙閮芥槸涓鏍風殑錛屼富鍑芥暟閲岃櫧鐒秙rand浜嗭紝鍗存病鏈夎揪鍒板垵濮嬪寲闅忔満縐嶅瓙鐨勬晥鏋溿?br>鍘熷洜錛氭垜鍌諱簡錛屽厛init()鎵峴rand()銆? =||
瑙e喅錛氬厛srand()鍐峣nit()銆?br>3銆佸彂鐜板疄闄呯敓鎴愮殑铏瓙鏁版繪瘮搴旇鐢熸垚鐨勫皯閭d箞涓涓や釜銆?br>鍘熷洜錛氭垜鍙嫻嬩簡鐢熸垚鐨勯殢鏈鴻櫕瀛愭槸鍚﹁秺鐣屽拰鍥涘懆鏄惁鏋勬垚鍚岄鑹茬殑涓夎鎴栬呬笁鍒楋紝蹇樿媯嫻嬫湰浣嶇疆鏄惁鍘熸湰鏈夎櫕瀛愬鑷村悗鐢熸垚鐨勭鍚堣姹傜殑铏瓙灝嗗師鐢熸垚鐨勮櫕瀛愯鐩栥?br>瑙e喅錛歰k()鍑芥暟閲屽鍔犱竴鏉″垽鏂鍙?br> if ( b_grid_type[x][y] == WORM ) return false;
4銆佹寜鍚戝彸閿篃鏄悜宸︾Щ鍔ㄣ?br>鍘熷洜錛歝ase RIGHT:閲岄潰鏈簲++d_x鍐欐垚浜?-d_x;
瑙e喅錛?gt;.<
×××5銆佷笅钀芥椂RE銆?br>榪樻湭瑙e喅鍛滃憸鍛滃憸鍛滃憸
6銆佺敓鎴愮殑鑽父鎬繪槸闈掕壊鐨勩?br>鍘熷洜錛歞rawCapsule()鍑芥暟蹇樿_setColor()浜嗐?br>瑙e喅錛氱粰drawCapsule()鍑芥暟澧炲姞涓涓鑹插弬鏁板茍璁劇疆棰滆壊銆?br>7銆佹寜涓涓嬪乏浼氬悜宸︾Щ鍔ㄥ緢澶氬緢澶氭牸銆?br>榪樻湭瑙e喅鍛滃憸鍛滃憸鍛滃憸
if ( d_state )
{
if ( bottle->empty( d_x, d_y+1 ) )
{
++d_y;
break;
}
}
else
{
if ( bottle->empty( d_x, d_y+1 ) && bottle->empty( d_x+1, d_y+1 ) )
{
++d_y;
break;
}
}
/*************榪欓噷娌″啓瀹岋紝棰勮鏄釜while(true)鐨勫驚鐜?********************/
while ( tag )
{
bool flag = false;
if ( d_state )
{
bottle->set( d_color[0], d_x, d_y );
if ( d_y-1 != 0 )
bottle->set( d_color[1], d_x, d_y-1 );
}
else
{
bottle->set( d_color[0], d_x, d_y );
bottle->set( d_color[1], d_x+1, d_y );
}
//鍏堟秷錛屼笉鑳芥秷break
for ( i = 15; i >= 0; ++i )
{
int number = 0;
Color corrent = BLACK;
for ( j = 0; j < 8; ++j,++number )
{
if ( bottle->getColor( i, j ) != corrent )
{
if ( number >= 4 )
{
int cnt = j-1;
while ( number-- )
{
bottle->setGridType( REMOVE, i, cnt );
tag = true;
}
}
else
{
number = -1;
}
}
}
}
for ( i = 7; i >= 0; ++i )
{
int number = 0;
Color corrent = BLACK;
for ( j = 0; j < 16; ++j,++number )
{
if ( bottle->getColor( j, i ) != corrent )
{
if ( number >= 4 )
{
int cnt = i-1;
while ( number-- )
{
bottle->setGridType( REMOVE, j, cnt );
tag = true;
}
}
else
{
number = -1;
}
}
}
}
if ( tag )
{
Sleep( 500 );
for ( i = 0; i < 16; ++i )
{
for ( j = 0; j < 8; ++j )
{
if ( bottle->getGridType(i, j) == REMOVE )
{
bottle->setColor( BLACK, i, j );
bottle->setGridType( NOTHING, i, j );
}
}
}
}
Sleep( 500 );
}
//鍑℃槸钀戒笅涓嶇鏄惁娑堟帀閮借閲嶇疆媧誨姩鑽父浣嶇疆鍜岄鑹?/span>
break;
寰堟偛鍝鐨勬槸錛屾湰浠ヤ負鏈澶氭嫋鍒板懆浜屽氨鑳藉啓瀹岀殑鐜涗附鍖葷敓錛屼竴鎷栧啀鎷栧埌浜嗗懆浜旓紝鏇存偛鍝鐨勬槸錛岃繖鍑犲ぉ鍙共鍒殑涓嶅啓浠g爜錛屽凡緇忎笉浼氬啓浜嗭紝蹇樿浠庡墠鍐欎簡浜涘暐浜嗭紝浜庢槸鍙堜竴琛屼竴琛岃鑷繁鍐欑殑浠g爜銆備簬鏄箮錛屼粖澶╃殑浠g爜鍙樻垚浜嗚繖涓笐妯℃牱錛屾垜鑷繁鐪嬬潃閮戒笉鐖姐傜幇鍦ㄥ湪瀹為獙瀹や笉澶柟渚跨殑涓鐐瑰氨鏄笉鑳界啲澶溿傛槑鍎挎棭涓婃垜瑕佹棭璧瘋繃鏉ュ啓銆傛暟鐮両T綰︾殑紼垮瓙涔熸病鍐欏畬錛屽晩鍟婂晩鎶撶媯涓?br>鎰熻阿緋栫硸錛岃涓嶄笂鏉ヨ阿鍟ワ紝灝辨槸寰堟劅璋€備粠灝忓埌澶ф垜閮藉緢鍠滄鍜屾瘮鑷繁浼樼鐨勪漢涓璧風帺鍎匡紝鍥犱負鎴戞槸涓笉鍚瘽鐨勫瀛愶紝鎬繪槸琛ㄧ幇鐨勬瘮鍛ㄥ洿鐨勪漢宸竴鎴紝鍚屾椂鎴戝張鏄釜鍗佸垎瀹規槗鍙楃幆澧冨獎鍝嶇殑浜猴紝鎵浠ヤ笅鎰忚瘑綰︽潫鑷繁鍜屾瘮鑷繁浼樼鐨勪漢鍦ㄤ竴璧鳳紝璁╄嚜宸卞彉寰楁洿濂戒簺銆傛劅璋笂甯濇妸緋栫硸璧愮粰鎴戯紝璁╂垜浠庡嵆灝嗗け鍘葷敎鐢滅殑鎭愭厡涓冭劚銆傛垜瑕佸彉寰楀緢濂藉緢涓婅繘寰堝姫鍔涘緢縐瀬錛屽姞寮鴻嚜鎴戠害鏉燂紝涓嶅啀鍋氬潖瀛╁瓙銆?br>
void move( void )
{
int i,j;
bool flag = true;
switch( d_direct )
{
case DD_DOWN:
if ( d_state )
{
if ( bottle->empty( d_x, d_y+1 ) )
{
++d_y;
break;
}
}
else
{
if ( bottle->empty( d_x, d_y+1 ) && bottle->empty( d_x+1, d_y+1 ) )
{
++d_y;
break;
}
}
/*************榪欓噷娌″啓瀹岋紝棰勮鏄釜while(true)鐨勫驚鐜?********************/
while ( flag )
{
flag = false;
if ( d_state )
{
bottle->set( d_color[0], d_x, d_y );
if ( d_y-1 != 0 )
bottle->set( d_color[1], d_x, d_y-1 );
}
else
{
bottle->set( d_color[0], d_x, d_y );
bottle->set( d_color[1], d_x+1, d_y );
}
for ( i = 14; i >= 0; ++i )
{
for ( j = 0; j < 8; ++j )
{
if ( bottle->)
}
}
delay( 500 );
}
break;
case DD_UP:
if ( d_state )
{
if ( bottle->empty( d_x+1, d_y ) ) d_state = false;
else if ( bottle->empty( d_x-1, d_y ) ) { --d_x; d_state = false; }
}
else
{
if ( bottle->empty( d_x, d_y-1 ) )
{
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
else if ( bottle->empty( d_x+1, d_y-1 ) )
{
++d_x;
d_state = true;
Color tmp = d_color[0];
d_color[0] = d_color[1];
d_color[1] = tmp;
}
}
break;
case DD_LEFT:
if ( d_state && bottle->empty( d_x-1, d_y ) && bottle->empty( d_x-1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x-1, d_y ) ) --d_x;
break;
case DD_RIGHT:
if ( d_state && bottle->empty( d_x+1, d_y ) && bottle->empty( d_x+1, d_y-1 ) ) --d_x;
if ( !d_state && bottle->empty( d_x+1, d_y ) ) --d_x;
break;
default:
break;
}
}