程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-迷宮游戲問題 求大神解答

c++-迷宮游戲問題 求大神解答

編輯:編程解疑
迷宮游戲問題 求大神解答

#include"stdio.h"

void print(int front);
mgpath(int xi, int yi, int xe, int ye);
int mg[10][10]=
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 },{ 1, 0, 0, 0, 0, 1, 1, 0, 0, 1 },

{ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 }, { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },{ 1, 0, 1, 0, 0, 0, 1, 0, 0, 1 },

{ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } };

int MaxSize=100;

int front=-1;

int rear=-1;

struct Qu{

int i;

int j;

int pre;}q[100];
void main(){
int M = 8;

int N = 8;

mgpath(1, 1, M, N);

}

void print(int front)

{

int k=front, j, ns=0;

printf("\n");

do

{

j = k;

k = q[k].pre;

q[j].pre = -1;

} while (k != 0);

printf("迷宮路徑如下:\n");

k = 0;

while (k < 100)

{

if (q[k].pre==-1)

{

ns++;

printf("%d%3d",q[k].i,q[k].j);

if (ns % 5==0)

printf("\n");

}

k++;

}

printf("\n");

printf("隊列狀態");

// System.out.println("下標 i j pre");

// for(int i=0;i<=q.rear;i++)

// {

// System.out.printf("%2d %d %d %2d\n",i,q.i[i],q.j[i],q.pre[i]);

// }

}

mgpath(int xi, int yi, int xe, int ye)

{

int i, j, di;

int find=0;

rear++;

q[rear].i=xi;

q[rear].j=yi;

q[rear].pre=-1;

mg[xi][yi]=-1; // 標記入口

while (front<=rear && (!find))

{
front++;

i=q[front].i;

j=q[front].j;

        if (i==xe && j==ye)  
        { 
            find=1;  
            print(front);  
          return 1;  
        }  

        for (di=0; di<4; di++)  
        {  
            switch (di)  
            {  
            case 0:  
                i=q[front].i - 1;  
                j=q[front].j;  
                break;  
            case 1:  
                i=q[front].i;  
               j=q[front].j + 1;  
               break;  
            case 2:  
                i=q[front].i + 1;  
               j=q[front].j;  
                break;  
           case 3:  
               i=q[front].i;  
                j=q[front].j - 1;  
           }  

            if (mg[i][j]==0)  
            {  
                rear++;  
                q[rear].i=i;  
                q[rear].j=j;  
                q[rear].pre=front;  
               mg[i][j]=-1;  
            }  
        }  
   printf("NO WAY\n");
   return 0;
    }  

最佳回答:


我在編程中碰到的這個提示有以下情況:
1、括號不匹配。(經常是在函數中添加了一段代碼,如if,while分句,卻忘了在結束時補上一個“}”)
2、在頭文件中定義了struct或者class,但是在}之後漏掉了分號。
3、有#if,但是沒有#endif。
可以試試:
1.#include "stdafx.h",添加在文件的第一句
2.把你的光標移動到"fatal error C1004:"上面,然後按F1,MSDN會自動定位的
3.project setting->c/c++->precompiled headers->Not using precompiled headers

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved