Instalacja Biblioteki Allegro w środowisku Turbo Pascal

Instalacja Biblioteki Allegro w środowisku Turbo Pascal
M4
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:29
0

Dobra. Mam bibliotekę allegro (Wersję 5.2 jakby co choć myślę że to nie ma większego znaczenia w kwestii konfiguracji środowiska (każda instaluje się raczej tak samo)) i mam zamiar dołączyć ją do IDE TP.7. Nigdy tego nie robiłem więc poszperałem na oficjalnej stronie wraz z dokumentacją na SourceForge. Nigdzie nie ma instrukcji instalacji biblioteki (które pliki odnieść do jak wyglądających ścieżek i w której zakładce (próbowałem wielu kombinacji)). Do projektu wkleiłem przykładowy kod źródłowy inicjujący tą bibliotekę oraz wskazałem ścieżki do niej z tym że nie jestem pewien jak wyglądać ma ścieżka i do którego pola konkretnie ma ona zostać przypisana. Zakładam że UNITS skoro w kodzie wywoływana jest za pomocą funkcji USES która wiadomo do czego służy. Mam tam (w kodzie) dwie biblioteki (allegro5 oraz allegro5.2font) więc te pliki wrzuciłem do folderu UNITS (W folderze z TP.7) a w zakładce UNITS podałem dokładne ścieżki zakończone pełnymi nazwami plików zakończone odpowiednimi skrótami formatów ów plików. Pomyślnie udawało mi się dołączyć bibliotekę za pomocą C++ CodeBlocks ale na TP.7 już nie jest tak kolorowo. Z samego TP.7 potrafię korzystać przykładowo konfigurować środowisko czy wywoływać tryby graficzne za pomocą wstawek assemblerowych ale przy próbie dołączenia Allegro poległem. Jeśli coś pomyliłem w powyższym tekście albo pominąłem, z góry przepraszam. Jestem zmęczony po całym dniu użerania się z tym. Poniżej zamieszczam ten przykładowy kod. Idę spać, to mi dobrze zrobi ;D

Kopiuj
PROGRAM HelloWorld;
(* First Allegro program. *)

USES
  allegro5, al5font;

VAR
  Timer: ALLEGRO_TIMERptr;
  Queue: ALLEGRO_EVENT_QUEUEptr;
  Event: ALLEGRO_EVENT;
  Display: ALLEGRO_DISPLAYptr;
  Font: ALLEGRO_FONTptr;

  Redraw, EndProgram: BOOLEAN;

BEGIN
  al_init;
  al_install_keyboard;

  Timer := al_create_timer (1 / 30);
  Queue := al_create_event_queue;
  Display := al_create_display (320, 200);
  Font := al_create_builtin_font;

  al_register_event_source (Queue, al_get_keyboard_event_source);
  al_register_event_source (Queue, al_get_display_event_source (Display));
  al_register_event_source (Queue, al_get_timer_event_source (Timer));

  Redraw := TRUE;
  EndProgram := FALSE;

  al_start_timer (Timer);
  REPEAT
    al_wait_for_event (Queue, @Event);

    IF Event.ftype = ALLEGRO_EVENT_TIMER THEN
      Redraw := TRUE
    ELSE IF (Event.ftype = ALLEGRO_EVENT_KEY_DOWN)
    OR (Event.ftype = ALLEGRO_EVENT_DISPLAY_CLOSE)
    THEN
      EndProgram := TRUE;

    IF Redraw AND al_is_event_queue_empty (Queue) THEN
    BEGIN
      al_clear_to_color (al_map_rgb (0, 0, 0));
      al_draw_text (Font, al_map_rgb (255, 255, 255), 0, 0, 0, 'Hello, World!');
      al_flip_display;

      Redraw := FALSE
    END
  UNTIL EndProgram;

  al_destroy_font (Font);
  al_destroy_display (Display);
  al_destroy_timer (Timer);
  al_destroy_event_queue (Queue)
END.
edytowany 1x, ostatnio: cerrato
Freja Draco
Freja Draco
A w Cobolu nie próbowałeś ;)
M4
Znam tylko Pascal'a, Asm'a i Java'ę :)
szatkus
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Postów:227
3

Czekaj, Ty próbujesz użyć w miarę nowej wersji biblioteki z kompilatorem sprzed 25 lat? Zdajesz sobie sprawę ile mogło zajść zmian w formacie DLL przez ten czas?

Edit: z tego, co widzę to chyba TP nigdy nawet nie miał możliwości budowania 32-bitowych binarek, więc to nie ma prawa działać.

Edit2: coś mi się kołatało, że Allegro kiedyś obsługiwało DOSa i faktycznie. Wersje do 4.2 są kompatybilne, ale możesz mieć problemy ze znalezieniem bindingów. Prościej porzucić tę archeologię i napisać to w czymś normalnym.


𐤃𐤐𐤀
edytowany 4x, ostatnio: szatkus
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:5 minut
  • Lokalizacja:Tuchów
  • Postów:12155
6
matej47 napisał(a):

Dobra. Mam bibliotekę allegro (Wersję 5.2 jakby co choć myślę że to nie ma większego znaczenia w kwestii konfiguracji środowiska (każda instaluje się raczej tak samo)) i mam zamiar dołączyć ją do IDE TP.7.

No to nie pozostaje nic innego jak życzyć Ci powodzenia. :D

Biblioteka* ta została stworzona w Lazarusie i głównie dla niego jest przeznaczona — pobierz go, zainstaluj i korzystaj. A o Turbo Pascalu najlepiej zapomnij, bo jest to IDE/kompilator biedniejszy niż dzieci w Bangladeszu.

* Tzn. nie sama biblioteka, a pascalowe nagłówki zwane Allegro.pas — libka napisana jest w C.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
M4
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:29
0

Kocham DOS'a tak samo jak Amigę czy Szaraka. Nie wyobrażam sobie nauki bez ogarnięcia absolutnych fundamentów. Czasami zdarzy mi się skorzystać z Win 3.11 lub ewentualnie Free Pascal'a (zawiera kompilator wstecznie kompatybilny z DOS'em) nie mniej wyłącznie w celu zachowania kompatybilności z aktualnościami. Nie lubię iść na skróty które pomijają praktycznie cały proces twórczy (To tak jakby przerabiać silnik jakimś niskopoziomowym językiem (o ile na to pozwalają owe przykładowe programy bo po co przerabiać ogół gdy można wypracować całość samodzielnie)). Mam ochotę pobawić się trochę nowinkami technicznymi niezależnych twórców i tyle, taki spontan. Generalnie to samodzielnie piszę ray-tracer'y, engine'y czy biblioteki ale żeby nie było, uczę się aktualnie OpenGL'a (Nie mylić z Vulcan'em) który sam powstał przy współpracy kilku konkurentów Microsoft'u jako alternatywa DirectX'a. Sprawdzę lazarus'a bo Allegro na FPC faktycznie może nie pójść chociaż naszemu rodakowi udało się uzyskać zamierzony przeze mnie rezultat na bardzo podobnej bibliotece przy użyciu Windows'a operującego na trybie rzeczywistym https://www.youtube.com/watch?v=hPmJB0mS-GA. Nie chrzańcie że ten tzw. powyżej Bangladesz nie ma sensu bo sam pan ARHON poszedł o krok dalej niż ja i wykonał dobrą robotę osiągając cel przy użyciu ówczesnej technologii gdzie ja posługiwałem się jedynie emulatorami (ze względów obecnej sytuacji finansowej) a mowa o https://www.youtube.com/watch?v=MYa4JdVMd7A, oczywiście bez urazy ;) . Więc...?

AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:3561
1
matej47 napisał(a):

Kocham DOS'a tak samo jak Amigę czy Szaraka.

A kochaj sobie co/jak chcesz. BTW było ostatnio kilka coming-outów

Ale nie łącz muzeum z nowoczesną technologią, bo się nie uda.


Bo C to najlepszy język, każdy uczeń ci to powie
M4
Wygrałeś. To był tylko spontan ale dzięx za dobrą radę. Nie będę sobie psuł tym głowy i wracam na stare śmieci.
M4
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:29
0

Kolega wybił mi ten głupi pomysł z głowy i proszę Moderatora o usunięcie tematu. Nikomu to się nie przyda.

M4
Temat pozostawiam dla potomnych jako ostrzeżenie.
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Poznań
  • Postów:8758
3

Nikomu to się nie przyda.

Wręcz przeciwnie, może się za jakiś czas trafi kolejny zawodnik, któremu się przyśni wyjęcie dziadkowi z trumny pudełka z dyskietkami od Turbo Pascala, a po przeczytaniu niniejszego wątku uzna, że to jednak bardzo kiepski pomysł. Uważam, że warto to zostawić dla przyszłych pokoleń, jako ostrzeżenie i informację, że pewnych rzeczy nie powinno się robić.

A @matej47 należy się wielka pochwała - że umiałeś przyjąć uwagi chłopaków, nie obraziłeś się, nie upierałeś że wiesz lepiej - tylko przemyślałeś co Ci napisali, zastanowiłeś się i podjąłeś (jedyną dostępną) sensowną decyzję.


edytowany 2x, ostatnio: cerrato
M4
I słusznie ;)
szatkus
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Postów:227
1

@matej47: jeśli tak to spoko. Tylko nie próbuj łączyć nowych bibliotek ze starym systemem. Może ewentualnie ten stary Allegro jak chcesz się pobawić.

Jeśli chodzi o OpenGL to jednak Vulkan wydaje się chyba lepszą opcją dla takich grzebaczy. Tylko trochę się trzeba napocić, żeby coś narysować, ale potem jakoś idzie. I nie powstał jako konkurencja dla DX, tylko jako otwarty następca Mantle od AMD. Potem przyszedł DX12, który też powstał przy współpracy z AMD, bo oni projektowali podzespoły Xboxa.


𐤃𐤐𐤀
edytowany 1x, ostatnio: szatkus
M4
Taa, nawet nie wiedziałem albo gdzieś mi umkło.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:5 minut
  • Lokalizacja:Tuchów
  • Postów:12155
2

@matej47: jeśli Twoim celem jest napisanie gry na jakieś stare i zapomniane platformy, to powinieneś skorzystać z oprogramowania, które w czasie świetności tych platform było wykorzystywane do tworzenia oprogramowania. Jeśli chodzi o DOS-a to Turbo Pascal się nada, Lazarus z FPC też (jest znacznie wygodniejszy niż TP7). Co do biblioteki, to stare Allegro by się nadało, ale nie wiem jak z dokumentacjami i przykładami.

A jeśli byś chciał tworzyć dla współczesnych systemów, to oprócz Allegro jest też świetny SDL.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
Zobacz pozostały 1 komentarz
flowCRANE
Ładny misz-masz.
M4
Na początku wątku masz tutorial polaka w serwisie YouTube odnośnie SDL. Swoją drogą taki materiał jest klarowniejszy od domysłów forumowiczy.
flowCRANE
Widziałem ten tutorial już dawno temu. Różnica polega na tym, że facet używa FP IDE, a nie TP7, a ta przykładowa gierka jest przeznaczona na Windowsy, a nie na DOS-a.
flowCRANE
Poza tym ten tutorial jest z gruntu zły — autor w 2014 roku siedzi na jakimś Win98 i marnuje czas używając konsolowego IDE, zamiast korzystać z Lazarusa i aktualnego OS-a. Tym samym pokazuje wszystkim, jak prymitywne są Pascalowe narzędzia i w jak beznadziejnych warunkach tworzy się software — co oczywiście nie jest prawdą. No ale społeczność Free Pascala to w większej części zacofane leśne dziady, oporne na postęp. Nie zmyślam, wystarczy poczytać wątki na forum Lazarusa i zobaczyć w jaki sposób piszą kod oraz w jakich warunkach go piszą (OS, IDE itp.).
M4
To się nazywa pasja. Zrobił dobrą robotę (tak się robiło kiedyś gdy nie znali przyszłości) i tak jak nowej technologii nie łączy się ze starą (od tego są portowania architektur) tak nie łączy się przeszłości z przyszłością (Złoty środek-Termin Filozoficzny). Denerwuje mnie jak ktoś mówi że stare nie ma sensu i lepiej się wziąć za nowe. Przez wojny na czas całego ubiegłego wieku zatrzymaliśmy się pod tym względem w czasie a dzisiaj mamy internet i łby nie domyślają się że Tesla ogarnął temat już w 00's XX.w, takie buty. Nie obrażajmy się na rzeczywistość bo sami ją tworzymy.
pstmax
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Reda
  • Postów:68
1

@furious programming: Podobna bajka jest związana z systemem operacyjnym linux :-)
Powiedz przeciętnemu klikaczowi, że używa odmiany linuxa na komórce, to zrobi oczy jak spodki :-)


Piotr Strzemkowski
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:5 minut
  • Lokalizacja:Tuchów
  • Postów:12155
0

@pstmax: nie wiem o jakiej bajce piszesz.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Zobacz pozostałe 2 komentarze
M4
W sensie Android (OS) to bajka, taki slang. Ja na przykład mówię takie buty :)
flowCRANE
Pierwsze słyszę.
M4
Teraz wiesz :) Nie każdy zna się na wszystkim.
flowCRANE
No ja to bym raczej proponował pisać tak, aby każdy czytelnik wiedział o co chodzi, a jakieś wymyślone na kolanie slangi nie są dla nikogo zrozumiałe — oprócz dla ich autora, rzecz jasna. No nieważne — poznałem nową bajkę i git.
M4
W sumie masz rację xD
M4
  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
  • Postów:29
0

To że czegoś się nie da znaczy tylko tyle że ktoś jeszcze tego nie wymyślił, to że cie boli znaczy że jeszcze funkcjonuje (nie obumarło) a to że nie rozumiesz znaczy że nie wiesz i nie staraj się wykorzystać bo i tak nie rozłożysz na czynniki pierwsze. Taksonomia nauczania bloom'a, hierarchia potrzeb maslova (...). Nie rób sobie krzywdy przez rzeczy na które nie masz wpływu, licz tylko na siebie jeśli umiesz liczyć. A w ogóle to:
https://www.youtube.com/watch?v=vkUwT9U1GzA
https://www.youtube.com/watch?v=N8elxpSu9pw
https://www.youtube.com/watch?v=M-U8XEUzFbM
Taki projekcik na potwierdzenie tezy: http://os4depot.net/?function=showfile&file=game/misc/amicraft.lha .
Gdyby tak nie było, nie byłoby pasjonatów -----> pomysłu ------> problematyki -----> kompatybilności wstecznej -----> emulatorów ;)
Wiedziałeś że każdy atom jest ze sobą połączony? Każdy!
everythink.jpg

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)