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

@Benedykt Dziubałtowski, post #88

Wygląda na to że w książce jest ok. Jak widzisz jest A$ = A$ + ... czyli to o czym wspominałem, komendy Amala są też tak jak opisał Cholok. Skoro się dopiero uczysz to proponuję abyś zrobił trochę inaczej. Najpierw przepisz program tak jak jest (eliminując oczywiście polskie litery) i jak już będzie Ci działał w postaci oryginalnej to wtedy zacznij go modyfikować. Będziesz wtedy od razu widział co popsułeś jeżeli przestanie działać.
[#92] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #90

Po if jest ";", a nie ma być. Może weź ten przykład przepisz słowo w słowo, a potem modyfikuj. NIe pamiętam, ale chyba też trzeba zchannelować boba.
[#93] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #90

Blad bledem bleda pogania. Benek zaczynasz od d.... strony. To sa juz przyklady dla sredniozaawansowanych. AMALa to bym sobie na koniec zostawil, bo to dosc skomplikowany skrypt.
Sprobuj tak:

Change Mouse 2
Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,10,10,1
A$="Petla: I J1=1 J Gora J Petla Gora: L Y=Y+1 J Petla"
Channel 1 to Bob 0
Amal 1,A$
Amal On 1
Wait Key


Ostatnia aktualizacja: 19.11.2012 17:53:06 przez selur
[#94] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #88

Z jakiej książki kolega korzysta ?
[#95] Re: Początki programowania w Amosie

@TomcioPaluszek, post #94

Książkę mam Amos Profesjonal w Praktyce Bardzo fajna i praktyczna kniga. Dużo z niej się już nauczyłem ale mam problem z poskładaniem kilku elementów razem do kupy. Teraz borykam się z obsługą Joya po skosie. Mam taki oto kod.

Load Iff "system:amos_pro/tlo.iff",1
Load "system:amos_pro/gra.abk"
Bob 0,100,100,1
Channel 1 To Bob 0


A$=""
A$=A$+"Start:"
A$=A$+"If J1=1 Jump Gora;"
A$=A$+"If J1=2 Jump Dol;"
A$=A$+"If J1=4 Jump Lewo;"
A$=A$+"If J1=8 Jump Prawo;"
A$=A$+"If J1=16 Jump Fire;"
A$=A$+"If J1=5 Jump Skosl;"
A$=A$+" "
A$=A$+" Jump Start;"
A$=A$+"Gora: "
A$=A$+"Let Y=Y-1; Jump Start; "
A$=A$+"Dol: "
A$=A$+"Let Y=Y+1; Jump Start; "
A$=A$+"Lewo: "
A$=A$+"Let X=X-1; Jump Start; "
A$=A$+"Prawo:"
A$=A$+"Let X=X+1; Jump Start; "
A$=A$+"Fire:"
A$=A$+"Jump Start;"
A$=A$+"Skosl:"
A$=A$+"Let X=X+1;Let Y=Y+1; Jump Start;"

Amal 1,A$
Amal On 1


Kierunki lewo, góra itp działają wyśmienicie ale

A$=A$+"Skosl:"
A$=A$+"Let X=X+1;Let Y=Y+1; Jump Start;"


Ale to mi nie działa. Kompilator wyświetla informacje tym, że to już jest zdefiniowane.

Benedykt Dziubałtowski


Wait Key
[#96] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #95

Dla Amala etykiety Start i Skosl są nierozróżnialne i jest to traktowane jako S. Nie jestem pewny ale napisz SKOSL dużymi i obadaj co będzie. Nie wiem co będzie gdy będziesz chciał dodać SKOSP. Gdyby się wywalało to musisz powymyślać jakieś dwu literowe skróty nie pokrywającą się z rozkazami AMALA. Ja też z tym miałem problem aż do momentu wykucia na pamięć wszystkich rozkazów AMALA.
[#97] Re: Początki programowania w Amosie

@asman, post #96

Faktycznie miałeś racje. Teraz mi wszystko działa.


Przechodzę więc do kolejnego problemu. Zrobiłem sobie parę bobów. Chciałbym jednak zrobić z nich mały tłum. Zastanawiam się więc nad kilkoma zagadnieniami.

Ile taka A500 da radę ich obsłużyć. Ciekawi mnie zarówno ram jak i wydajność proca. Są to proste obiekty docelowo mające kilka klatek animacji.

Jak do tego problemu podejść w sensie organizacji. Tworzenie każdego osobnego boba i sterownie nim jest trochę kłopotliwe. Ja bym Chciał aby komputer losowo co parę sekund puszczał obiekt na ekran.


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

@Benedykt Dziubałtowski, post #97

Ile taka A500 da radę ich obsłużyć.

Wg. Twojej książki AMOS obsłuży 64, co do wydajności... strzelam że zależy to od tego jak duże będą i jak napiszesz program.

Jak do tego problemu podejść w sensie organizacji.

Jak sformułujesz ścieżkę po której będą dreptać boby? Jakaś tablica cy cuś?
To jest ciekawe, sam nie wiem jak bym to zrobił.

Ostatnia aktualizacja: 19.11.2012 21:53:39 przez kjb666
[#99] Re: Początki programowania w Amosie

@kjb666, post #98

Sam się nad tym zastanawiam. Ja bym chciał osiągnąć mniej więcej taki efekt:

http://www.youtube.com/watch?v=prxgOhZQodI&feature=related

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

@Benedykt Dziubałtowski, post #97

Na temat tych zagadnień to można spokojnie kilka rozdziałów książki napisać. A artykuł (bądź kilka to spokojnie) o ile są chętni do czytania takich rzeczy.

Ile taka A500 da radę ich obsłużyć.


To zależy jak się podejdzie do tematu i ile ramek na sekundę Chcesz osiągnąć. Przy odpowiednich sztuczkach może być ich bardzo dużo. Temat wymaga znajomości bebechów Amigi i o tym to można wiele napisać wraz z odpowiednimi przykładami w asm :) . Jeśli coś jest mało jasne to zadawaj pytania.
1) Rozmiar ma znaczenie, im mniejszy bob tym mniej czasu to zajmie blitterowi. W przypadku zmiany szerokości to mamy pewną dowolność. Blitter operuje na słowach ( 16 bitów ), i czy mamy boba szerokiego na 3 piksele czy na 16 to zajmie tyle samo czasu nałożenie go na ekran. Ale jeśli weźmiemy boba szerokiego na 17 pikseli to tak samo jakby bob miał 32 piksele szerokości.
2) Im mniej bitplanów ma bob ( co może być powiązane z bitplanami ekranu ale nie musi ) tym mniej czasu zajmie blitterowi. Czyli na ekranie 1 bitplanowym ( 2 kolory ) można postawić w jednej ramce o wiele więcej bobów (1 bitplanowych) niż na ekranie 16 kolorowym ( 4 bitplany), gdzieś 4 razy więcej.
3) Sposób przechowywania danych graficznych też ma znaczenie. Boba 4 bitplanowego można nałożyć na ekran w 4 blitach bądź w jednym. W drugim przypadku jest szybciej o ile mamy odpowiedni ekran ( interleaved - w książce Adam Doligalskiego to jest Raw-Blit ). Prawdę mówiąc to nie wiem w jaki sposób Amos trzyma ekran i grafikę i mam tylko nadzieje, że to jest raw blit.
4) Rozdzielczość też ma znaczenie, w przypadku LowRes powinno być szybciej.

Jest sporo sztuczek jak zwiększyć ilość bobów ale to temat rozleglejszy niż się wydaje. i nie wiem które z nim można zastosować w Amosie. Najprościej jest użyć sprajtów ( 8 sztuk 4 kolorowych, bądź 4 sztuki 16 kolorowe). Wtedy to jesteś ograniczony do 16 pikseli szerokości ale tanim kosztem masz dodatkowe ruchome obiekty. Jeśli chodzi o Amos to ja bym się skupił na mniejszych obiektach i zmniejszył ilość kolorów ekranu.
[#101] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #97

Z ilością bobów to jest tak:
z włączonym systemem przerwań uruchomisz tylko 16 bobów/spritów, ale gdy "wyjdziesz" z przerwań i zaczniesz sam synchronizować ruch bobów to bez problemu osiągniesz 64 obiekty.
Brzmi to starsznie trudno ale daje dobre efekty szybkościowe, nie ma migania bobów ( które można likwidować jedną z komend - ale nawala wtedy odtwarzanie dźwięku : ) oprócz tego przy animacji trzeba używać podwójnego buforowania a łatwiej to obsłużyć przy wyłączonych przerwaniach
[#102] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #99

W tej grze przeciwnicy mogą wychodzić w z góry zaplanowany sposób.
Jeśli losowo, to przykładowo najpierw losujesz ile bobów w jednej chwili ma wejść na ekran, a potem na jakich pozycjach w pionie.

W grze Tower Defense ilość przeciwników jest określona z góry, tak samo jak droga którą idą.
[#103] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #99

Bez wyjścia z przerwań tego nie osiągniesz w AMOSie. Wiem co piszę, kodowałem Heliosferę ;) .
Benek zapoznaj się jak najszybciej z komendami : synchro off, double buffer, synchro, wait vbl, screen swap, bob update, :) początkowo nawet bez animacji bobów, spritów ale z rysowaniem jakichkolwiek elementów w double buffer.

PS
Mogę się mylić co do niektórych komend amosa - bardzo dawno w nim nie pisałem - ale to są te "okolice" :)
[#104] Re: Początki programowania w Amosie

@kjb666, post #98

Jak sformułujesz ścieżkę po której będą dreptać boby? Jakaś tablica cy cuś?


przy prostoliniowej trajektori ruchu to tablice bylby tylko marnotrastwem pamieci.
[#105] Re: Początki programowania w Amosie

@gx, post #104

Znowu powstal watek typu "Jak upiec makowiec ?"
To proste:
bierzesz troche maku i troche owiec , wkladasz do piekarnika i pieczesz makowiec.
stopa
[#106] Re: Początki programowania w Amosie

@asman, post #100

To zależy jak się podejdzie do tematu i ile ramek na sekundę Chcesz osiągnąć. Przy odpowiednich sztuczkach może być ich bardzo dużo.


W przypadku A500 to przede wszystkim trzeba spojrzec na sama gre, a potem dobrac najodpowiedniejsze metody np: to co sie rzuca w oczy w tej grze to pionowy uklad - przeciwnicy poruszaja sie niezaleznie w osobnych rzedach... :). Nic nie bede konkretnie sugerowal, ale to otwiera wiele mozliwosci, ktore nalezy rozwazyc.
[#107] Re: Początki programowania w Amosie

@gx, post #104

Ale z tego co Benedykt pisa, chce zrobić grę typu Tower Defen*e. Czyli będą śmigać labiryntem :)
Za to w tej co podlinkował, idą w prostej lini, ewentualnie robią uniki.
[#108] Re: Początki programowania w Amosie

@kjb666, post #107

Szukam jakieś prostej koncepcji. Wydaje mi się, że ta z defendera 2 na androida będzie dobra. Stworki idą po Lini prostej dochodzą do pewnego punktu atakują. Nie trzeba robić map ani labiryntów. Jedyny problem to zrobić tak,że komputer z automatu wypuszcza co jakiś czas nowego stworka.
[#109] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #108

Jedyny problem to zrobić tak,że komputer z automatu wypuszcza co jakiś czas nowego stworka.


algorytm jest raczej trywialny
[#110] Re: Początki programowania w Amosie

@kjb666, post #107

Za to w tej co podlinkował, idą w prostej lini, ewentualnie robią uniki.


no wlasnie i mozna to wykorzystac, tylko trzeba miec dobrze opanowana umiejetnosc uzywania coppera....
[#111] Re: Początki programowania w Amosie

@gx, post #109

Nie mam niestety jeszcze programistycznego myślenia. Możesz mnie naprowadzić na trop jak się za to zabrać?


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

@Benedykt Dziubałtowski, post #111

Zabierasz sie za to tak jak widzisz :). Stworki maja inteligencje zoombi, a nawet gorzej, inteligencje kosiarki do trawy :D. Podstawa to generator liczb losowych, bo niemal wszystko losujesz, tylko z etapu na etap zmieniaja sie liczby okresalajac zakresy losowan i liczby przy licznych warunkach. Generalnie wygladac to tak, cos losujesz w jakims tam zakresie rnd(..).., sprawdzasz warunki if (...) albo wykonujesz jezeli warunki spelniony, albo omijasz i program przechodzi dalej....takich konstrukcji bedzie wiele wiele wiele wiele w sobie pozagniezdzanych... Najpierw zadbaj o dobry szybki generator liczb losowych, bo nie wiem jaki jest ten w AMOS, a to jest b.wazne... mozesz tez wykorzystac obszerniejsza tablice liczb losowych generowana tylko raz na poczatku kazdego etapu, jezeli samo wykonanie rnd() bedzie np: zbyt czasochlonne na A500/68000... :)
[#113] Re: Początki programowania w Amosie

@gx, post #112

Więc tak. Udało mi się juz parę rzeczy zrobić.

Mam działo, które ruszą się góra i dół. Jest algorytm, który mu nie pozwala wyjechać za ekran.

Mam tez skrypt, który wypuszcza na ekran przeciwników. Wróg losowo jest generowany w osi Y. Oś X jest zawsze taka sama. Bob wroga jest również losowy. Szybkość enemy także jest losowana. Działem można sterować joyem wpiętym w port dwa.

Uwaga na grafikę jest mocno testowa.

Problem polega na tym, że skrypt puszcza tylko jednego wroga a niechce kolejnych i ja nie wiem dlaczego?



http://kamerka.ppa.pl/Gra.zip

W archiwum jest plik wykonywalny, amos.library oraz kod źródłowy. Kod pewnie jest tragiczny no ale dopiero się uczę :)


Czy ktoś może m powiedzieć dlaczego skrypt choć teoretycznie powinien puszczać wroga za wrogiem to tego nie robi?

Benedykt Dziubałtowski



PS. Z programu wychodzi się wciskając dowolny klawisz na klawiaturze.


Ostatnia aktualizacja: 21.11.2012 10:32:29 przez Benedykt Dziubałtowski
[#114] Re: Początki programowania w Amosie

@Benedykt Dziubałtowski, post #113

Benek, pokaż kod w normalnym tekście.
[#115] Re: Początki programowania w Amosie

@RAL, post #114

Screen Open 0,311,256,4,Lowres
Global YY,BIB,NUMER,YW

Limit Mouse 129,45 To 438,290
Load Iff "progdir:tlo.iff",0
Load "progdir:gra2.abk"

Procedure POTWORY
'losujemy Y boba
LOSUJEMY_Y:
YY=Rnd(190)+10

'losujemy boba  wyglad boba
BIBOK:
BIB=Rnd(9)
If BIB<5 Then Goto BIBOK Else 
'numer boba
NUMER=1
NUMER=NUMER+1

'szybkosc boba 
SZYBKOSC:
YW=Rnd(500)
If YW<200 Then Goto SZYBKOSC Else 
`wstawiamy boba
POTWOREK:
Bob NUMER,300,YY,BIB
Channel NUMER To Bob NUMER
Amal NUMER,"Move-255,0,YW;"


End Proc
Procedure POTWOREK



PETLA:


POTWORY

` wyswietlanie i sterowanie dzialem
Bob 0,X,100,1

Channel 1 To Bob 0
A$=""
A$=A$+"Start:"
A$=A$+"If J1=1 Jump Gora;"
A$=A$+"If J1=2 Jump Dol;"
'A$=A$+"If J1=4 Jump Lewo;"
'A$=A$+"If J1=8 Jump Prawo;" 
A$=A$+"If J1=16 Jump Fire;"
'A$=A$+"If J1=5 Jump Ql ;" 
'A$=A$+"If J1=9 Jump Wl;"
'A$=A$+"If J1=6 Jump El ;" 
'A$=A$+"If J1=10 Jump Rl;" 
A$=A$+"If XM<50 Jump Tyszka;"
A$=A$+" "
A$=A$+" Jump Start;"
A$=A$+"Gora: "
A$=A$+"Let Y=Y-1;If Y=0 Jump Dol;Jump Start; "
A$=A$+"Dol: "
A$=A$+"Let Y=Y+1;If Y=240 Jump Gora; Jump Start; "
A$=A$+"Lewo: "
A$=A$+"Let X=X-1; Jump Start; "
A$=A$+"Prawo:"
A$=A$+"Let X=X+1; Jump Start; "
A$=A$+"Fire:"
A$=A$+"Jump Start;"
A$=A$+"Ql:"
A$=A$+"Let X=X-1;Let Y=Y-1; Jump Start;"
A$=A$+"Wl:"
A$=A$+"Let X=X+1;Let Y=Y-1; Jump Start;"
A$=A$+"El:"
A$=A$+"Let X=X-1;Let Y=Y+1; Jump Start;"
A$=A$+"Rl:"
A$=A$+"Let X=X+1;Let Y=Y+1; Jump Start;"
A$=A$+"Bk:"
A$=A$+"Let Y=Y+0; Jump Start;"
A$=A$+"Tyszka:"
A$=A$+"Bob 1,1,1,2; Channel 1 to Bob 1; Jump Start;"


Amal 1,A$
Amal On 


Wait Key 
End



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

@Benedykt Dziubałtowski, post #115

dodaj coś takiego na początku:

Randomize timer - zwiększa ilość losowanych liczb

Screen Open 0,311,256,4,Lowres - popraw 311 na 320
Global YY,BIB,NUMER,YW
Limit Mouse 129,45 To 438,290
Load Iff "progdir:tlo.iff",0
Load "progdir:gra2.abk"


Procedure POTWORY
'losujemy Y boba
LOSUJEMY_Y: - ta etykieta jest zbędna

YY=Rnd(190)+10
'losujemy boba
wyglad boba


zamiast takiego potwora:

BIBOK:
BIB=Rnd(9)
If BIB<5 Then Goto BIBOK Else
'numer boba
NUMER=1 - ustawiasz zmienną na 1
NUMER=NUMER+1 - później ta zmienna jest powiększana o 1

zróba tak:

bib= rnd(4) +5
Inc NUMER - zwiększa wartośc numer o 1

'szybkosc boba

SZYBKOSC:

tego potwora:
YW=Rnd(500)
If YW<200 Then Goto SZYBKOSC Else
zmień na :

YW = Rnd(300)+200

`wstawiamy boba
POTWOREK: - nie ma potrzeby dodawać kolejnej etykiety / o takiej samej nazwie jak procedura /

a tutaj dla odmiany jest dobrze :

Bob NUMER,300,YY,BIB
Channel NUMER To Bob NUMER
Amal NUMER,"Move-255,0,YW;"


End Proc


dalszą częśc poprawię wieczorem ;)
[#117] Re: Początki programowania w Amosie

@RAL, post #116

Ciąg dalszy przemysleń: ;)

Procedure POTWOREK
PETLA: - kolejny zbędny dodatek
POTWORY - wg mnie zbędne i wredne, później napiszę dlaczego ;)
` wyswietlanie i sterowanie dzialem
Bob 0,X,100,1
Channel 1 To Bob 0
A$=""
A$=A$+"Start:"
A$=A$+"If J1=1 Jump Gora;"
A$=A$+"If J1=2 Jump Dol;"
'A$=A$+"If J1=4 Jump Lewo;"
'A$=A$+"If J1=8 Jump Prawo;"
A$=A$+"If J1=16 Jump Fire;"
'A$=A$+"If J1=5 Jump Ql ;"
'A$=A$+"If J1=9 Jump Wl;"
'A$=A$+"If J1=6 Jump El ;"
'A$=A$+"If J1=10 Jump Rl;"
A$=A$+"If XM<50 Jump Tyszka;"
A$=A$+" "
A$=A$+" Jump Start;"
A$=A$+"Gora: "
A$=A$+"Let Y=Y-1;If Y=0 Jump Dol;Jump Start; "
A$=A$+"Dol: "
A$=A$+"Let Y=Y+1;If Y=240 Jump Gora; Jump Start; "
A$=A$+"Lewo: "
A$=A$+"Let X=X-1; Jump Start; "
A$=A$+"Prawo:"
A$=A$+"Let X=X+1; Jump Start; "
A$=A$+"Fire:"
A$=A$+"Jump Start;"
A$=A$+"Ql:"
A$=A$+"Let X=X-1;Let Y=Y-1; Jump Start;"
A$=A$+"Wl:"
A$=A$+"Let X=X+1;Let Y=Y-1; Jump Start;"
A$=A$+"El:"
A$=A$+"Let X=X-1;Let Y=Y+1; Jump Start;"
A$=A$+"Rl:"
A$=A$+"Let X=X+1;Let Y=Y+1; Jump Start;"
A$=A$+"Bk:"
A$=A$+"Let Y=Y+0; Jump Start;"
A$=A$+"Tyszka:"

wg mnie te komendy nie są AMALa tylko Amosa ( jesli się mylę to porawcie mnie ;) )

A$=A$+"Bob 1,1,1,2; Channel 1 to Bob 1; Jump Start;"
Amal 1,A$
Amal On

OK uruchomiłeś amala, sterujesz działem, wywołałeś procedury ( po jednym razie ), spoko - chcesz aby było więcej potworów napisz program tak ( napisze w kolejnym poście :) )



Wait Key
End
[#118] Re: Początki programowania w Amosie

@RAL, post #117

Napiszę jak szkielet twojego programu ja sobie wyobrażam :

randomize timer
screen open 0, 320,256,4,lowres
Double buffer - wskazany aby obiekty nie migały
Global YY,BIB,NUMER,YW
Limit Mouse 129,45 To 438,290
Load Iff "progdir:tlo.iff",0
Load "progdir:gra2.abk"

inicjalizacja programu amala, działo sterowanie

Numer = 2 - bo kanał 1 jest zajęty dla działa

POTWOREK
POTWORY


pętla główna

Do
if inkeys<>"" - naciśnięcie dowolnego klawisza
exit - powoduje wyjście z pętli programu
end if
If bob NUMER osiąga pozyję Y poniżej zera - nie pamiętam jaka to instrukcja, wybacz
POTWORY - to wywołujesz ponownie procedurę potwory, ona zmienia obraz boba, szybkość, położenie
End if
Loop
End

Procedure POTWORY

YY=Rnd(190)+10 - losowanie pozycji Y

bib= rnd(4) +5 - losowanie numeru obrazka

YW = Rnd(300)+200 - losowanie szybkości

Bob NUMER,300,YY,BIB
Channel NUMER To Bob NUMER
Amal NUMER,"Move-255,0,YW;"

End Proc

Procedure POTWOREK
Tu jest twoja procedura z moimi porawkami

End Proc

Na dwóch kanałach masz trzon swojej gry - wiem, że jest trochę ułomny ale nie pisałem w AMOSie od kilkunastu lat :)
[#119] Re: Początki programowania w Amosie

@RAL, post #118

Kod rośnie a moja "genialna i ponadczasowa" produkcja zabiera nabierać kształtów xD.

Program w tej chwili umożliwia sterowanie działem. Są nawet grafiki gdzie działo patrzy po skosie. Także gdy działo jest na górze i kursor też na górze to działko patrzy prosto a nie po skosie. Można też strzelać.

Problem mam dwa. Boby mrugają. Nie pomaga ani duble screen ani wait vbl. Nie wiem gdzie robię błąd.

Nie wiem jak sprawić aby pocisk leciał w stronę kursora. Po prostej Lini mi leci bez problemu. Ale jak to zrobić aby leciał w stronę aktualnego położenia osi Y myszy?

Kod wygląda tak:


Randomize Timer
Screen Open 0,311,256,4,Lowres
Double Buffer 
Synchro Off 

Global YY,BIB,NUMER,YW,QQ,Y,STRZAL,X,A
Dim NUMER(20),YY(20),BIB(20),STRZAL(16),X(16),A(16)

NUMER=1
Limit Mouse 129,45 To 438,290
Load Iff "progdir:tlo.iff",0
Load "progdir:gra2.abk"
Bob 0,X,100,1

Procedure POTWORY
'losujemy Y
LOSUJEMY_Y:
YY=Rnd(190)+10

'losujemy boba 
BIBOK:
BIB=Rnd(4)+5
'numer boba
NUMER=NUMER+1

'szybkosc boba 
SZYBKOSC:
YW=Rnd(20)+235


POTWOREK:
Bob NUMER,300,YY,BIB

Channel NUMER To Bob NUMER
Amal NUMER,"Move-255,0,YW; Pause;"
Amal On 

Wait 50
End Proc
Procedure DZIALO
Channel 0 To Bob 0
A$=""
A$=A$+"Start:"
A$=A$+"If J1=1 Jump Gora;"
A$=A$+"If J1=2 Jump Dol;"
'A$=A$+"If J1=4 Jump Lewo;"
'A$=A$+"If J1=8 Jump Prawo;" 
A$=A$+"If J1=16 Jump Fire;"
'A$=A$+"If J1=5 Jump Ql ;" 
'A$=A$+"If J1=9 Jump Wl;"
'A$=A$+"If J1=6 Jump El ;" 
'A$=A$+"If J1=10 Jump Rl;" 

A$=A$+" "
A$=A$+" Jump Start;"
A$=A$+"Gora: "
A$=A$+"Let Y=Y-1;Pause;If Y=110 Jump Dol;Jump Start; "
A$=A$+"Dol: "
A$=A$+"Let Y=Y+1; Pause; If Y=240 Jump Gora; Jump Start; "
A$=A$+"Lewo: "
A$=A$+"Let X=X-1; Jump Start; "
A$=A$+"Prawo:"
A$=A$+"Let X=X+1; Jump Start; "
A$=A$+"Fire:"
A$=A$+"Jump Start;"
A$=A$+"Ql:"
A$=A$+"Let X=X-1;Let Y=Y-1; Jump Start;"
A$=A$+"Wl:"
A$=A$+"Let X=X+1;Let Y=Y-1; Jump Start;"
A$=A$+"El:"
A$=A$+"Let X=X-1;Let Y=Y+1; Jump Start;"
A$=A$+"Rl:"
A$=A$+"Let X=X+1;Let Y=Y+1; Jump Start;"
A$=A$+"Bk:"
A$=A$+"Let Y=Y+0; Jump Start;"

Amal 0,A$
Amal On 

MYSZY=Y Screen(Y Mouse)
Print At(0,0),"y mouse ";Y Mouse
Print At(1,1),"y screen ";MYSZY
'Print At(0,2),"ydzialo ";YDZIALO
'Print At(0,3),"0" 
'Print At(0,3),"odjac ";ODJAC
YDZIALO=Y Bob(0)
SUMA=YDZIALO+QQ
ODJAC=YDZIALO-MYSZY

If MYSZY<70 and YDZIALO>90 Then Bob 0,X,YDZIALO,3
If MYSZY>120 and YDZIALO<120 Then Bob 0,X,YDZIALO,2
If MYSZY>71 and MYSZY<140 Then Bob 0,X,YDZIALO,1
If YDZIALO<70 and MYSZY<70 Then Bob 0,X,YDZIALO,1
If YDZIALO>110 and MYSZY>110 Then Bob 0,X,YDZIALO,1
If YDZIALO>150 and MYSZY<180 Then Bob 0,X,YDZIALO,3
If YDZIALO<100 and MYSZY>100 Then Bob 0,X,YDZIALO,2

End Proc
Procedure FAJER
STRZAL=STRZAL+1
WW=X Bob(0)
WY=Y Bob(0)
Shoot 
Bob STRZAL,WW,WY,4
'AA=YS 
Channel STRZAL To Bob STRZAL
Q=10

Amal STRZAL,"Move 280,0,40 ;Pause;"
'Amal STRZAL,"Start: Let X=X+2; Let Y=Y+A; Pause;Jump Start;"
Amal On 

If STRZAL>14 Then STRZAL=STRZAL-14
End Proc



'Petla gîówna

Do 
'For STWOREK=1 To 9

DZIALO

If Mouse Click=1 Then FAJER
'If Mouse Click=2 Then   
'POTWORY 


Synchro 
Wait Vbl 
'Next  
Loop 
Wait Vbl 
End




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

@Benedykt Dziubałtowski, post #119

Nie wiem jak sprawić aby pocisk leciał w stronę kursora. Po prostej Lini mi leci bez problemu. Ale jak to zrobić aby leciał w stronę aktualnego położenia osi Y myszy?


O ile dobrze zrozumialem Twoj zamiar to najlatwiej zrobisz to poslugujac sie tym algorytmem tzn. modyfikujac go odpowiednio...:

http://pl.wikipedia.org/wiki/Algorytm_Bresenhama

Ostatnia aktualizacja: 26.11.2012 01:28:39 przez gx
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