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 рисование на асме, самое веселое
Сообщение отредактировал 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, биос графика, конечно) спс за разъяснение
|
|
| |
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 |
|
| |
|