2013-11-21 101 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和后来的通行证将不会看到一个“*”在那里。所以基本上你的计数将会全部搞砸。你需要一个数组作为'*',另一个作为邻居数。

相关问题