Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 14:46   #1
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию игровое поле C++

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

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) как можно будет реализовать данные стены, что бы если обьект в них упирается, то он не двигался дальше (движение сделано с помощью стрелок)?
mego4el вне форума Ответить с цитированием
Старый 15.12.2011, 00:56   #2
mego4el
Пользователь
 
Аватар для mego4el
 
Регистрация: 19.09.2010
Сообщений: 87
По умолчанию

в общем во всем разобрался, кроме

Код:
Код :
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[i][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
mego4el вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игровое поле. Stranger333 Общие вопросы Delphi 3 23.06.2010 14:17
Шестиугольное игровое поле Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 18.07.2009 12:14
Игровое поле в C++ Builder. Lazio C++ Builder 5 15.07.2009 22:57
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Игровое поле с шестиугольной "клеткой" Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 21.11.2007 18:14