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 18:10
       
      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 19:10 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 20:10 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 21:10
       
      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 21:10
       
      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 22:10 zmieniony
       
      poprawiona wersja MP 1.6.5 leży już na github-ie
      • 7: CommentAuthorwojtas76
      • CommentTime12 Oct 2020 23:10
       
      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 12:10
       
      @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 20:10
       
      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 00:10
       
      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 13:10
       
      @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 00:12
       
      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 00:12 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 00:12
       
      • 15:
         
        CommentAuthorbocianu
      • CommentTime6 Dec 2020 01:12 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 01:12 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 10:12
       
      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 15:12 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 18:12
       
      tak, uaktualnij najlepiej już do 'test-1'