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" :)
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ę.
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ę?
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
@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.
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
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
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;
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.
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.
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!