kategoria: AMOS
[#61] Re: Początki programowania w Amosie

@rafgc, post #60

Mało się dzieje. No cóż. Nie ukrywam, ze nauka programowania Idze mnie z trudem. Sam się nie umiem popłać w tym co próbuje bazgrać. Puki co rozgryzam procedury w amosie bo widzę, jest jest dużo lepsze i bardziej funkcjonalne niż goto. ktoś się może ze mnie śmiać, że opanowanie działania procedur sprawia mi trudność. No ale cóż. Widać, ze prawdziwym programistą nigdy nie będę.


A amosa się uczę po to, żeby zrobić sobie grę ala tower defence na Amigę 500/600.


Benedykt Dziubałtowski

[#62] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #61

No coz. Jak AMOS przestanie wystarczac mozna swoje zle nawyki zawsze przeniesc na inny BASIC :)

A co do GOTO ;)

http://tajemnice.atari8.info/4_92/4_92_program.html

"Prawdziwi programiści nie boją się używać instrukcji GOTO. " ;)

Pomysl z napisaniem gry ala tower defence jest ambitny OK

[#63] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #61

O Amosie nie mam zielonego pojęcia, jedynie trochę o C bo się bawiłem Atmegą, ale po postach widzę, że jest to chyba coś ala basic z C64, tam też były gosub i goto.

Gosub to procedura, jej wynik będzie zależeć od danych jakie otrzyma do przetworzenia, procedury najlepiej się tworzy do wykonywania powtarzających się zadań, wtedy w pętli głównej programu jest relatywnie mniej kodu i jest czytelniejszy. Procedury możesz traktować jak własne polecenia amosa, może będzie Ci je wtedy trochę łatwiej zrozumieć. Powiedzmy, że napisałeś kawałek kodu rysującego linię poziomą, taka procedura będzie nosić nazwę linia_pozioma, twoje zadanie w kodzie głównym będzie polegać na ustawieniu zmiennych i jej wywołaniu, nie napisze ci tego w amosie, bo nie znam ale przedstawię jako algorytm, czyli:

// wyświetlenie trzech linii poziomych
.... jakiś kod ....
numer_linii = 0
początek = 0
koniec = 10
kolor = 0
gosub rysuj_linie

numer_linii = 1
poczatek = 8
koniec = 16
kolor = 2
gosub rysuj_linie

numer_linii = 100
poczatek = 100
koniec = 200
kolor = 9
gosub rysuj_linie:
.... dalszy kod


rysuj_linie:
kod odpowiedzialny za narysowanie linii zgodnie z parametrami w zmiennych
numer_linii, poczatek, koniec, kolor
return


tak by to wyglądało mniej więcej w basicu, jeśli w amosie można przekazywać zmienne jako parametry gosub, to by można to było zapisać inaczej.

Gra to jedna wielka pętla i tak też musisz sobie ją wyobrazić, najlepiej jak zaczniesz od wyświetlenia jakiejś grafiki i poruszania nia za pomocą klawiatury albo joysticka.

Algorytmicznie :) będzie top wyglądało mniej więcej tak:

//pętla główna
inicjalizacja:
początkowe wartości zmiennych
ble ble ble

program:
IF (minęła 1/50s) gosub czytaj_klawisze
gosub wyswietl_tlo
gosub wyswietl_obiekt
goto program

czytaj klawisze:
IF (wcisniety klawisz == A i x nie jest rowne 0) then  x = x - 1
IF (wcisniety klawisz == D i x nie jest rowne 320) then x = x + 1
IF (wcisniety klawisz == S i y nie jest rowne 0) then y = y - 1
IF (wcisniety klawisz == W i y nie jest rowne 256) then y = y + 1
return

wyswietl_obiekt:
wyswietla obiekt na współrzędnych ustawionych w zmiennych x i y
return

wyswietl_tlo:
wyswietlanie tla
return


Oczywiście to jest dość uproszczone, ale otrzymujesz dość czystą listę poleceń (bynajmniej tak mi się wydaje) i w razie jakichś problemów szybciej orientujesz się gdzie dłubać w kodzie, mam nadzieję, że Ci to jakoś rozświetliłem odrobinę, bo umiejętności przekazywania wiedzy to moja słaba strona niestety.

W razie czego to możesz wstawiać niezrozumiałe rzeczy w postaci kodu tutaj o ile nikomu to nie wadzi (pomijając "zachęcająco-wymagających-jakby-wszyscy-od-razu-mieli-wszystkie-rozumy-pozjadaczy").


EDIT: co ten znacznik CODE tak rozjeżdża nowe wiersze?



Ostatnia modyfikacja: 09.09.2011 23:32:22
[#64] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #61

Benedykt jedna rade ktora moge ci dac to pisz od razu gry i programy,jak sie chcesz uczyc to napisz sobie prosta gre bo tak najlepiej mozna sie nauczyc programowac,zrob sobie na kartce plan typu co chcesz osiagnac i do tego dostosowuj kod nie przejmuj sie tylko skoncentruj sie na rozwiazaniu problemu,jak chcesz mozemy napisac we 2 taka gierke tylko co to jest he he he no i znajdz jeszcze grafika i jakiegos dzwiekowca.
[#65] Re: Początki programowania w Amosie

@SzaryWilk, post #64

Ja powiem tak: też chciałbym być programistą. Też chciałbym pisać programy i gry. Ale NIE BĘDĘ! Zdaję sobie sprawę z tego, że nigdy nie będę umiał myśleć jak programista, choćby nie wiem co, bo mam umysł wybitnie humanistyczny. Próbowałem na C-64 (BASIC, asembler), próbowałem na Amidze (asembler). Jedyne, co z tego wyszło, to to, że od biedy potrafię się "włamać" do gry na C-64 i dorobić sobie nieśmiertelność. Tyle! Benedykcie, jeśli czujesz, że dasz sobie z tym radę - walcz. Jeśli nie, daj sobie spokój, bo to będzie strata czasu i nerwów. Life is brutal...
[#66] Re: Początki programowania w Amosie

@OSH, post #65

Ale z BASIC na C64 nie miałeś chyba problemów? Jeśli nie używa się POKE itd, to przecież goły BASIC jest prosty :)
[#67] Re: Początki programowania w Amosie

@kjb666, post #66

Tu nie o to chodzi. To jest tak, jak z grą w szachy: można znać zasady, znać dobrze teorię, ale nie umieć jej zastosować w praktyce. Co z tego, że wiesz, co która komenda robi, skoro nie masz pomysłu, jak je wykorzystać w programie? Tak było ze mną: poznałem dobrze wszystkie komendy BASIC-a, a mimo to nie bardzo umiałem przekształcić tę wiedzę w konkretny program. Programista musi być kreatywny, musi umieć myśleć niekonwencjonalnie. Ja raczej taki nie jestem, więc dałem sobie z tym spokój. Jednak za Benedykta trzymam kciuki.
[#68] Re: Początki programowania w Amosie

@kjb666, post #66

Fachowcy twierdzili że jest prosty jeśli nie używa się GOTO a tylko GOSUB (jeśli gosub jest bo w podstawowych implementacjach zdaje się nie było).


Pozdrawiam
[#69] Re: Początki programowania w Amosie

@RadoslawF, post #68

W podstawowym Atari Basic było GOSUB, PLOT, DRAWTO, SOUND, itd.

Fachowcy widać widzieli dużą różnicę między:

10 goto 50
50 goto 20

a

10 gosub 50
50 return

:)
[#70] Re: Początki programowania w Amosie

@kjb666, post #69

Czy ktoś się orientuje jak stworzyć boby za pomocą Delux Painta? Te z amos examples mi działają ale nie mam pojęci jak pod DeluxP skonstruować jakiś tam obiekt tak aby był rozpoznawalny przez amosa.


Benedykt Dziubałtowski
[#71] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #70

Boby to zwykłe obrazki z przeźroczystością. Aby były rozpoznawalne trzeba stworzyć tzw. bank. Służy do tego Object Editor. Ewentualnie można "z buta" poleceniem getbob.
[#72] Re: Początki programowania w Amosie

@cholok, post #71

Dlaczego DeluxPaint nie bardzo chce wczytywać boby ani jako iff ani jako brush.

Benedykt Dziubałtowski
[#73] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #72

Ponieważ banki nie są w formacie iff.
[#74] Re: Początki programowania w Amosie

@cholok, post #73

Ok. Jak mogę sam stworzyć taki bank z bobem lub bobami?


Benedykt Dziubałtowski
[#75] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #74

Patrz post 71.
[#76] Re: Początki programowania w Amosie

@cholok, post #75

Sorry, źle się wysłowiłem. Chodzi mi o to jak w edytorze obiektywów mogę załadować obrazek iff i z niego stworzyć boba. Są tam przykładowe boby oraz można je sobie malować. Mnie interesuje jak zwykłego iffa można tam zaimportować.


Benedykt Dziubałtowski
[#77] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #76

Poskakaj po ikonkach. Po pewnym czasie zobaczysz ikonkę z rzucającym się w oczy napisem iff.
[#78] Re: Początki programowania w Amosie

@cholok, post #77

Faktycznie, znalazłem. Dzięki wielkie.


Benedykt Dziubałtowski
[#79] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #78

Co robię źle?

Change Mouse 2
Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,0,10,1

A$=""
A$="RAZ:"
A$="IF J1=1; JUMP GORA;"
A$="GORA:"
A$="JUMP RAZ;"
A$="GORA:"
A$="LET Y=Y+3; JUMP RAZ;"
Amal 1,A$
Amal On 1

wait key


Próbuję zrozumieć przykład ze książki amos profesjonal w praktyce ze strony 269. Program ma za zadanie przesuwać boba w górę po daniu dzoja w górę. Niestety sypie się na komendzie amal 1,A$ i nie wiem dlaczego. Pisze mi sytax error in animate string.


Benedykt Dziubałtowski
[#80] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #79

Nie żebym pamiętał cokolwiek z Amosa , ale wygląda na to że masz dwa razy etykietę GORA zdefiniowaną. Skasuj tą pierwszą. A poza tym te stringi to powinny być łączone ze sobą bo w tej chwili to A$ będzie mieć na końcu wartość tylko z ostatniego przypisania. Ale czy to w ogóle ma jakiś sens w tym Amalu to już Ci nie powiem.
[#81] Re: Początki programowania w Amosie

@smith, post #80

Racja. Poprawiłem to ale niestety bez zmian.


A poza tym te stringi to powinny być łączone ze sobą bo w tej chwili to A$ będzie mieć na końcu wartość tylko z ostatniego przypisania. Ale czy to w ogóle ma jakiś sens w tym Amalu to już Ci nie powiem.

To tak ma być. Po wychylenia dzoja w górę bob powinien zostać przesunięty i tyle.

Benedykt Dziubałtowski
[#82] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #81

Algorytmy jest czytelny, stąd uwaga, którą etykietę usunąć, chodziło mi tylko o to, że kompletnie nie pamiętam Amala. Wklej jak to teraz wygląda.
[#83] Re: Początki programowania w Amosie

@smith, post #82

Change Mouse 2
Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,0,10,1
A$=""
A$="RAZ:"
A$="IF J1=1; JUMP GORA;"
A$="GORA:"
A$="JUMP RAZ;"
A$="RAZ:"
A$="LET Y=Y+3; JUMP RAZ;"
Amal 1,A$
Amal On 1
wait key



Benedykt Dziubałtowski
[#84] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #83

Robisz podstawowy błąd, który kolega wytknął Ci wcześniej.
Ma być A$=A$+"ciąg amala"
[#85] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #83

Może tak zrób?

Change Mouse 2
Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,0,10,1
A$=""
A$=A$+"RAZ:"
A$=A$+"IF J1=1; JUMP GORA;"
A$=A$+"GORA:"
A$=A$+"JUMP RAZ;"
A$=A$+"RAZ:"
A$=A$+"LET Y=Y+3; JUMP RAZ;"
Amal 1,A$
Amal On 1
wait key


Bład przy Amalu wyskakuje może dlatego ze nie potrafi znaleźć linii o nazwie: "RAZ"
[#86] Re: Początki programowania w Amosie

@simple, post #85

Cholok ma racje źle przepisałem skrypt. Niestety po Twoich poprawkach nadal nie działa i mam ten sam błąd.


Benedykt Dziubałtowski
[#87] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #86

Może najpierw poczytaj dokładniej o składni, bo zdaje się, że komendy amala składają się z pojedynczych dużych liter, a to oznacza, że piszemy Jump lub samo J (małe litery są ignorowane), a nie JUMP. Tak samo etykiety Raz (pomijając, że występuje 2 razy).
[#88] Re: Początki programowania w Amosie

@cholok, post #87

Zrobiłem tak jak radziłeś ale nadal nic.

Tak wygląda ten przykład z książki:




Benedykt Dziubałtowski

Ostatnia aktualizacja: 19.11.2012 12:50:38 przez Benedykt Dziubałtowski
[#89] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #88

Ja widzę dwa razy

A$=A$+"RAZ:"

to jest zamierzone ?
[#90] Re: Początki programowania w Amosie

@asman, post #89

Błąd to był. Tak to teraz wygląda:

Change Mouse 2
Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,11,10,1

A$=""
A$=A$+"Raz:"
A$=A$+"If J1=1; Jump Gora;"
A$=A$+"Jump Raz;"
A$=A$+" "
A$=A$+"Gora:"
A$=A$+"Let Y=Y+3; Jump Raz;"
Amal 1,A$
Amal On 1


Wait Key

Benedykt Dziubałtowski
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem