void Menu_Draw()
{
system("cls"); cout<<endl;
//up-bottom
int upbot=1;
int px1=4;
int px2=48;
while (upbot!=46)
{
GotoXY(px1,3);
SetColor(7,8);
putchar(26);
px1++;
GotoXY(px2,21);
SetColor(7,8);
putchar(27);
px2--;
Sleep(12);
upbot++;
}
//left-right
int riglef=1;
int qx1=3;
int qx2=21;
while (riglef!=20)
{
GotoXY(4,qx1);
SetColor(7,8);
putchar(37);
qx1++;
GotoXY(48,qx2);
SetColor(7,8);
putchar(37);
qx2--;
Sleep(12);
riglef++;
}
игровое поле C++
1) у меня есть массив int m[43][16], это и есть карта, мне нужно прочитать из фаила матрицу, в которой нули и единицы, затем вывести ее на экран "ровно", в заданные координаты. вот с этим и начались проблемы(, у меня меню находится ближе к центру:
Код:
это каркас для меню, само меню находится по центру, печатается таким же по пиксельным способом.
мне нужно вывести в этот каркас - мой массив из нулей и единиц, который был считан с фаила:
Код:
void Level::LoadMap()
{
Console console;
int gy=4, gx=5;
FILE *f;
char fname[16]="lvl1.map";
f=fopen(fname,"rt");
char ch;
if(f!=NULL)
{
//printf("Map was opened: \n");
while((ch=getc(f))!=EOF)
{
if(ch=='\n')
console.GotoXY(5,gy++);
else
cout<<ch;
}
}
fclose(f);
{
Console console;
int gy=4, gx=5;
FILE *f;
char fname[16]="lvl1.map";
f=fopen(fname,"rt");
char ch;
if(f!=NULL)
{
//printf("Map was opened: \n");
while((ch=getc(f))!=EOF)
{
if(ch=='\n')
console.GotoXY(5,gy++);
else
cout<<ch;
}
}
fclose(f);
никак не получается вывести ровно под в этот каркас данный массив(, не могу разобраться в чем я допускаю ошибки..(
2)необходимо этот массив преобразовать из нулей и единиц в определенные символы, допустим нули - в пробелы, а единицы - решетки (аля стены и пути), затем вывести на экран, помогите пожалуйста!
3) как можно будет реализовать данные стены, что бы если обьект в них упирается, то он не двигался дальше (движение сделано с помощью стрелок)?
а если не из файла выводить - все хорошо получается?
Код:
void Level::Draw()
{
Console console;
unsigned int sX=5, sY=4;
const char CWall = 219;
const char CPassage = 32;
for (int i=0; i<HEIGHT; ++i)
{
for (int j=0; j<WIDTH; ++j)
{
console.GotoXY(sX+j, sY+i);
// Вот так отображается стена или пространство
printf("%c", map[j] ? CWall : CPassage);
}
printf("\n");
}
}
{
Console console;
unsigned int sX=5, sY=4;
const char CWall = 219;
const char CPassage = 32;
for (int i=0; i<HEIGHT; ++i)
{
for (int j=0; j<WIDTH; ++j)
{
console.GotoXY(sX+j, sY+i);
// Вот так отображается стена или пространство
printf("%c", map[j] ? CWall : CPassage);
}
printf("\n");
}
}
компилятор не хочет преобразовывать char Cwall, cpassage в int:
warning C4305: 'initializing' : truncation from 'const int' to 'const char'
warning C4309: 'initializing' : truncation of constant value
219 больше, чем может вместить char