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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2009, 16:07   #1
Duran-
Новичок
Джуниор
 
Регистрация: 08.08.2009
Сообщений: 1
Вопрос Игра змейка на С++

немогу сообразить как сделать хвост змейке.Может вы чем поможете?
PS:только начал изучать программирование поэтому прошу не смеяться с написанного мною.

Код:
#include<iostream>
#include<windows.h>
#include<conio.h>
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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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};
	
	int i,j,code='w';
	HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD coord = {25,10};// Координаты смайла
	COORD coordjab={15,15};
	COORD udav[100];
/////Отрисовка поля>>>
	for(i=0;i<Y;i++)
	{
		for(j=0;j<X;j++)
		{
			switch(a[i][j])	
			{
			case 1:cout << (char)177;break;
			case 0:cout << ' ';break;
			}
		}
		cout << '\n';
	}
/////Отрисовка поля>>>

/////Движение червя>>>
	while(code)
	{
		Sleep(300);//Задержка движения
	if(_kbhit())//Если пользователь нажал клавишу
		{
		code = _getch();//Получаем ее код
		}
	else
		{
		SetConsoleCursorPosition(console,coord);
		cout << ' ' << flush;//Стираем смайл
		if(code=='w')coord.Y--;
		else if(code=='s')coord.Y++;
		else if(code=='a')coord.X--;
		else if(code=='d')coord.X++;
		}
	SetConsoleCursorPosition(console,udav[i]);
/////Движение червя>>>
/////Отрисовка яблока>>>
	if(coordjab.X==coord.X && coordjab.Y==coord.Y)
		{
		SetConsoleCursorPosition(console,coordjab);
		coordjab.X = rand() % 48+1; //
		coordjab.Y = rand() % 18+1; //кординаты яблока
		}
/////Отрисовка яблока>>>
		//червь
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_INTENSITY);//Цвет смайла - зеленый
		SetConsoleCursorPosition(console,coord);
		cout << (char)1 << flush;//Выводим смайл
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
		//яблоко
		SetConsoleCursorPosition(console,coordjab);
		SetConsoleTextAttribute(console, FOREGROUND_RED|FOREGROUND_INTENSITY);//Цвет яблока - красный
		cout << (char)2 << flush;//Рисуем
		SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
	}//while(code)
}

Последний раз редактировалось Duran-; 08.08.2009 в 16:12.
Duran- вне форума Ответить с цитированием
Старый 08.08.2009, 22:39   #2
sinj
программирователь
Пользователь
 
Аватар для sinj
 
Регистрация: 15.02.2009
Сообщений: 72
По умолчанию

Я когда то давно писал. У меня, кажется, у змейки голова была 1, пузо 2, пузо с едой 4, хвост 5. А добыча была 6. при этом голова влево была 11, вправо 12, вверх 13, вниз 14. Хвост 51-54. Ну и в этом духе. В зависимости от цифирь,выводил картинку. Правда циклов там было...
smile
sinj вне форума Ответить с цитированием
Старый 10.08.2009, 12:14   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Змейка - динамический массив. Когда змейка движется, смещай его к концу и в первый элемент помещай новую позицию головы. Когда змейка ест, удлинняй массив.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Змейка" program123 Общие вопросы Delphi 2 08.03.2009 23:49
Змейка(С++) MISHA13 Помощь студентам 1 08.02.2009 09:35
Игра "Змейка" spamer Общие вопросы Delphi 1 09.01.2009 04:22
Ещё одна игра "Змейка" Simply-Art Софт 17 05.07.2007 04:10