atarionline.pl Tablica w (Mad)Pascalu - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorwojtas76
    • CommentTime12 Oct 2020
     
    Pytanie w zasadzie z podstaw.. Umieszczanie danych w tablicy(dokładnie 2wymiarowej) typu string. np. 'aaa','a','1'. 'aaa' - ok, przy 'a' życzy sobie char itp. Chciałbym żeby wszystko traktował jako ciąg znaków(nawet jeśli jest długości 1 znaku lub liczby czy cyfry). Wcześniej w basicu miałem wpisane te dane w "data", ale tablicy byłoby "ładniej". Można prosić o pomoc w rozwiązaniu tego "poważnego problemu" :)
    • 2: CommentAuthorMq
    • CommentTime12 Oct 2020 zmieniony
     
    Niedawno miałem ten sam kłopot, ale okazało się, że to była wina wersji Mad Pascala - do którejś tam wersji faktycznie było tak, że string musiał mieć co najmniej dwa znaki, ale w obecnej wersji już może mieć jeden znak, więc problem znika.

    Edit: obecna wersja Mad Pascala to 1.6.3 z tego co widzę.
    • 3: CommentAuthorwojtas76
    • CommentTime12 Oct 2020 zmieniony
     
    ha... Mam v164 z githuba chyba..a 163 jest na ->link<- wiem że nie tak dawno zmieniałem bo coś mi przykłady z atariage nie działały..

    Faktycznie z mads też linkuje się do githuba i jest 164
    • 4: CommentAuthortebe
    • CommentTime12 Oct 2020
     
    tak, to było poprawiane, ale dla tablicy jednowymiarowej (var nie const), dla dwu-wymiarowej rzeczywiście zgłasza błąd
    • 5: CommentAuthorwojtas76
    • CommentTime12 Oct 2020
     
    Zmieniałem na 164 bo coś z vbxe mi działało wcześniej, a to co robię chciałem żeby działało mi na hires vbxe i gr8.. chyba zajmę się testowaniem a nie pisaniem hihi.. Zmieniałem var/const.. Można liczyć na poprawkę?
    • 6: CommentAuthortebe
    • CommentTime12 Oct 2020 zmieniony
     
    poprawiona wersja MP 1.6.5 leży już na github-ie
    • 7: CommentAuthorwojtas76
    • CommentTime12 Oct 2020
     
    ukłony niskie.. kto by pomyślał.. kiedyś chciałem JIL lubić dzięki TB, Action!, QA.. Na A! za późno, assemblera uczę się od początku.. a teraz dzięki Pascalowi.. może madC.. kiedyś... pozdrawiam
    • 8: CommentAuthorastrofor
    • CommentTime13 Oct 2020
     
    @wojtas76: Wojtas fajnie by było jakbyś założył jakiegoś githuba albo gitlaba z Twoimi eksperymentami , osiągnięciami. To niepisana tradycja madpascalowców no i w ogóle dobrych programistów, szczególnie języków wyższego poziomu niż asembler, nowego otwartego kodu w mad pascalu i możliwości nauki nigdy dość. Pozdrawiam.
    • 9: CommentAuthorwojtas76
    • CommentTime13 Oct 2020
     
    Wrzuciłem dane do tablicy i wszystko działa jak należy (Podziękowania dla Tebe jeszcze raz). Tablica trochę spora bo 107x7. Co do githuba napewno się skuszę niebawem.. Ale odkurzam trochę swoich programów z dawnych czasów, a w zasadzie piszę je od nowa.. Dużo tych programów miała początek na atari a wersja finalna lądowała na PC. Zresztą pomimo że działały, to już widzę że można prościej, krócej i ładniej.. No cóż minęło "trochę" czasu.. Pozdrawiam
    • 10:
       
      CommentAuthorKaz
    • CommentTime14 Oct 2020
     
    Wojtas76 - to dawaj znać o postępach prac, a najlepiej to podsyłaj swoje programy, zrobimy o tym jakiś wpis :D
    • 11:
       
      CommentAuthorsun
    • CommentTime15 Oct 2020
     
    @Kaz: lekki offtop, ale zakutalizowałem środowisko do nowego mp i... kod się kompiluje i wykonuje, także jest "git" ;)
    • 12: CommentAuthorastrofor
    • CommentTime6 Dec 2020
     
    Postanowilem pobawic sie w mad pascalu w prosta gierke na razie w trybie czysto tekstowym. Niestety w madpascalu natrafilem na blad ktorego nie potrafie od dluzszego czasu naprawic, zeby go zreprodukowac, trzeba chwile zagrac.
    Przesuwamy blok literką d - w prawo, ile sie da (sterowanie wasd). Wszystko łądnie do momentu gdy x=10, wtedy przesuwany element znika. Zrobilem spory debugging i dziwne zachowanie znalezc w liniach :
    286 customgotoxy(1, 19);write('xg');write(yg);write('yg');write(yg);write('map');write(map[xg][yg]);

    map[xg][yg]=3
    wiec warunek w nastepnaj lini powinien przejsc:
    if (map[xg][yg]<>1) and (map[xg][yg]<>0) then
    i napisac :
    289 write('getblockok ');
    a nie :
    292 write('noblocktoget ');

    cos jest zdecydowanie nie tak.
    Odpalajac ten sam program pod pctem np : ->link<-

    wszystko dziala poprawnie.
    Zalaczam xexa oraz zrodlo w pascalu
    • 13: CommentAuthorastrofor
    • CommentTime6 Dec 2020 zmieniony
     
    function get_block(xg, yg: shortint): shortint;
    begin
    customgotoxy(1, 19);write(' ');
    customgotoxy(1, 19);write('xg');write(yg);write('yg');write(yg);write('map');write(map[xg][yg]);
    if (map[xg][yg]<>1) and (map[xg][yg]<>0) then
    BEGIN
    write('getblockok ');
    get_block := map[xg][yg]
    END else BEGIN
    write('noblocktoget ');
    get_block := 0;
    END;


    end;
    • 14: CommentAuthorastrofor
    • CommentTime6 Dec 2020
     
    • 15:
       
      CommentAuthorbocianu
    • CommentTime6 Dec 2020 zmieniony
     
    Takie szybkie pytanie na szybko, bez czytania reszty kodu:
    masz świadomość tego, ze w twoich tablicach map i cmap pierwsza współrzędna to Y a nie X i sobie to odpowiednio odwracasz?

    ;)

    pytam, bo sam ze dwa razy się już na to nadziałem i pogubiłem przez to.
    • 16: CommentAuthorastrofor
    • CommentTime6 Dec 2020 zmieniony
     
    no tak ale jak po kolei mam:
    ;write(map[xg][yg]); ma wartosc 3
    potem :
    if (map[xg][yg]<>1) and (map[xg][yg]<>0) then write('getblockok ');
    else write('noblocktoget ');

    i pisze mi : noblocktoget , to cos jest nie tak

    pozatym wklejam dokladnie ten sam kod do : Free Pascal Compiler version 2.6.2-8 [2014/01/22] for x86_64
    i dziala dobrze.
    • 17: CommentAuthortebe
    • CommentTime6 Dec 2020
     
    u mnie to działa, bo używam najnowszej wersji MP

    ->link<-

    dlaczego uparłeś się na SHORTINT? BYTE zajmie tyle samo, a będzie prostszy w obliczeniach
    • 18: CommentAuthorastrofor
    • CommentTime6 Dec 2020 zmieniony
     
    Na poczatku mialem byte, ale jak wypisywalem wartosci byte na ekran (przy u mnie w metodzie printdebug) to wyskakiwaly krzaki, przy konwersji do int tez. SHORTINT pokazuje inty, ale w finalnej wersji pewnie zmienie znowu na byte.
    uzywalem:
    Mad Pascal Compiler version 1.6.4 [2020/08/26] for 6502
    rozumiem ze zrobic update do 1.6.5
    edit: działa elegancko wielkie dzięki!
    • 19: CommentAuthortebe
    • CommentTime6 Dec 2020
     
    tak, uaktualnij najlepiej już do 'test-1'