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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 02:20   #1
JoulupukkiI
 
Регистрация: 16.01.2010
Сообщений: 6
По умолчанию Консоль и псевдографика

Извиняюсь сразу, я новичок, не судите строго!
Возникла идея написать консольную игрушку с псевдографикой на Си.
Игра в жанре СуперМарио.
Я нарисовал человека:
... ☻
.◄☼►
...‼
(в консоли это выглядит симпатичнее=) Точки нужны, чтобы форум не обрезал лишние пробелы)
Организовал передвижение по экрану стрелочками, сделал проверки, чтобы он не выходил за пределы рабочего окна. Всё это элементарно! Правда постоянная отрисовка printf ом не получилась, потому что она медленно работает и очень сильно мерцает. В начале я вывожу это на экран потом запоминаю матрицу из видеобуфера и у же работаю с ней.

Теперь появилась целая туча вопросов!
1.Мне нужно создать много объектов(стены, НПС), которые будут появляться по мере движения персонажа, но дело в том что я вообще не представляю как это организовать? Толи создать одномерный массив и потом уже ифами на каждом этапе отрисовать объекты или же сразу нарисовать массив с обьектами и потом уже выводит всё на экран. Какой алгоритм используется в подобных игрушках?
2. У меня не получается сделать прыжок!
При нажатии стрелочки вверх обьект движется вверх. Потом идёт обработка, если обьект выше определённых координат то, задержка в виде for (i=0;i<20000;i++){}, отрисовываем на х-1 и так пока х != нижняя граница.Это не работает, поскольу очень трудно подобрать задержку и имеется мерцание. Как это сделать?

Последний раз редактировалось JoulupukkiI; 16.01.2010 в 02:27.
JoulupukkiI вне форума Ответить с цитированием
Старый 19.03.2011, 23:54   #2
fair7
 
Регистрация: 07.03.2011
Сообщений: 7
По умолчанию

Мне самому интересно было бы. В книге вычитал как делать буферизацию ( да, она быстрее выводит на экран, но нельзя использовать больше двух цветов). Лучший способ, который на сегодня знаю, это позиционироваться на экране, и нужным цветом рисовать символ - если перерисовывать всё окно -будет медлиновато, но если только в том месте, где перемены - вполне нормально:
вот пример для размышлений:
Код:
#include <windows.h>
#include <conio.h>
HANDLE hCon; // дескриптор консоли
void nn(){_cprintf("\n");}
void _(){_cprintf("_");}
void Blinking(int off=99)
{   CONSOLE_CURSOR_INFO cci;
    cci.dwSize=off;
    cci.bVisible=false;
    SetConsoleCursorInfo(hCon,&cci);
}
void Color(int text,int ground=0)
{   hCon =  GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( hCon,((text<<4)|ground));
}
void _XY(int X, int Y)
{   COORD coord = { X, Y };
    SetConsoleCursorPosition(hCon, coord);
}
void c(char cA[]){_cprintf(cA);}
void c(char ch){_cprintf("%c",ch);}
int main()
{
    char t1[]={32,-6,45,61,205,216,176,177,178,219,0};
    char t2[]={178,177,176,176,216,205,61,45,-6,32,0};
    int text=0,ground=0;
    for (int i=17;--i;++text)    
        for (int j=17;--j;++ground)
        {   Color(text,ground);
            c(t1);c(t2);          
        }    
    _XY(0,0);
    Blinking();
    _getch();
    return 0;
}
fair7 вне форума Ответить с цитированием
Старый 20.03.2011, 15:09   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

ООП рулит.Расшифровываю - объектно-ориентированное программирование. Вот только проблема в том, что Си его не поддерживает, придётся писать на С++.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Псевдографика на С Jhon_89 Общие вопросы C/C++ 4 03.06.2014 01:21
Псевдографика в консоле Spice Общие вопросы .NET 2 23.12.2008 13:41
Консоль MAcK Общие вопросы Delphi 4 19.12.2007 19:05