Суббота, 19 Января 2019, 23:48

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [316]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [124]
Статьи о программах для создания игр, уроки и описания.
Софт [28]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [97]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [74]
Статьи, которые не вошли в определённые разделы.
Наш опрос
На каких мобильных устройствах вы играете?
Всего ответов: 781
Главная » Статьи » Создание игр

Попытка написать Space Impact в консоли
Добрый день.
Исходя из названия топика уже ясно, что со мной что-то не так и вообще у меня проблемы. Знаю)
Дело в том, что я учусь на первом курсе, а на летней сессии мне нужно будет сдать игрушку. Ну вот я, придавшись ностальгии и пораскинув умишком, решил что Space Impact будет идеальным решением, ведь в своё время она пленила моё юное сердце.
А, и кстати! Пока что я пишу её на Си, т.к. тонкости Си++ я не знаю, а Си вполневполне.
За пару деньков я написал основу, а потом я забил на это дело и мотивация моя сделала мне ручкой "пока-пока". Вот собственно я просто оставлю это здесь, чтобы представлять (какой наивный), что это вдруг кто-то прочтёт. Наверняка это придаст мне океан сил и веры в себя. Я так думаю.


Ну а если это кто-то прочтёт, то может этот кто-то ответить на вопрос "Как можно справится с мерцанием используя возможности Си?". Если кто-то скажет про двойную буферизацию, то пусть также добавит что-то о том, как её реализовать в Си.
Благодарен вам без меры.

Категория: Создание игр | Добавил: Curunir (25 Января 2014)
Просмотров: 3491 | Комментарии: 11 | Рейтинг: 4.5/4 |
Теги: Мерцание, Си, 2D игра, консоль, учусь, в разработке, Консольная 2D игра, Space Impact, игра, Star of War
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Попытка написать Space Impact в консоли», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 11
+0-
10 Saitei   (26 Февраля 2014 02:04)
Проще позиционировать курсор и обновлять(перерисовывать) изменившиеся кусочки.
Двойная буферизация предполагает собой ДВА буфера, один из которых просчитывается, а другой отрисовывается. Мало того, что их два, так ещё и буфер отрисовывается ЦЕЛИКОМ. В варианте, который предложил я, используется один буфер и обновляются лишь те элементы(символы), которые надо обновить.
Сам так делал, работает. По поводу "а что если надо обновить весь буфер?" сказать точно не могу, потому что я обновлял максимум 40% консоли за 1 шаг цикла (т.к. было довольно много "свободного" и "неизменного" пространства на карте)

+2-
8 Akyltist   (02 Февраля 2014 08:55)
Akyltisthttp://msdn.microsoft.com/ru-ru/library/windows/desktop/ms687404(v=vs.85).aspx
WriteConsoleOutput - то что нужно

+0-
7 kvestpro   (28 Января 2014 18:03)
kvestproВопросы задают на форумах, а не в статьях. За это можно и бан получить.

+3-
4 Curunir   (25 Января 2014 22:00)
CurunirТак что? Двойная буферизация... Не?) Совсем никто? Совсем-совсем?

+2-
5 stalker5889   (27 Января 2014 09:41)
stalker5889Двойная буферизация сложно. Можно просто переносить курсор в точку 0 0 и отрисовывать заново. Для небольших карт очень годно. А если фон чёрный как у тебя то мерцание незаметно и на больших картах. Делай так:
#include <Windows.h>
void setcur(int x, int y)//установка курсора на позицию x y
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
};
Далее в цикле отрисовки просто пишешь (вместо функции очистки экрана):
setcur(0,0);
и рисуешь лвл.

+0-
9 HaveToCheese   (16 Февраля 2014 16:04)
HaveToCheeseСогласен на 100%, т.к. делал сапера в консоли, НО данный метод существенно замедляет прорисовку, однако ничего лучшего я не нашел.

+0-
11 Saitei   (26 Февраля 2014 02:06)
Эх, слепой я, не увидел сообщение...
Дело говоришь!

+0-
6 Farcuat   (27 Января 2014 11:33)
Там если я правильно помню есть адрес B800h - это начало данных экрана в текстовом режиме. Т.е. ты делаешь свой буфер пишешь в него сцену, затем копируешь в B800h. Размер буфера 2XY - на пиксель два байта(символ и атрибут).

Второй способ это графический режим в консоли. Посмотри функцию initgraph там должны быть двустраничные режимы.

+-1-
2 artor   (25 Января 2014 20:36)
artorжаль ты в C тонкости незнаешь(

+1-
1 beril   (25 Января 2014 19:01)
berilэто больше для блога подходит

+0-
3 Curunir   (25 Января 2014 21:59)
CurunirСпасибо) Я подумаю)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • GamePlay
  • Kochol
  • Armory
  • Virtools
  • Supertuxkart
  • Defold
  • BasiEgaXorz
  • DarkPlaces
  • RuneSword
  • CryEngine V
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2019 Рейтинг