📄 pathfinder2d.cpp
字号:
for(int y=-3;y<3;y++)
{
for(int x=-3;x<3;x++)
{
line(lastx+x,lasty+y,xPos+x,yPos+y);
}
}
}
lastx=xPos;
lasty=yPos;
Generic->UpdateWorld();
Redraw(hWnd);
}
}
}
}
break;
//
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_CONTENTS:
WinHelp(hWnd,"pathfinder2d.hlp",HELP_CONTENTS,0);
break;
case IDM_INDEX:
WinHelp(hWnd,"pathfinder2d.hlp",HELP_INDEX,0);
break;
case IDM_FIND:
WinHelp(hWnd,"pathfinder2d.hlp",HELP_FINDER,0);
break;
case IDM_PAUSE_RESUME:
runflag=!runflag;
Redraw(hWnd);
break;
case IDM_REPATH:
runflag=true;
Generic->Reset();
Redraw(hWnd);
break;
case IDM_UPDATE_AND_REPATH:
runflag=true;
update(hWnd);
break;
case IDM_ZOOM:
if(!Generic->routing_view)
{
zoom=!zoom;
Redraw(hWnd);
}
break;
case IDM_DRAWMODE:
if(drawmode)
Setup->Presearch();
drawmode=!drawmode;
runflag=!drawmode;
Setup->blocking_walls();
Redraw(hWnd);
break;
//
case IDM_PRESEARCH:
Setup->presearch_toggle=!Setup->presearch_toggle;
update(hWnd);
break;
case IDM_PRESEARCH_VIEW:
presearch_view=!presearch_view;
Redraw(hWnd);
break;
//
case IDM_SAVE_SETTINGS:
Setup->save_settings();
break;
case IDM_LOAD_SETTINGS:
Setup->load_settings();
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_GAMEMODE:
if(Generic->gamemode)
Generic->set_GameMode(false);
else
Generic->set_GameMode(true);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ROUTING_VIEW:
Generic->routing_view=!Generic->routing_view;
Redraw(hWnd);
break;
//
case IDM_DEVELOPMENT:
Generic->Switch_Algorithms(DEVELOPMENT_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR:
Generic->Switch_Algorithms(ASTAR_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR_HEAPINTEGER:
Generic->Switch_Algorithms(ASTAR_HEAPINTEGER_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR_HEAP:
Generic->Switch_Algorithms(ASTAR_HEAP_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR_COMPLETE:
Generic->Switch_Algorithms(ASTAR_COMPLETE_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR_ARRAY:
Generic->Switch_Algorithms(ASTAR_ARRAY_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_ASTAR_LINKEDLIST:
Generic->Switch_Algorithms(ASTAR_LINKEDLIST_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_DIJKSTRA:
Generic->Switch_Algorithms(DIJKSTRA_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_BREADTHFIRST:
Generic->Switch_Algorithms(BREADTHFIRST_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_BESTFIRST:
Generic->Switch_Algorithms(BESTFIRST_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_DEPTHFIRST:
Generic->Switch_Algorithms(DEPTHFIRST_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_BIBFS:
Generic->Switch_Algorithms(BIBFS_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_DSTAR:
Generic->Switch_Algorithms(DSTAR_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
case IDM_RIGHTHANDRULE:
Generic->Switch_Algorithms(RIGHTHANDRULE_ALGORITHM);
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_COLORSCHEME_WHITE:
Setup->colorscheme=COLORSCHEME_WHITE;
Redraw(hWnd);
break;
case IDM_COLORSCHEME_BLACK:
Setup->colorscheme=COLORSCHEME_BLACK;
Redraw(hWnd);
break;
case IDM_COLORSCHEME_GRAY:
Setup->colorscheme=COLORSCHEME_GRAY;
Redraw(hWnd);
break;
case IDM_COLORSCHEME_PAPER:
Setup->colorscheme=COLORSCHEME_PAPER;
Redraw(hWnd);
break;
// update screen
case IDM_FPS_60: //60fps
TIMER_RATE=17;
KillTimer(hWnd, TIMER_ID);
SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL);
Redraw(hWnd);
break;
case IDM_FPS_30:
TIMER_RATE=33;
KillTimer(hWnd, TIMER_ID);
SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL);
Redraw(hWnd);
break;
case IDM_FPS_10:
TIMER_RATE=100;
KillTimer(hWnd, TIMER_ID);
SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL);
Redraw(hWnd);
break;
case IDM_FPS_1:
TIMER_RATE=1000;
KillTimer(hWnd, TIMER_ID);
SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL);
Redraw(hWnd);
break;
case IDM_FPS_10S:
TIMER_RATE=10000;
KillTimer(hWnd, TIMER_ID);
SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL);
Redraw(hWnd);
break;
//
case IDM_MEDIAN_1:
Setup->median_terrain_cost=1.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_MEDIAN_8:
Setup->median_terrain_cost=8.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_MEDIAN_16:
Setup->median_terrain_cost=16.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_MEDIAN_AUTO:
Setup->median_terrain_cost=Setup->median_terrain_cost_auto;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_DIAGONAL_COST_1:
Setup->diagonal_cost=1.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_DIAGONAL_COST_1_4:
Setup->diagonal_cost=1.4f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_COST_0:
Setup->use_terrain=false;
Setup->cost=0.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_0_5:
Setup->use_terrain=false;
Setup->cost=0.5f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_0_25:
Setup->use_terrain=false;
Setup->cost=0.25f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_0_125:
Setup->use_terrain=false;
Setup->cost=0.125f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_1:
Setup->use_terrain=false;
Setup->cost=1.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_2:
Setup->use_terrain=false;
Setup->cost=2.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_4:
Setup->use_terrain=false;
Setup->cost=4.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_8:
Setup->use_terrain=false;
Setup->cost=8.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_16:
Setup->use_terrain=false;
Setup->cost=16.0f;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_COST_BY_TERRAIN:
Setup->use_terrain=true;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_PYTHAGORAS_DISTANCE:
Setup->distance_method=PYTHAGORAS_DISTANCE;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_MANHATTAN_DISTANCE:
Setup->distance_method=MANHATTAN_DISTANCE;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_DIAGONAL_DISTANCE:
Setup->distance_method=DIAGONAL_DISTANCE;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
case IDM_SIMPLE_PYTHAGORAS_DISTANCE:
Setup->distance_method=SIMPLE_PYTHAGORAS_DISTANCE;
Generic->UpdateSettings();
Generic->Reset();
Redraw(hWnd);
break;
//
case IDM_ITERATIONS_1:
Setup->iterations_per_frame=1;
Generic->UpdateSettings();
break;
case IDM_ITERATIONS_10:
Setup->iterations_per_frame=10;
Generic->UpdateSettings();
break;
case IDM_ITERATIONS_100:
Setup->iterations_per_frame=100;
Generic->UpdateSettings();
break;
case IDM_ITERATIONS_1000:
Setup->iterations_per_frame=1000;
Generic->UpdateSettings();
break;
case IDM_ITERATIONS_10000:
Setup->iterations_per_frame=10000;
Generic->UpdateSettings();
break;
case IDM_ITERATIONS_FULL:
Setup->iterations_per_frame=WIDTH*HEIGHT;
Generic->UpdateSettings();
break;
//
case IDM_DEBUG12:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end(190,190);
Setup->distance_method=MANHATTAN_DISTANCE;
Setup->directions=4;
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=true;
Setup->diagonal_cost=1.0f;
Setup->Load("mars200x200.tga");
update(hWnd);
break;
case IDM_DEBUG11:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end(138,177);
Setup->distance_method=MANHATTAN_DISTANCE;
Setup->directions=4;
Setup->iterations_per_frame=1000;
Setup->use_terrain=true;
Setup->Load("mars.tga");
update(hWnd);
break;
case IDM_DEBUG10:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end((BYTE)(HEIGHT-20),(BYTE)(WIDTH-20));
Setup->distance_method=MANHATTAN_DISTANCE;
Setup->directions=4;
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=true;
Setup->Load("mars.tga");
update(hWnd);
break;
case IDM_DEBUG9:
Generic->set_GameMode(false);
Setup->set_start(HEIGHT/8,WIDTH/2);
Setup->set_end(HEIGHT-HEIGHT/8,WIDTH/2);
Setup->distance_method=MANHATTAN_DISTANCE;
Setup->directions=8;
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
//Setup->cost=1.0f;
Setup->Map_StraightLine();
update(hWnd);
break;
case IDM_DEBUG8:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end(HEIGHT-10,WIDTH-10);
Setup->directions=8;
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
//Setup->cost=0.5f;
Setup->Map_BoxOnBox();
update(hWnd);
break;
case IDM_DEBUG7:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end((BYTE)(HEIGHT-20),(BYTE)(WIDTH-20));
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=true;
Setup->Map_PipeMaze();
update(hWnd);
break;
case IDM_DEBUG6:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end(HEIGHT-10,WIDTH-10);
Setup->distance_method=MANHATTAN_DISTANCE;
Setup->directions=8;
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
Setup->Load("clutter.tga");
update(hWnd);
break;
case IDM_DEBUG5:
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end((BYTE)(HEIGHT-20),(BYTE)(WIDTH-20));
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=true;
Setup->Map_Random();
update(hWnd);
break;
case IDM_DEBUG4:
Setup->directions=8;
Generic->set_GameMode(false);
Setup->set_start(2,2);
Setup->set_end(HEIGHT-2,WIDTH-2);
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
Setup->Map_Clear_Path();
update(hWnd);
break;
case IDM_DEBUG3:
Setup->directions=8;
Generic->set_GameMode(false);
Setup->set_start(2,WIDTH-2);
Setup->set_end(HEIGHT-2,2);
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
Setup->Map_Clear_Path();
update(hWnd);
break;
case IDM_DEBUG2:
Setup->directions=8;
Generic->set_GameMode(false);
Setup->set_start(HEIGHT>>1,2);
Setup->set_end(HEIGHT>>1,WIDTH-2);
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
Setup->Map_Clear_Path();
update(hWnd);
break;
case IDM_DEBUG1:
Setup->directions=8;
Generic->set_GameMode(false);
Setup->set_start(10,10);
Setup->set_end(10,11);
Setup->iterations_per_frame=WIDTH*HEIGHT;
Setup->use_terrain=false;
Setup->Map_Clear_Path();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -