Temat: LOCATE w Basicu
Jak tego używać, poza informacją że mają być trzy parametry (poz. pozioma, pionowa i zmienna) nic nie mogę znaleźć, wpisanie LOCATE 2,2,A wywala po odpaleniu ERROR 131, jest jakaś literatura dokładniej to opisująca??
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
FujiNET firmware v1.3.0 Nowa wersja oprogramowania do interfejsu sieciowego FujiNET. Tym razem z obsługą TCP!
hatari 2.5.0 Od dwóch dni dostępna jest najnowsza (2.5.0) wersja Hatari.
Grawitacja 2024 Czas na kolejną edycję 8 bitowego GameJamu.
Tenebra na Atari ST/STE Wersja gry na duże atari.
Wyniki FujiCup 2023 Wyniki konkursu FujiCup na najlepszą grę dla 8-bit Atari w 2023 roku zostały ogłoszone!
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Jak tego używać, poza informacją że mają być trzy parametry (poz. pozioma, pionowa i zmienna) nic nie mogę znaleźć, wpisanie LOCATE 2,2,A wywala po odpaleniu ERROR 131, jest jakaś literatura dokładniej to opisująca??
LOCATE działa na ekranie otwartym przez GRAPHICS (kanał #6 CIO). BASIC świeżo po uruchomieniu nie ma otwartego trybu graficznego (!). Trzeba zrobić np. GRAPHICS 0 i będzie grało :D
przykład użycia locate w trybie graficznym:
10 GRAPHICS 7+16
20 FOR I=1 TO 50
21 COLOR 1+RND(0)*2
22 PLOT RND(0)*49,RND(0)*50
23 DRAWTO RND(0)*49,RND(0)*50
24 NEXT I
30 REM - LOCATE DEMO -
40 FOR Y=0 TO 49
41 FOR X=0 TO 49
42 LOCATE X,Y,C
43 COLOR C:PLOT 159-X,49-Y
44 NEXT X
45 NEXT Y
99 GOTO 99
aby działało w trybie TXT musisz otworzyć ekran ponownie, np. używając polecenia:
GRAPHICS 0
EDIT:
O, mono był szybszy i wszystko dokładnie wyjaśnił :D
Ostatnio edytowany przez seban (2014-07-27 19:21:58)
Trochę do dupy bo zamierzaniu programu jest takie żeby GRAPHICS w ogóle nie używać, widać będę musiał jakąś inną metodę wymyślić.
ale przecież GRAPHICS 0 otwiera tryb tekstowy, taki jak po starcie BASIC-a, gdy widzisz napis READY. Nie bardzo rozumiem w czym problem ;/
10 GRAPHICS 0:POKE 752,1
20 FOR I=1 TO 50
22 POSITION RND(0)*10,RND(0)*10
23 ? CHR$(20);
24 NEXT I
30 REM --- TEXT LOCATE DEMO ---
40 FOR Y=0 TO 10
41 FOR X=0 TO 10
42 LOCATE X,Y,A
44 COLOR A:PLOT 38-X,23-Y
45 NEXT X
46 NEXT Y
99 GOTO 99
Ostatnio edytowany przez seban (2014-07-27 19:32:18)
Nieużycie GRAPHICS wynika z tego iż ta instrukcja czyści ekran, plan jest taki iż te moje ów gówniane dzieło nie będzie wykorzystywać całego ekranu tylko jego część, tą część którą zamaże chciałbym gdzieś przechować aby po wyjściu z gówienka nabazgrać to co było tam wcześniej, ot taki można powiedzieć śmieć w okienku ;)
Użyj Graphics X+32, nie będziesz czyścić ekranu. X - numer trybu, który akurat używasz.
@Iron: ale BASIC sam siebie uruchamiając się czyści ekran, więc nie bardzo sobie to wyobrażam :)
Ostatnio edytowany przez seban (2014-07-27 22:07:28)
BASIC sam siebie uruchamiając się czyści ekran
Polemizowałbym :)
niezaprzeczalnie nakłamałem :) faktycznie przejście do BASIC-a np. z DOS, nie czyści ekranu :)
w takim razie może coś w tym stylu:
10 ? CHR$(125):LIST
15 EKR=PEEK(88)+256*PEEK(89)
20 FOR Y=0 TO 10:FOR X=0 TO 10
21 A=PEEK(EKR+Y*40+X)
22 PTR=EKR+40*(Y+10)+20+X
23 POKE PTR,A
24 NEXT X:NEXT Y
ps1) ale szybkie to nie będzie, ale to tylko przykład. Można się pozbyć mnożeń, etc. :)
ps2) mój błąd polegał na tym że w np. w DOS II+ włączenie BASIC-a (komenda =ON) ponownie otwiera ekran, bo RAMTOP obniża sie do $A000 i OS musi ponownie otworzyć ekran nieco niżej w pamięci, natomiast późniejsze wywołanie CAR z poziomu DOS (gdy BASIC jest już włączony) już nie czyście ekranu, ale w przypadku DOS II+ czy My-DOS przejście z BASIC-a do DOS już czyści ekran (ale to już zachowanie danego DOS-a)
Ostatnio edytowany przez seban (2014-07-27 23:01:33)
Dziekowac, bedzie chwilka to poeksperymentuje, dzisiaj mam dosyc, i tak wiele problemow w kodowaniu dzisiaj przeskoczylem, caly czas staram sie rozwijac tylko ciezko z tym gdy za sciana dzieciaki przewracaja wszystko do gory nogami :D
Problem nie polega na czyszczeniu ekranu (kanał #0), tylko na otwarciu kanału #6 do operacji graficznych, którego to kanału używa LOCATE. Jeśli chcesz zachować zawartość ekranu trzeba go jednak przepisać (wydaje mi się, że GRAPHICS 0+32 mimo, że powinno działać, to jednak nie działa :/).
Bardzo fajny pomysł na pokazanie zasady działania LOCATE przez Sebana. Szacun!
Nie GR.0 w Turbo Basic XL:
10 OP.#1,8,0,"COTAMTRZEBA"
11 BPUT #1,DPEEK(88),24*40:CL.#1
12 GR.0:OPEN #1,4,0,"COTAMTRZEBA"
13 BGET #1,DPEEK(88),24*40:CL.#1
Można usunąć kursor i przywrócić w to samo miejsce, jak trzeba.
Dzisiaj było troche chwili aby sie pobawic, nistety jestem za cienki do tego, pobawilem sie chwile kodem Sebana, nastepnie probowalem to wpiac w moj program, niestety albo nie potrafie rozdzielic czesci pobierajacej dane z ekranu z czescia wypluwajaca na ekran albo jak zauwazylem procedurka Sebana aby cos drukowac musi cos brac bezprosrednio z ekranu, jakos tak kminie czy jakas tablica by sie nie przydala, ogolnie to czuje ze cos logiczne myslenie ostatnio mi nie wychodzi :/
@Yansen Prościej instrukcją MOVE.
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.077 sekund, wykonano 9 zapytań ]