Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

игровое поле C++

40K
14 декабря 2011 года
mego4el
30 / / 19.09.2010
Добрый день, бьюсь головой уже долго и никак не получается нормально сделать игровую карту.

1) у меня есть массив int m[43][16], это и есть карта, мне нужно прочитать из фаила матрицу, в которой нули и единицы, затем вывести ее на экран "ровно", в заданные координаты. вот с этим и начались проблемы(, у меня меню находится ближе к центру:

Код:
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++;
            }


это каркас для меню, само меню находится по центру, печатается таким же по пиксельным способом.

мне нужно вывести в этот каркас - мой массив из нулей и единиц, который был считан с фаила:

Код:
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);


никак не получается вывести ровно под в этот каркас данный массив(, не могу разобраться в чем я допускаю ошибки..(

2)необходимо этот массив преобразовать из нулей и единиц в определенные символы, допустим нули - в пробелы, а единицы - решетки (аля стены и пути), затем вывести на экран, помогите пожалуйста!

3) как можно будет реализовать данные стены, что бы если обьект в них упирается, то он не двигался дальше (движение сделано с помощью стрелок)?
14
14 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
а если не из файла выводить - все хорошо получается?
40K
15 декабря 2011 года
mego4el
30 / / 19.09.2010
в общем во всем разобрался, кроме

Код:
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");
    }
}






компилятор не хочет преобразовывать char Cwall, cpassage в int:

warning C4305: 'initializing' : truncation from 'const int' to 'const char'
warning C4309: 'initializing' : truncation of constant value
14
15 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
219 больше, чем может вместить char
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог