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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2009, 10:24   #1
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию игра лабиринт

Есть код игры
Смайлик движется по лабиринту с помощью нажатия клавиш, есть два смайлика врага (один движется по вертикали, второй по горизонтали),
необходимо ещё добавить смайлик, который движется на смайлик игрока
beregok вне форума Ответить с цитированием
Старый 23.01.2009, 10:25   #2
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

помогите с алгоритмом смайлика движущегося на смайлик игрока
beregok вне форума Ответить с цитированием
Старый 23.01.2009, 10:26   #3
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

Код:
int i,j;
	int lives = 3;//счетчик жизней
	DIR dir1 = LEFT;
	DIR dir2 = LEFT;
	HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD coord = {25,10};// Координаты смайла
	COORD coord1 = {40,15};// Координаты 1-го врага
	COORD coord2 = {15,8};//Координаты 2-го врага
	COORD coord3 = {20,7};
	COORD coordLives = {0,22};// Координаты вывода счетчика жизней

	//Отрисовка лабиринта>>>
	for(i=0;i<Y;i++)
	{
		for(j=0;j<X;j++)
		{
			switch(a[i][j])	
			{
			case 1:cout << (char)177;break;
			case 2:cout	<< (char)36;break;
			case 3:cout	<< (char)3;break;
			case 0:cout << ' ';break;
			}
		}
		cout << '\n';
	}
	//Отрисовка лабиринта<<<

	while(true)
	{	
		Sleep(50);//Задержка движения

		//Движение 1-го врага>>>
		SetConsoleCursorPosition(console,coord1);
		cout << ' ' << flush;//Стираем
		if(dir1 == LEFT)
		{
			if(a[coord1.Y][coord1.X-1]!=1)coord1.X--;
			else dir1 = RIGHT;
		}
		else
		{
			if(a[coord1.Y][coord1.X+1]!=1)coord1.X++;
			else dir1 = LEFT;
		}

		SetConsoleCursorPosition(console,coord1);
		SetConsoleTextAttribute(console, FOREGROUND_RED|FOREGROUND_INTENSITY);//Цвет врага - красный
		cout << (char)2 << flush;//Рисуем
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
		if(coord.X == coord1.X && coord.Y == coord1.Y)
		{
			lives--;
		}
		//Движение 2-го врага>>>
		SetConsoleCursorPosition(console,coord2);
		cout << ' ' << flush;//Стираем
		if(dir2 == LEFT)
		{
			if(a[coord2.Y-1][coord2.X]!=1)coord2.Y--;
			else dir2 = RIGHT;
		}
		else
		{
			if(a[coord2.Y+1][coord2.X]!=1)coord2.Y++;
			else dir2 = LEFT;
		}

		SetConsoleCursorPosition(console,coord2);
		SetConsoleTextAttribute(console, FOREGROUND_BLUE|FOREGROUND_INTENSITY);//Цвет врага - красный
		cout << (char)2 << flush;//Рисуем
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
		if(coord.X == coord2.X && coord.Y == coord2.Y)
		{
			lives--;
		}
		//Движение 1-го врага<<<

		if(_kbhit())//Если пользователь нажал клавишу
		{
			int code = _getch();//Получаем ее код
			SetConsoleCursorPosition(console,coord);
			cout << ' ' << flush;//Стираем смайл
			switch(code)
			{
			case 'w': if(a[coord.Y-1][coord.X]!=1)coord.Y--;break;
			case 's': if(a[coord.Y+1][coord.X]!=1)coord.Y++;break;
			case 'a': if(a[coord.Y][coord.X-1]!=1)coord.X--;break;
			case 'd': if(a[coord.Y][coord.X+1]!=1)coord.X++;break;
			case 27: exit(1);
			}
			if(coord.X == coord1.X && coord.Y == coord1.Y)
			{
				lives--;
			}
			
		}
		if(lives == 0)
		{
			system("cls");
			COORD center={35,15};
			SetConsoleCursorPosition(console,center);
			cout << " G A M E  O V E R!!!"<<flush;
			_getch();
			break;
		}
		SetConsoleCursorPosition(console,coordLives);
		cout << "Lives: " << lives << flush;
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_INTENSITY);//Цвет смайла - зеленый
		SetConsoleCursorPosition(console,coord);
		cout << (char)1 << flush;//Выводим смайл
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
		SetConsoleCursorPosition(console,coord3);
		cout << (char)2 << flush;//Выводим смайл
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
	}
}

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 23.01.2009 в 17:59.
beregok вне форума Ответить с цитированием
Старый 23.01.2009, 10:36   #4
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

а это лабиринт
Код:
using namespace std;
const int Y = 20, X = 50;
enum DIR{UP, DOWN, LEFT, RIGHT};
void main()
{
	int a[Y][X] = {	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
					1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,0,1,1,0,1,0,1,1,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,1,0,1,0,1,0,0,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,0,1,1,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,1,0,1,1,1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
					1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};

Модератор: аналогично

Последний раз редактировалось MaTBeu; 23.01.2009 в 18:00.
beregok вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лабиринт)) Whiplash Паскаль, Turbo Pascal, PascalABC.NET 2 04.12.2008 17:12
Поиск выхода из лабиринта! Входными параметрами являются лабиринт, заданный массивом A[n][n] Astor Помощь студентам 4 12.05.2008 16:45
Задача на Турбо Паскаль "Лабиринт" H[o][o]K Помощь студентам 1 17.12.2007 18:46
Игра [LOL] Помощь студентам 2 13.06.2007 18:36