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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2011, 21:22   #1
danzel1
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 61
По умолчанию змейка на с++

какие нужны познания чтобы написать змейку на си++?
danzel1 вне форума Ответить с цитированием
Старый 29.07.2011, 21:31   #2
какtus
Пользователь
 
Аватар для какtus
 
Регистрация: 02.04.2011
Сообщений: 56
По умолчанию

Конечно, чем больше познаний, тем лучше, хотя змею можно написать, зная только циклы и условия. А ты хочешь консольную игру или оконную.
какtus вне форума Ответить с цитированием
Старый 29.07.2011, 21:59   #3
danzel1
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 61
По умолчанию

консульную.
Просто я не знаю как сделать так чтобы змея двигалась непрерывно и как обновлять экран
danzel1 вне форума Ответить с цитированием
Старый 29.07.2011, 23:09   #4
какtus
Пользователь
 
Аватар для какtus
 
Регистрация: 02.04.2011
Сообщений: 56
По умолчанию

Обновление экрана- это очищение экрана и перерисовка всего.
Очищаешь экран так:
Код:
system("cls");
Перерисововать можно следующим алгоритмом: проходишь по всему игровому полю при помощи функции gotoxy(int xpos, int ypos), (которая устанавливает курсор в точку с координатами xpos и ypos) и пишешь нужный символ.
Код этой функции выглядит так:
Код:
void gotoxy(int xpos, int ypos)
{
  COORD scrn;    
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
  scrn.X = xpos; scrn.Y = ypos; 
  SetConsoleCursorPosition(hOuput,scrn);
}
(Нужно подключить библиотеку Windows.h)
(Курсор с координатами (0,0) находится в левом верхнем углу консоли.
Чтобы знать когда обновлять окно, можно воспользоваться функцией clock()/CLOCK_PER_SEC, из библиотеки ctime. Она возвращает количество секунд, прошедших с начала программы.
Можно сделать так:
Код:
clock_t t;
t=clock();
while(!dead)
{
    //Перерисовываем каждые 30 миллисекунд
    if (clock()-t)/CLOCK_PER_SEC>0.03)
    {
         Перерисовка;
         t=clock();
    }
}
какtus вне форума Ответить с цитированием
Старый 30.07.2011, 00:01   #5
danzel1
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 61
По умолчанию

а как массиву цвет задать?
danzel1 вне форума Ответить с цитированием
Старый 30.07.2011, 00:11   #6
какtus
Пользователь
 
Аватар для какtus
 
Регистрация: 02.04.2011
Сообщений: 56
По умолчанию

Чтобы писать синими буквами на красном фоне:
Код:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
Чтобы писать желтыми буквами на зеленом фоне:
Код:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_YELLOW | FOREGROUND_INTENSITY);
Думаю принцип понял.

P.S. Проще сделать оконную змейку, ну раз уж начал консольную, то доканчивай.
Если что нибудь будет не получаться пиши.
какtus вне форума Ответить с цитированием
Старый 30.07.2011, 09:06   #7
danzel1
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 61
По умолчанию

а я считал что наобарот))))
спасибище тебе.
danzel1 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
змейка spydark91 Общие вопросы Delphi 4 16.07.2011 15:12
Змейка на c++ Banner Помощь студентам 1 14.05.2011 16:21
Змейка на с++ Banner Помощь студентам 5 26.02.2011 16:42
змейка =) romiccccc Помощь студентам 0 12.05.2010 11:08
Змейка(С++) MISHA13 Помощь студентам 1 08.02.2009 09:35