2013-11-21 98 views
0

我正在一個大學項目中工作,我應該寫一些礦井下的遊戲... 我寫了我的程序 程序將打印minesweaper表中的某些單元格有炸彈該程序應在該單元中打印*。 和其他單元格應該在八個周邊單元格中打印炸彈數 我不知道如何打印這個可以打印字符和數字的雙重子腳本數組。我在類型轉換中遇到了一些麻煩

#include <stdio.h> 
#define max 100 
int main() 
{ 
    int a,row,column,n,x,y,counter,i,j; 
    char table[max][max]={0}; 
    scanf("%d%d",&row,&column); 
    scanf("%d",&n); 

    for(i=1;i<=n;i++) 
    { 
     scanf("%d%d",&x,&y); 
     table[x-1][y-1]='*'; 
    } 
    for(counter=0,i=0;i<row;i++) 
    { 
      for(j=0;j<column;j++) 
     { 
      if(table[i-1][j-1]=='*') 
      counter++; 
      if(table[i-1][j]=='*') 
      counter++; 
      if(table[i-1][j+1]=='*') 
      counter++; 
      if(table[i][j-1]=='*') 
      counter++; 
      if(table[i][j+1]=='*') 
      counter++; 
      if(table[i+1][j-1]=='*') 
      counter++; 
      if(table[i+1][j]=='*') 
      counter++; 
      if(table[i+1][j+1]=='*') 
      counter++; 
      if(table[i][j]!='*') 
      table[i][j]=counter; 
      counter=0; 
     } 
    } 
for(counter=0,i=0;i<row;i++) 
    { 
      for(j=0;j<column;j++) 
      printf("%d ",(char)table[i][j]); 
     printf("\n"); 
    } 
} 
+0

在編程中沒有**類型轉換**! – haccks

+0

更改printf(「%d」,(char)table [i] [j]);到printf(「%c」,(char)table [i] [j]);你會看到你的角色。 –

+0

在你的'printf'中使用'「%c」'而不是'「%d」'。類型轉換不是必需的。 –

回答

0

不是一個答案,但你的代碼將無法工作,因爲

if(table[i][j]!='*') 
    table[i][j]=counter; 
     ^^^^^^^^^^^^^^^ 

會覆蓋了在該位置在i,j和後來的通行證將不會看到一個「*」在那裏。所以基本上你的計數將會全部搞砸。你需要一個數組作爲'*',另一個作爲鄰居數。

相關問題