Temat: GFA Basic-wielokrotność liczby

Witam!
Piszę sobie program w GFA Basicu. Mam pewien problem z tym fragmentem kodu:

DO
  SHOWM
  IF MOUSEK=1 AND MOUSEX>70 AND MOUSEX<>70+20 AND MOUSEX<>70+40 
    FILL MOUSEX,MOUSEY
  ENDIF
LOOP

Chodzi o to, żeby komenda FILL nie mogła działać w co dwudziestej linii licząc od 70 piksela, ponieważ mam tam narysowane linie, których nie chciałbym zamalować. Zacząłem pisać:

MOUSEX<>70+20 AND MOUSEX<>70+40 AND MOUSEX<>70+60 itd...

Lecz po pewnym czasie skończy mi się miejsce w linii na te wszystkie komendy :) Próbowałem zapisać to w postaci ,,MOUSEX<>70+20*n", lecz nie wiem jak zdefiniować ,,n" jako dowolną liczbę całkowitą. Szukałem wszędzie informacji na ten temat, ale niestety nic nie znalazłem. Proszę zatem o pomoc. Domyślam się, że rozwiązanie jest łatwe, ale jestem bardzo początkującym programistą, więc wybaczcie mi takie lamerskie pytania :)

Pozdrawiam :)

Atari 1040 STFM (TOS 1.02, 1 MB RAM), Atari 520 STE (TOS 2.06, 4 MB RAM), Atari 800XE, magnetofon Atari XC12+Turbo2000, SIO2PC, Satandisk, monitor Atari SM 124 i SM 144 i wiele innych fajnych sprzętów :)

2

Odp: GFA Basic-wielokrotność liczby

marcin1040stfm napisał/a:

Zacząłem pisać:

MOUSEX<>70+20 AND MOUSEX<>70+40 AND MOUSEX<>70+60 itd...

Lecz po pewnym czasie skończy mi się miejsce w linii na te wszystkie komendy :) Próbowałem zapisać to w postaci ,,MOUSEX<>70+20*n", lecz nie wiem jak zdefiniować ,,n" jako dowolną liczbę całkowitą. Szukałem wszędzie informacji na ten temat, ale niestety nic nie znalazłem. Proszę zatem o pomoc. Domyślam się, że rozwiązanie jest łatwe, ale jestem bardzo początkującym programistą, więc wybaczcie mi takie lamerskie pytania :)

Nie znam GFA Basica, ale chyba jest tam pętla for? Może ie jest to najlepszy sposób, ale powinien zadziałać. Znalazłem:

FOR...NEXT
Syntax: FOR c=b TO e [STEP s]
instructions
NEXT c
Action: Creates a loop which is executed as many times as specified
at the beginning of the loop.

Daj step 20 i powinno być o.k.
=====\
edit: aha, wtedy możesz też wyrzucić te 20*n z kodu, wystarczy 70+n - powinno szybciej działać (mniej obliczeń).

Ostatnio edytowany przez Sikor (2013-07-24 21:47:40)

Sikor umarł...

Odp: GFA Basic-wielokrotność liczby

marcin1040stfm: linie kodu w GFA Basicu mogą być dłuższe niż ekran.

Z tym że masz błąd w sym kodzie, bo jeśli MOUSEX=1 to MOUSEX>70 nie będzie spełnione. Chyba powinieneś mieć tam OR a nie AND?

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

4

Odp: GFA Basic-wielokrotność liczby

Adamk: To nie jest Mousex=1 tylko Mousek=1 (czyli lewy przycisk wciśnięty AND Mousex>70) :) To że linie mogą być dłuższe niż ekran też wiem, tylko że zauważyłem, że w końcu to dodatkowe miejsce też się kończy :) Ogólnie sam kod jest dobry. Wszystko działa tak jak chcę, tylko niestety można przez przypadek zamalować te linie rozmieszczone co 20 pixeli.

Sikor: Tak, w GFA jest pętla for i w sumie to jeszcze nie próbowałem jej zastosować w tym przypadku. Sprawdzę jutro. Może się uda :)

Ostatnio edytowany przez marcin1040stfm (2013-07-24 22:10:28)

Atari 1040 STFM (TOS 1.02, 1 MB RAM), Atari 520 STE (TOS 2.06, 4 MB RAM), Atari 800XE, magnetofon Atari XC12+Turbo2000, SIO2PC, Satandisk, monitor Atari SM 124 i SM 144 i wiele innych fajnych sprzętów :)

Odp: GFA Basic-wielokrotność liczby

No tak, ślepnę na starość :(

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

6

Odp: GFA Basic-wielokrotność liczby

Nie wiem jak w GFA zaznacza się resztę z dzielenia, ale chodzi Ci z pewnością o:

IF MOUSEX>70 AND (MOUSEX-70 MOD 20 = 0) ... 

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

7

Odp: GFA Basic-wielokrotność liczby

dely: Pomysł dobry, tylko w moim przypadku trzeba dać ,,(Mousex-70) MOD 20<>0" a nie ,,=0" (bo w co dwudziestej linii fill ma nie działać). Mimo wszystko dzięki za naprowadzenie na właściwy trop :) Rozwiązanie mojego problemu wygląda zatem tak:

IF MOUSEK=1 AND MOUSEX>70 AND (MOUSEX-70) MOD 20<>0

Dzięki wszystkim za pomoc i pozdrawiam :)

Ostatnio edytowany przez marcin1040stfm (2013-07-25 21:14:47)

Atari 1040 STFM (TOS 1.02, 1 MB RAM), Atari 520 STE (TOS 2.06, 4 MB RAM), Atari 800XE, magnetofon Atari XC12+Turbo2000, SIO2PC, Satandisk, monitor Atari SM 124 i SM 144 i wiele innych fajnych sprzętów :)