C++實現(xiàn)控制臺隨機迷宮的示例代碼_第1頁
C++實現(xiàn)控制臺隨機迷宮的示例代碼_第2頁
C++實現(xiàn)控制臺隨機迷宮的示例代碼_第3頁
C++實現(xiàn)控制臺隨機迷宮的示例代碼_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第C++實現(xiàn)控制臺隨機迷宮的示例代碼_putts(_T("你撞墻次數(shù)超過限制,本局游戲失??!"));

_putts(_T("如果要再開局,請按下[R]鍵!否則,按下其他鍵以退出!"));

ch=_gettch();

if(ch=='R'||ch=='r'){

gotostart;

}elseif(bWin){

_tsystem(_T("cls"));

_putts(_T("恭喜,你贏了!是否要再來一局?"));

_putts(_T("如果要再開局,請按下[R]鍵!否則,按下其他鍵以退出!"));

ch=_gettch();

if(ch=='R'||ch=='r'){

gotostart;

return0;

void_Create(constintx,constinty)

g_maze[x][y]=ROUTE;

intdict[4][2]={{1,0},{-1,0},{0,1},{0,-1}};

intr,tmp;

for(inti=0;ii++){

r=rand()%4;

tmp=dict[0][0];

dict[0][0]=dict[r][0];

dict[r][0]=tmp;

tmp=dict[0][1];

dict[0][1]=dict[r][1];

dict[r][1]=tmp;

intdx,dy,range,count;

for(intj=0;jj++){

dx=x;

dy=y;

range=1+(g_Rank==00:rand()%g_Rank);

while(range0){

dx+=dict[j][0];

dy+=dict[j][1];

if(g_maze[dx][dy]==ROUTE){

break;

count=0;

for(intk=dx-1;kdx+2;k++){

for(intl=dy-1;ldy+2;l++){

if(abs(k-dx)+abs(l-dy)==1g_maze[k][l]==ROUTE){

count++;

if(count1){

break;

--range;

g_maze[dx][dy]=ROUTE;

if(range=0){

_Create(dx,dy);

int_CreateAndPrint(void)

_tprintf(_T("正在分配內(nèi)存..."));

g_maze=(int**)malloc(LENGTH*sizeof(int*));

for(inti=0;iLENGTH;i++){

g_maze[i]=(int*)calloc(LENGTH,sizeof(int));

_tprintf(_T("完成!\n"));

_tprintf(_T("正在加載迷宮..."));

g_lives=3;

for(intj=0;jLENGTH;j++){

g_maze[j][0]=ROUTE;

g_maze[0][j]=ROUTE;

g_maze[j][LENGTH-1]=ROUTE;

g_maze[LENGTH-1][j]=ROUTE;

_Create(2,2);

g_maze[2][1]=PLAYER;

intk;

for(k=LENGTH-3;kk--){

if(g_maze[k][LENGTH-3]==ROUTE){

g_maze[k][LENGTH-2]=ROUTE;

break;

_tprintf(_T("完成!\n"));

_Print();

returnk;

void_Print(void)

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),{0,0});

for(intx=0;xLENGTH;x++){

for(inty=0;yLENGTH;y++){

switch(g_maze[x][y]){

caseROUTE:

_puttch(CH_SPACE);break;

caseWALL:

_puttch(CH_RECT);break;

casePLAYER:

_puttch(CH_PLAYER);break;

default:break;

_tprintf(_T("\n"));

_putts(_T("上下左右方向鍵用來移動,按Esc可退出,按R重新開局。"));

_tprintf(_T("剩余可撞墻次數(shù):%d"),g_lives);

}

這是C++風(fēng)格的代碼。因為用到了內(nèi)聯(lián)函數(shù)等C++特性,可能不能直接兼容C語言環(huán)境,但是稍作改動即可完美兼容。(ps:至少大家不用為字符集設(shè)置發(fā)愁了XD)

效果:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論