Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Материал про графику на Pascal

8.8K
05 сентября 2007 года
iv0_
59 / / 19.01.2007
Напишите сылки где про графу на Pascal говориться
Задали значит движ изображения зделать:confused:
Хоть на паскале нечё не зделаеш хочу блеснуть перед уч
Или названия опрат интр напишите напр заливка
области экрана или функ я в Helpe о них узнаю Pliz!!!!:D
______________________
Разум сила
551
05 сентября 2007 года
Pavia
357 / / 22.04.2004
Ай андестенд ю.
Собственно чего хочешь то? Функции в справки расписанны. Модуль graph.

Движение делается двумя путями. Первый полная перерисовка.
Вторая частичная перерисовка.

Можно спрайтовый движек сделать. Набор изоброжений выводиться на экран. Тем самым создается анимация. Правда если делать на обычном Borland Pascal памяти на многое не хватит.

Можно и 3D замостить - правда тут сложно все ручками придеться делать, а вы у нас бело ручка?

Если будут идеи. То могу рассказать как сделать.
8.8K
05 сентября 2007 года
iv0_
59 / / 19.01.2007
А частичная перерисовка даёт повышение скорсти или нет:confused:
с паскалем знаком смутно
но все лог опер знаю
А 3D там лайнами(линиями) придёться делать или
Pascal там обычный спраитами как говориш не выдит
И ещё а как всмысле где описание есть там же обший Help мне придёться чтоли все функции паскаля просмотреть
Или там справочник есть где то?
А я как раз не белоручка с уд сделаю хоть 3D
Графу мы там где учусь непроходили лиш задания сказали на семестр поэтому пока я ноль по ней
А паскаль у нас вобще Turbo Pascal
А белоручка обижаеш еслиб англ знал игру бы с молотил что касаеться лиш логики я отлично:D
551
06 сентября 2007 года
Pavia
357 / / 22.04.2004
Стандартные функции, медлительные. Для быстрого вывода используют прямое обращение к видео памяти.
Частичная перерисовка работает быстрее чем полная. До определенного придела, потом лучше уже полную перерисовку делать. Частичная перерисовка позволяет сделать анимацию на стандартных функциях.

Входишь в хелп, там можно найти описание юнита "graph", со всеми функциями. Help давным давно уже существует в русском виде.

Спрайтами тоже можно рисовать. Знакомый рассказывал что мортолкомбот делал. И ничего все работало.

Другой знакомый делал змейку. Прикольно у него было выводил квадратики, с заданной текстурой. Змейка была в сеточку. А в качестве приманки зайчик.

Если будешь делать 3D, то стандартные функции позволят выводить только провлочный каркас. Хотя можно полигоном нарисовать и закрашенную часть.
А вот если самому написать все функции начиная от вывода линии и триугольника. То там можно уже большее сделать.

Разница между Turbo и Borland не велика. Мне просто последний больше нравиться. =)

Так, что главное это идея. А как реализовать придумую. Ты вообще что хочешь сделать?
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
Ну наример корабль кторый медленно уходит под воду. Вид - картинка смотряшяя на него с переди приэтом медлено как бы отдаляеться назад от него он становиться менее видим по размерам (уменьшаеться)
но медленно, кораблик должен утонуть преже Потом всё повторяеться по циклу.
цикл прекратиться нажатием Enter
Конечно сложно но в иделе что хочу:cool:
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
Всё нашёл модуль graph вроде немного разобрался.
Спасибо за помощь теперь всё получиться.
good
И ещё на последок прямое обрашение к видео памяти в Graph
врятли говориться?
А если нет то где можно посмотреть про это.
Скорость люблю.:o
551
06 сентября 2007 года
Pavia
357 / / 22.04.2004
Прямой доступ к памяти делается, вот так вот.
mem[$A000:y*Width+x]:=Color
Символ $ - означает шестнадцатеричное число
mem доступ к памяти
mem[сегмен:смещение]
A000:0 адресс видео памяти, в графическом режиме.
B800:0 в текстовом

Предпочтителен режим MCGA - 320х200 на 256 цветов. Так, как в таком режиме один байт соответствует одному пикселю.

А дальше реализуешь свои алгоритмы вывода изоброжения.
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
Всё тогда, тему можно закрывать.
Спасибо:rolleyes:
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
Ошибся ненадо пока тему закрывать:(

Попробовал пример про доступ в память но
Color не цвет меняет а дистанцию между рисованием вроде
Ставил 255 сплошная линия меньше штриховка
А цвет как назло не меняеться:o
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
Вот код пробной программы
Суть нарисовать просто линию
Менял Color но
меняя размер Color лиш определяш различную штриховку но цвет как то странно меняеться
Вчём ошибка
Причём если поставитьColor в 255 то никакой штриховки а линия жёлтая:eek:
Код:
Program Mih;
 uses Graph,Crt;
    var qq,Color,Gd,Gm: Integer;
 begin
   Gd := MCGA;
   InitGraph(Gd, Gm, '');
   if GraphResult <> grOk then
   Halt(1);
While qq<55 DO
   BEGIN
   Color:=55;
   qq:=qq+1;
   mem[$A000:900+qq]:=Color;
   END;
   readln;
CloseGraph;
end.
8.8K
06 сентября 2007 года
iv0_
59 / / 19.01.2007
А лучше раскажи как менять цвет c Detect
так как если заменить здесь Detect на другой(тот) формат то закраска экрана произойдёт неполностью
а я не зебру рисую.
Код:
Program Mih;
uses Graph,Crt;
var qq,Color,Gd,Gm: Integer;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
if GraphResult <> grOk then
Halt(1);
While qq<2255 DO
BEGIN
Color:=255;
qq:=qq+1;
mem[$A000:900+qq]:=Color;
END;
readln;
CloseGraph;
end.


[color=red]Для оформления кода используй специальные теги. Модератор.[/color]
551
06 сентября 2007 года
Pavia
357 / / 22.04.2004
Увы, там хитрая система и так не получиться.

Доступ к видео памяти используется, совместно с установкой видео режима, через биос.

К примеру
Код:
{Инициализация видео режима}
asm
mov ax,13h
int 10h
end;
{Вывод графики}

{Возврат к стандартному тестовому режиму}
asm
mov ax,03h
int 10h
end;
622
07 сентября 2007 года
nilbog
507 / / 19.12.2006
просто установить нужный видеорежим
а дальше уже писать в видеопамять
8.8K
07 сентября 2007 года
iv0_
59 / / 19.01.2007
Я на Asme работал понимаю что там написано.
Но совместном его использованием с другими языками не пробовал (оптимезацией не увлекался).:o
Пожалуста напишите полный код рисования таким методом линии.
Очень прошу если не сложно.:(
622
07 сентября 2007 года
nilbog
507 / / 19.12.2006
не проще воспользоваться возможностями модуля graph а именно процедурой line
в хелпе турбо паскаля все написано
8.8K
07 сентября 2007 года
iv0_
59 / / 19.01.2007
Тоесть вот так делая вставки из асемблера
Там чёнибудь надо сообщять паскалю мол Щяс будет использоваться Assembler там какие нибудь деретивы или он в него встроен.
И как обычные операторы Pascal вот это можно использовать что вы мне посоветовали немного выше
Или что там надо зделать чтоб в Pascal замостить это:confused:
Непробовал неразу если задаю тупые вопросы извините
8.8K
07 сентября 2007 года
iv0_
59 / / 19.01.2007
Линия лиш для примера чтоб понять как Asm с Pascalem
работает не разу не совмещял
А потом то что хочу потребует скорости и моих мозгов.:D
622
07 сентября 2007 года
nilbog
507 / / 19.12.2006
асм с паскалем вообще работает очень просто - нужные команды заключите в блок asm end; они без изменений попадут в итоговую программу
кстати вы не особо ускорите программу злоупотребляя такими вставками ))
рисовать графики в видео режиме можно и одними средствами паскаля - будет проще и не хуже (ну это правда какая перед вами задача стоит)
у меня нет под рукой паскаля но я точно помню что нужные процедуры для элементарных действий ( как там перейти в видео режим нарисовать точку прямую) есть в индегрированом хелпе турбо паскаля )))
почитайте там
551
07 сентября 2007 года
Pavia
357 / / 22.04.2004
Использовать модуль grpah проще всего. В нем уже многое реализованно.
Но совместо, использовать с вот таким вот кодом установки видео режима не удастся. Ровна как и обращение к видео памяти установив режим из паскаля.

Ассемблер в паскале использовать просто, деректива asm
 
Код:
begin
{код на паскале паска}
asm
{код на ассемблере}
end;
{код на паскале паска}
end


Graph работает быстро. Хотя у меня код работает раза в 4-5 быстрее.
Асм у меня использовался только для двух функции, которые приведены выше. Остальное все на паскале.
8.8K
08 сентября 2007 года
iv0_
59 / / 19.01.2007
Спасибо что помогли
Теперь оталось дело за малым создать:D

ПОКА:cool:
_________________
Разум сила
32K
04 октября 2007 года
NOEX
6 / / 21.09.2007
Вот пример программы на паскале, которая выводит четыре разноцветных линии.


Код:
uses crt;

var n:word;
begin;

 asm
  mov ah,00
  mov al,13h
  int 10h
 end;
for n:=1 to 100 do
 begin;
  Mem[$A000:n]:=02;
  Mem[$A000:n+320]:=03;
  Mem[$A000:n+640]:=04;
  Mem[$A000:n+960]:=05;
 end;
 readkey;

 asm
  mov ah,00
  mov al,02
  int 10h
 end;

 readkey;


end.


Процедуру рисования линий лучше сделать использовав алгоритм Брозенхама.

[color=red]Для оформления кода используй теги. Модератор. [/color]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог