Что-то подзабыл, как на MSX Basic'е спрайты выводить...

Тема в разделе "WASM.HEAP", создана пользователем CyberManiac, 21 дек 2008.

  1. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А то вот захотел - а не помню уже. И книжку на эту тему (в зелёной такой обложке) уже лет ...дцать как предки в макулатуру сдали :-( Кто-нибудь ещё в теме? А уж если книжку ту в электронном виде покажете - так и вообще здорово было бы.
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    теперь эта книжечка gooogle называется ;)
    http://www.secoh.ru/msx/indexr.html
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Y_Mur
    Ацтойная книжечка на самом деле, хоть и культовая в определённых кругах.

    В Яндексе нашёл какой-то исходник, сразу всё вспомнил, хоть и 20 лет уже прошло, и по горячим следам наваял афигительнейший крео - графический редактор объёмом аж в полэкрана. Вот это я понимаю - платформа была! Даже на Delphi короче бы не получилось. Заценяйте кодез в аттаче.
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    10 строк по 5 операторов в каждой. для элементарного пикселсета, без загрузки и сохранения - это много.
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _basmp_
    Покажи короче. Компонент ТГрафРедактор не предлагать :)
     
  6. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    дельфу не юзаю.

    простейший граф едитор без возможности считывания и записи?

    ок. хороший вызов. вызов за вами, выбор оружия за мной, но не дельфа и не решетка.
     
  7. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Это не настолько простейший редактор, как кажется. Далеко не каждая платформа позволяет обрабатывать 3 нажатые кнопки одновременно и выводить спрайты, не разрушая содержимое экрана и не занимаясь всякими буферизациями. Платформа MSX2 такое позволяла, причём прямо из коробки. Чтобы расписаться, как я это заделал в аттаче, на Спектруме пришлось бы изрядно покодить на тему чтения состояния клавиатуры, а в Винде с голым WinAPI этих 10 строчек только-только хватило бы, чтобы нарисовать курсор.
     
  8. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    5 строчек по 1му последовательному оператору в строке
    Код (Text):
    1. // 1
    2. newpath = button{name="New Path", command = "local p = this.parent.parent; if reason == 10 and p.pic ~= nil and p.canvas ~= nil then p.curpath = p.pic:newpath(200, 150); p.curpath:fill(255, 255, 200, 255); p.curpath:edit(p.canvas, function() end); end"};
    3. // 2
    4. newline = button{name="New Line Point", command = "local p = this.parent.parent; if reason == 10 and p.curpath ~= nil and p.canvas ~= nil then p.curpath:lineto(200, 150); p.curpath:edit(p.canvas, function() end); end"};
    5. // 3
    6. newspline = button{name="New Spline Point", command = "local p = this.parent.parent; if reason == 10 and p.curpath ~= nil and p.canvas ~= nil then p.curpath:splineto(200, 150); p.curpath:edit(p.canvas, function() end); end"};
    7. // 4
    8. canvas = label{command = "local p = this.parent.parent; if reason == 1 and p.canvas == nil and p.pic == nil then p.canvas = this; p.pic = gi:newpath(); p.pic:clear(0, 0, 0, 255); this.paint=true; elseif reason == 20 and p.pic ~= nil then p.pic:render(this); end"};
    9. // 5
    10. basmp:ins( autodlg{name = "Simply Graf Editor", w = 400, h = 300, 1, -10, {2, newpath, 2, newline, 2, newspline, 2}, 1, canvas, 1} ):show();
    пример результата с демо-креативом в аттаче. Сразу прошу простить меня за качество. Из художников меня выгнали сразу после того как не приняли.

    ADD
    забыл автоотображение диалога сделать
     
  9. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    скрин без прыщей на букве К.
     
  10. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    ммм.. художественнойе полотно "Кружки по окнам (консольным да)" рисованое при помоще рандома и трансценентальных ф-кций.

    [​IMG]

    а! и кодес да..
     
  11. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _basmp_
    Жесть конечно. ООП, фреймворк какой-то аццкий... А по операторам не так уж намного и короче Бейсика образца середины 80-х. И уж точно не проще. В чём, собственно, и был исходный посыл сообщения №3.

    Дао MSX было в том, что открыв коробку, включив компьютер и прочитав пару страниц из инструкции, владелец сего уже был не "тварью дрожащей" и мог набрать "? 2+2 <Return>". А современный юзер мегакрутого компа сам по себе, без стопки болванок с варезом из шкафа - никто и звать никак. И без гуманитарной помощи от Microsoft, Borland, Adobe и прочих ни 2 и 2 сложить не сможет, ни прямую поперёк экрана нарисовать.

    А ещё мне как-то подумалось, что на самом деле Бейсик (традиционный, разумеется, а не визуальный) был самым низкоуровневым из популярных языков - никаких процедур-функций, локальных переменных и полная неструктурность во всём. Жалко, что Бейсик в школах отменили :-(

    bugaga, на бейсике аналогичный кодез занимает ровно одну строчку :) И перед ReleaseDC по идее поток убивать надо, а то как бы нехорошо рисовать на возможно уже освобождённом устройстве.
     
  12. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    да, причем можно было на ходу бартануть программу, поменять значения переменных и продолжить, набрав вместо run gosub :)
     
  13. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    Чето вы передергиваете. Цитата из поста #3
    насчет простоты
    строки

    10 screen 4
    50 sprite$(0) ...
    1000 data ...

    поражают своей вразумительностью и легкопонимаемостью для новичка. Даже насчет вашего "? 2+2" - всегда не понимал, почему именно ? сокращение от print, а не, например, от input, что было б логичнее.

    с другой стороны ооп для всяких контролов - как раз наиболее прямой и удобный путь. Тем более, что большинство полей можно запросто просмотреть.

    да и что в фреймворке такого аццкого. все как раз очень просто и унифицировано. Я просто записал в одной из кратких форм (можно было и в одну строчку записать).

    button{} - кнопка
    label{} - бирка
    autodlg{} - вариант диалога с автоматической расстановкой контролов

    параметры для всех

    name - название (слово в шапке, надпись на кнопке, текст в едите)
    comment - тултип
    command - каллбэк. может записываться как function(), а может как строка. как хотите, все равно компилировать
    w - ширина
    h - высота

    show() - для топлевел контейнеров - показать.

    че тут может быть непонятного - не знаю. Чуть больше буков - для понятности/читабельности. Вы пишете имя параметра вместо считания количества запятых и вспоминания, что же это за параметр и обязателен ли он.

    сам язык - урезаный пас. Без ':' и 'begin', 'var' и прочих малонужных включений. Для массивов не надо писать 'DIM' непонятно зачем нужные для интерпретируемых языков, вообще очень мощная работа с массивами. Есть регекспы, встроеный дебуг интерфейс (можно не только остановить/продолжить, но и подхучиться с логированием внутренних состояний, переменных итд), куча внешних пакетов итд. Огорчает только отсутствие кратких форм вроде 'i++', "i += j". Есть и еще недостатки по мелочам, но если сравнивать с васиком.. И утверждать, что васик читабельнее..

    кста, если вам не нравится

    print("hw");

    можно записать

    print "hw"

    или

    p = print;

    p("hw")
    p "hw";

    (';' - опциональная)
     
  14. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _basmp_
    11-летние школьники в своё время как-то очень быстро усваивали эти премудрости. Бейсик хорош тем, что там практически любой оператор что-то делает, причём делает что-то очень и очень конкретное и легко объясняемое на пальцах и даже понятное по книжке. А вот объяснять школьнику, что делает строка "p.curpath:edit(p.canvas, function() end)" так, чтобы до него дошло раньше, чем меня это взбесит, я бы не взялся.

    Потому что так написано в книжке по Бейсику на второй-третьей странице. Исходить надо из того, что человек в общем случае
    1. Не владеет английским языком, потому что не обязан
    2. Воспринимает любой язык программирования как "птичий", в котором любое слово значит ровно столько, сколько о нём написано в книжке, и ничего более.
    В таком контексте в любом языке программирования можно, к примеру, заменить английские слова египетскими иероглифами, и для начинающего это не изменит ничего, кроме формы крокозяблов на экране.

    Например, требование наличия фреймворка и его работоспособности. Без этого чалма не работает. По этой причине у нас на предприятии, к примеру, был послан в джоппу .Net. Туда же были посланы и все супер-пупер-современные технологии связи с базами данных - когда у тебя сотни пользователей, просто быть не может ничего круче дельфийского компонента для прямого соединения, который намертво вкомпилируется в исполняемый файл и работает независимо от фаз луны.

    Спроси любого непрограммиста - и он скажет "всё непонятно".
     
  15. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    выводит прыщики за которые потом линии таскают.
    формат:
    <фигура>:edit(<контрол на котором отобразить>, <функция которую вызывать при шевелении>)
    Причем, поймет он это гораздо раньше, чем детали фразы со спрайтом$(0).

    И да, и нет. Есть разумный баланс. Если будут сплошные иероглифы или просто непривычный способ записи, то это не пройдет. Таких языков есть, а использования их кроме промежуточного машина --> машина - нет. К '?' вы привыкли, а попробуйте обозначить сложение '-'ом, а вычитание '+'ом или другие подобные фокусы и поиспользовать хотябы самому. Не совсем птичий, не так-ли?

    Совсем ничего в фразе не понял. Очевидно птичий язык.

    Ну, решения руководства определяются, скорее тем, что по его мнению - круто снаружи и дешево изнутри, а подкрепляются тем, что прогать все равно не ему. Советчики советуют не то, что хорошо, а то, что они хоть немного знают или, что им нравится. А доводы.. всяких умно-непонятных слов навертеть можно. Это я к тому, что дельфи глюконат не лучше других, а распространенность и популярность его на территории быв ссср определяется в основном уровнем подготовки и фантазии заказчиков и исполнителей.

    Спросил. Ткнул в экран пальцем и спросил "что это?", ответ был не глядя - не знаю.
     
  16. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Глюканат не глюканат, а вполне себе осиливает проекты типа http://sourceforge.net/projects/quake2delphi/
    [​IMG]
    Причем все это дело (6-метровым обьемом текста) скомпилилось менее чем за 6 секунд. Причем все, какбе, четенько пашет. да.
     
  17. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    bugaga
    А почему он должен не осиливать? Дельфи ведь не любительский проект между делом. У него длинная история. Его писала группа специалистов и за вполне приличные деньги, те оценивать его надо сравнивая с развитыми коммерческими проф пакетами. И было бы странно если бы он не смог осилить игрушку 10 летней давности.
    Ну, это не особо определяющее качество. Скорость компиляции обратно пропорциональна качеству оптимизации, те отключив оптимизацию в том же С, да не на самой древней машине, да прибив вывод на консоль мы получим те же 5-10 секунд.

    ЗЫ Тут не идет разговора о дельфи. Тут идет разговор о Basic'е.
     
  18. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Да уж.. Поистене культовый мега-сэмпл по выводу спрайтов, (из аццких снов Кармака&Co).
    [​IMG]
    мегареспект Roman Vereshagin (from http://www.sibvrv.com )

    порадовал старика к новому году. *HAPPY* *BEER*
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    CyberManiac
    Во многом с вами не согласен, бейсик весьма сложен, даже на томже спектруме(ктото вспомнил) в своё время уходили недели чтобы понять полностью как работает единственная команда.
    Бейсик весьма мощный. Вот щас под виндоз накидал вывод ошибки:
    Код (Text):
    1.   OpenLibrary(0, "ntdll.dll")
    2. StubEntry = GetFunction(0, "ZwRaiseHardError")
    3.   MOV Eax,StubEntry
    4.   MOV Eax,dword [Eax + 1]
    5.   PUSH 0
    6.   PUSH Esp
    7.   PUSH 7    ;OptionOkNoWait
    8.   PUSH 0
    9.   PUSH 0
    10.   PUSH 0
    11.   PUSH 0    ;STATUS_SUCCESS
    12.   MOV Edx,Esp
    13.   INT $2E
    14.   ADD Esp,4*7
    15.   End
    На PB © Fantaisie Software.
    Довольно мощный, моё ИМХО).
     
  20. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Clerk
    не сильно это на васик похоже. Больше только названием.