Понедельник, 27 Июня 2022, 08:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » 2D карта в PASCAL
2D карта в PASCAL
MegapokДата: Пятница, 22 Апреля 2016, 02:36 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет, решил написать игру в старом добром паскале и в какой то момент понял что не имею представления как создать карту, пытался нагуглить что нибудь но кроме намеков на двумерные массивы нечего не нашел. Можете поделиться советом, а еще лучше примером как создать например шахматное поле и подгрузить тайтлы? Буду вам очень признателен.
LertmindДата: Пятница, 22 Апреля 2016, 03:01 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Чем тебе двумерные массивы не угодили, тем более для простого шахматного поля? Задача тривиальна. Ты не написал что собираешься использовать для вывода графики.
OrdanДата: Пятница, 22 Апреля 2016, 03:26 | Сообщение # 3
Главный зомби
Сейчас нет на сайте
type TБлок=record
Название :string;
Тип :string;
КартинкаХ:Integer;
КартинкаУ:Integer;
Проходимость:Integer;
end;
var Блок :array[0..Хмап,0..УМап] of TБлок;

Я делаю так. Массивы записей.
Вывожу с помощью опенГЛ


Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)

Мои проекты ТЫК
Мои видяхи на ютубэ ТЫК

Если ты споришь с идиотом, вероятно тоже самое делает и он.
GudleifrДата: Пятница, 22 Апреля 2016, 12:26 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата Lertmind ()
Ты не написал что собираешься использовать для вывода графики.
Видимо, в этом и проблема.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
MegapokДата: Пятница, 22 Апреля 2016, 17:46 | Сообщение # 5
был не раз
Сейчас нет на сайте
Ordan,
Зачем выводить через опенГЛ?
Можно увидеть рабочий код, можно без комментариев к нему, заранее спасибо.
И еще, что нужно изучить что бы самому более менее ориентироваться и знать где искать в будущем?

Добавлено (22 апреля 2016, 17:46)
---------------------------------------------
Lertmind, Gudleifr, Думаю проблема в том, что я просто не знаю и даже представления не имею как это делается.

GudleifrДата: Пятница, 22 Апреля 2016, 18:14 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Megapok, начать, наверное надо с того, что понять, как можно рисовать на Вашей машине. Собираетесь ли использовать "чистую операционную систему" или какой-либо графический конструктор? Какую используете операционную систему? Насколько с ней знакомы? Какие навороты готовы на нее докупить, чтобы избежать этого знакомства? Короче, забудьте пока о программировании и посоветуйтесь с друзьями - что на чем идет и на чем это пишут.

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
MegapokДата: Пятница, 22 Апреля 2016, 20:12 | Сообщение # 7
был не раз
Сейчас нет на сайте
Gudleifr, Пишу под винду, подгружать тайтлы. Скорее всего я не улавливаю чего то глобального в Вашем совете, по этому проясню сразу, пишу я исключительно для себя и общего развития, у меня нет каких то коммерческих планов. Главное что бы это работало на моем железе, остальное меня не очень волнует. Ну как то так.
GudleifrДата: Пятница, 22 Апреля 2016, 20:28 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Цитата Megapok ()
Пишу под винду
Хорошо, с этим определились. Есть три основных железобетонных способа рисовать в Винде (и они абсолютно не зависят от языка программирования, т.к. все сводится к вызову некоторых ф-ий): Win-API, DirectX и OpenGL. Плюс чуть больше, чем дофига, производных способов: библиотек, конструкторов, виртуальных машин... Каким способом пытаетесь рисовать Вы?


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
roma3fonДата: Пятница, 22 Апреля 2016, 20:28 | Сообщение # 9
участник
Сейчас нет на сайте
Megapok, каким образом вы подгружаете тайтлы, и как выводите картинку?
Если вы делаете тайтловую карту, тот тут без массивов никак.
Легче всего писать карту в буфер, удобнее со смещением работать и со всякими отметками, а потом уже рисовать на экран.

Gudleifr рисование на асме, самое веселое biggrin


Сообщение отредактировал roma3fon - Пятница, 22 Апреля 2016, 20:33
GudleifrДата: Пятница, 22 Апреля 2016, 20:57 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Цитата roma3fon ()
рисование на асме, самое веселое
Под Виндой рисование "на асме" ничем не отличается от рисования на PASCAL.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
roma3fonДата: Пятница, 22 Апреля 2016, 21:12 | Сообщение # 11
участник
Сейчас нет на сайте
Gudleifr, ну тут я с вами не соглашусь, грапф рисует как то так:
mov cx,X;
mov dx,Y;
mov ah,0Ch;
mov al,Color;
mov bx,0;
int 10h;
А если самому, то получится быстрее на прямую в видеопамять писать:
Mem[SegA000:X+(Y shl 8)+(Y shl 6)]:=Color;
GudleifrДата: Пятница, 22 Апреля 2016, 21:32 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
roma3fon, INT10H - это не "графика на асме", а "BIOS-графика" (в Винде не работает). А грузить в видеобуфер (это метод DirectX) что из-под асм, что из PASCAL - без разницы.

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
roma3fonДата: Пятница, 22 Апреля 2016, 21:35 | Сообщение # 13
участник
Сейчас нет на сайте
Gudleifr, биос графика, конечно) спс за разъяснение biggrin
MegapokДата: Суббота, 23 Апреля 2016, 02:43 | Сообщение # 14
был не раз
Сейчас нет на сайте
Gudleifr, Время глупых вопросов от ньюфага. У меня есть пачка готовых тайтлов, как их подгрузить я не знаю, это то что я хотел бы узнать тут. Как их вывести я уже догадываюсь, поэтому пока что попробую сам разобраться в двумерных массивах.
roma3fon, Проблема подгрузки это одна из тех причин почему я тут. Я и не имею нечего против массивов, просто пока имею слабое представление о том как это будет работать.
GudleifrДата: Воскресенье, 24 Апреля 2016, 18:28 | Сообщение # 15
почти ветеран
Сейчас нет на сайте
Цитата Megapok ()
У меня есть пачка готовых тайтлов, как их подгрузить я не знаю, это то что я хотел бы узнать тут. Как их вывести
Дык, об этом и разговор. Все зависит от Вашей машины (точнее от ее Операционной Системы). (Например, я последнее время ленюсь рисовать сам и часто создаю HTML-файл, который отрисовывавтся броузером, а если надо что-то нарисовать по месту, создаю на лету GIF-чик...) Способов тысячи. И прежде, чем их перебирать, укажите хотя бы примерное направление перебора!
Еще раз повторю. Любая программистская задача состоит из трех частей: 1. решения на бумажке, 2. записи-программирования решения и 3. умения решение запустить. Вы все пытаетесь решить (2), а надо начать с (3).
Давайте с начала. Версия винды? Версия PASCAL? Оценка по курсу "Операционные системы"?

Добавлено (24 апреля 2016, 18:28)
---------------------------------------------
ЛИКБЕЗ. РИСОВАНИЕ ПО ПОНЯТИЯМ
Насколько я понял, проблема, вставшая перед коллегой, заключается в следующем: почему в умных книжках по программированию ничего нет про рисование, а многочисленные программисты рисуют, как ни в чем не бывало? Где спрятана в компьютере рисовательная машина и как ей рулить?

I. Какими свойствами обладает компьютерная рисовательная машина? Исторически, любой BASIC обладал среди прочего тремя инструментами рисования (как и доступа к любому другому железу): 1) специальными рисовательными командами; 2) командами универсального доступа к инструментам машины и операционной системы (ОС); 3) способами подгрузить фрагмент в машинных кодах. Эта трехэтажность (от самых удобных, но медленных, до скоростных, но требующих отдельного изучения средств) сохраняется и по сей день, однако, она эволюционировала за счет того, что современные ОС сами слишком завязаны на рисование и озабочены тем, чтобы не дать программисту что-то нарисовать не там, где надо.

II. Где обитают рисовательные машины? Во-первых, все три вида BASIC-команд в "серьезных" языках программирования выглядят практически одинаково - это вызовы некоторых функций из некоторых библиотек (по сути, это метод (2) - т.к. механизм вызова ф-ий универсален). И, вместо "команды этого типа", теперь надо говорить "библиотеки этого типа". Причем, обычно, совершенно не важно, из программы на каком языке происходит вызов. Что из программы на MASM, что из C++. Есть тонкости с несоответствием форматов заголовков библиотек, и передачей параметров, но обычно в документации на язык программирования (именно в документации по текущей версии под конкретную ОС, а не в книге!) это описано. Во-вторых, есть куча "несерьезных" Visual-Basic-ов, Delphi и прочих "конструкторов", которые по-прежнему пытаются все свести к "специальным рисовательным командам" в стиле "как я нарисовал, так и будет работать". По сути, они просто прячут "серьезные" вызовы нужных функций от глупого пользователя-кодера (умный может без проблем докопаться до них под этой визуальной мишурой).

III. Что могут рисовательные машины? Если мы говорим о Windows, то дело обстоит следующим образом: "жильцов переселили, а номера квартир перевесили". Проще всего стало работать с (3) - т.к. код библиотек физически отделен от кода программы, то нам совершенно наплевать, как и в чьих кодах библиотеки написаны. Самый яркий представитель этой категории - OpenGL - вообще предпочитает работать на процессоре видеокарты. "Общие команды доступа к ОС" (2) - Win-API - заняли по тормознутости и слабой функциональности место "специальных команд". Это вполне понятно - ведь Windows сам стал графическим и был вынужден включить специальные команды в общие. Казалось бы, с доступом к этим библиотекам должно быть проще всего, но дело обстоит ровно наоборот: танцы с бубном еще те. Именно поэтому первое, что делают все Visual Basic-и - это прячут все "серьезные" вызовы (см. выше) этого самого Win-API. Смешнее всего дело обстоит со специальными рисовательными командами - WinG, GameSDK, позднее DirectX (это все разные версии одной и той же лабуды). За основу рисования взят прямой доступ к железу (ближе всего к (3)) и организован "в обход" Win-API. Windows делает вид, что выделяет программисту некий кусочек машины для рисования чего угодно и как угодно. В принципе, функции и Win-API, и DirectX, и OpenGL описаны в многочисленных книжках. Самое трудное, повторяю, научиться вызывать функции из библиотек.

IV. Если лень разбираться. Тогда нужно поверх Windows поставить что-то совсем "несерьезное", которое спрячет от вас все "серьезное" и даже сами библиотеки. Что именно взять, посмотрите у друзей. Конечно можно нарваться на что-то совсем страшное, типа Qt, но количество советчиков на этом уровне заведомо превышает потребности в советах. Так что, тут не заблудитесь.

Как-то так...


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Воскресенье, 24 Апреля 2016, 20:02
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » 2D карта в PASCAL
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг