| Почему не работает? надо передать 2мерный массив в функцию, чтоб она могла изменять
значения элементов массива! размер массива фиксированный 10х16
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int render(int **a[10][16])
{
for(int i=0;i<10;i++)
for(int j=0;j<16;j++)
{
setcolor(15);
rectangle(10+i*50,10+j*25,10+i*50+40,10+j*25+20);
int color;
if (a[i][j]==0)color=2;
if (a[i][j]==1)color=3;
if (a[i][j]==2)color=4;
setfillstyle(1,color);
floodfill(10+i*50+1,10+j*25+1,15);
}
for(j=0;j<16;j++)
{
char s[2];
itoa(j+1,s,10);
setcolor(15);
outtextxy(505,15+j*25,s);
}
return 0;
}
//-----------
int clearhall(int **a[10][16])
{
for(int i=0;i<10;i++)
for(int j=0;j<16;j++)
{
a[i][j]=0;
}
return 0;
}
//-----------
int drawrame(int i,int j,int c)
{
setcolor(c);
rectangle(10+i*50,10+j*25,10+i*50+40,10+j*25+20);
return 0;
}
//-----------
int changehall(int **hall[10][16])
{
int i=1,j=1;
int nowhall=1;
// int hall[10][16];
// i=1;j=1;
render(hall);
drawrame(i-1,j-1,1);
char ch=0;
while (ch!=27)
{
ch=getch();
if(ch=='H'){drawrame(i-1,j-1,15);if(j>1)j--; drawrame(i-1,j-1,1);}
if(ch=='K'){drawrame(i-1,j-1,15);if(i>1)i--; drawrame(i-1,j-1,1);}
if(ch=='P'){drawrame(i-1,j-1,15);if(j<16)j++;drawrame(i-1,j-1,1);}
if(ch=='M'){drawrame(i-1,j-1,15);if(i<10)i++;drawrame(i-1,j-1,1);}
if(((ch=='Z')||(ch=='z'))&&(hall[i-1][j-1]!=2)){hall[i-1][j-1]=2;render(hall);drawrame(i-1,j-1,1);}
if(((ch=='X')||(ch=='x'))&&(hall[i-1][j-1]==0)){hall[i-1][j-1]=1;render(hall);drawrame(i-1,j-1,1);}
if(((ch=='C')||(ch=='c'))&&(hall[i-1][j-1]!=0)){hall[i-1][j-1]=0;render(hall);drawrame(i-1,j-1,1);}
}
return 0;
}
//----------
int mainmenu(void)
{
return 0;
}
//----------
int main(void)
{
int gd,gm;
gd=DETECT;
initgraph(&gd,&gm,"");
//mainmenu();
int h[10][16];
changehall(h);
closegraph();
} | |