kategoria: AMOS
[#31] Re: Gra w Amosie

@Kamikadze, post #21

ja tez moge w to wejsc.
[#32] Re: Gra w Amosie

@pong777, post #26

Może remake Tanks z NESa?
[#33] Re: Gra w Amosie

@sanjyuubi, post #32

Ktoś zaczął robić... i chyba umarło. Ale "remake" Tanksów na 4 osoby to było by coś!

Gdyby komuś pomogło:
[#34] Re: Gra w Amosie

@Koyot1222, post #33

Kiedyś, dawno, też grzebałem coś w grafice stylizując się na Advance wars.

[#35] Re: Gra w Amosie

@Koyot1222, post #34

Można by zrobić gierkę w stylu D&D.
Amiga z fastem i hdd powinna dać sobie radę z tym.
Nie jestem pewien czy ten amos sobie poradzi z takim wyzwaniem.
Gdyby było nas wystarczająco liczebna i zdeterminowana grupa.
[#36] Re: Gra w Amosie

@sordan, post #15

Brawo Sordan. Jak widać wykorzystanie instrukcji AMAL-a daje całkiem niezłe efekty. AMOS to nie asembler czy C++ ale do prostych gierek nadaje się całkiem dobrze. Postaraj się dokończyć i skompilować a następnie sprawdzić na A500 lub A600 z 1MB ramu. Kojarzę, że w przykładach AMOS-a dodanych do książki jako banki była postać jadąca a rowerze. Wyglądało to całkiem przyzwoicie.
[#37] Re: Gra w Amosie

@Kamikadze, post #35

Przede wszystkim, to trzeba sie na cos zdecydowac i zrobic jakis wstepny zarys.
Jak kazdy bedzie przeskakiwal z pomyslu na pomysl to, tamto, siamto nic z tego nie bedzie.
Po pierwsze dobry plan a reszta to juz na drugim miejscu. No i nie zaczynac projektu od "menu glownego"
[#38] Re: Gra w Amosie

@selur, post #37

A może coś a'la Worms. Dwa czołgi strzelające do siebie. Ustawiamy kąt strzału, moc strzału, czyli prędkość początkową i bum. Pocisk leci. Program liczy tor, zasięg, itp. Można wprowadzić zmienne warunki atmosferyczne wpływające na tor lotu. Grę można bez problemu napisać dla 2 graczy.
[#39] Re: Gra w Amosie

@chicago, post #38

"A może coś a'la..."
drunk
[#40] Re: Gra w Amosie

@chicago, post #38

Jest już coś takiego i nazywa się Scorched Tanks.
[#41] Re: Gra w Amosie

@sanjyuubi, post #40

To może być i Scorched Tanks 2szeroki uśmiech
[#42] Re: Gra w Amosie

@Kamikadze, post #35

D&D to bardzo dobry pomysł. Przy okazji można wykreować jakiś ciekawy, oryginalny świat gry.
[#43] Re: Gra w Amosie

@chicago, post #42

Otóż to.
To są gry gdzie grafika wystarczy 2D izo.
Najważniejsza jest fabuła.
Do takiego projektu mogą dołączyć ludzie którzy nie potrafią programować a mają zmysł artystyczny.
[#44] Re: Gra w Amosie

@Kamikadze, post #43

Maly update.
Moj zielony ludzik zaczal strzelac, narazie wali tylko potworami :) ale oczywiscie zostanie to zmienione pozniej. Strzaly beda ograniczone i bedzie ich malo.

Dodalem tez naliczanie punktow za zbierane artefakty no i mam znow problem. Gdy w czasie rzeczywistym aktualizuje sie liczba punktow na ekranie to wszystkie animowane boby na ekranie w Amalu zwalniaja. Po prostu animacja sie tnie. Widoczne na filmiku Filmik

Do aktualizacji punktacji przy kolizji bohatera z diamentem uzylem zwyczajnie zmiennej i kod wyglada tak:

If Bob Col(3,0 to 1) Then Bell : Bob Off 3: PUNKTY=PUNKTY+10 : Locate 2,3 : Print "Punkty:";PUNKTY


Dodam tez, ze uzywam Double Buffer. Probowalem juz wiele rzeczy, zawsze z miernym skutkiem. Czy to slabosc Amosa? (malo prawdopodobne), czy robie cos zle i istnieje na to jakas komenda, albo mozna to zrobic jakos inaczej? (duzo prawdopodobne). Czy selur jestes w stanie znow sypnac jakas zlota rada? Albo ktokolwiek inny? Z gory dzieki.


Ostatnia aktualizacja: 16.04.2015 01:33:09 przez sordan
[#45] Re: Gra w Amosie

@sordan, post #44

"Czy to slabosc Amosa?"

Absolutnie tak. Wynika to z faktu, ze tryb Double Buffer (podwojne buforowanie) w trybie automatycznym jest duzo duzo wolniejszy od zwyklego (bufor pojedynczy) ekranu.
Aby temu zaradzic stosuje sie metode kilku ekranow. Mozna otworzyc az 8 niezaleznych ekranow o roznych parametrach (inna rozdzielczosc, paleta ) ale moga byc one ustawiane tylko w pionie czyli jeden nad lub pod drugim, nie mozna ich ustawic jeden obok drugiego.

W tym przypadku Double Buffer powinien byc uzyty w ekranie akcji (tam gdzie sie poruszaja boby itd. ) tak jak masz a cala gorna czesc z punktami, zyciami , kluczami itd.. powinna byc osobnym ekranem.

czyli otwierasz swoj glowny ekran gry

screen open 0,320,200,32,lowres
flash off : curs off : cls 0
double buffer
autoback 2

....
a tu otwierasz mniejszy ekran pomocniczy dla punktow

screen open 1,320,48,32,lowres
flash off : curs off : cls 0
print at(x,y);"Poziom :";poz
print at(x,y);"Punkty :";pkt
print at(x,y);"Zycia :";zyc

...

teraz aktywujesz swoj ekran glowny 0 (tzn. ze operacje graficzne beda dotyczyc ekranu 0)

Screen 0
...
tutaj znajduje sie glowna petla gry
Petla_glowna:

a instrukcja dotyczaca
If Bob Col(3,0 to 1) Then Bell : Bob Off 3: PUNKTY=PUNKTY+10 : Locate 2,3 : Gosub Wyswietl_Punkty
...
..
Goto Petla_glowna


Wyswietl_Punkty:
screen 1 : rem aktywacja ekranu pomocniczego 1
print at(x,y);"Punkty :";pkt
wait vbl
screen 0 : rem aktywacja ekranu glownego gry 0
return : rem powrot do glownego programu
[#46] Re: Gra w Amosie

@selur, post #45

widze, ze masz w kodzie takie linie jak:
If Fire(1) Then MAGIA=MAGIA-1 : Locate 16,3 : Print "MAGIA:";Magia : ....

wiec kazda taka instrukcje musialbys zamienic tak aby nastapilo rysowanie liczb na ekranie nr 1 i po zakonczeniu rysowania aktywacja ekranu nr 0

If Fire(1) Then MAGIA=MAGIA-1 : Screen 1: Locate 16,3 : Print "MAGIA:";Magia :... Screen 0

lub tak

If Fire(1) Then MAGIA=MAGIA-1 : Gosub Wyswietl_Magie
..
...
..
Goto Petla..

Wyswietl_Magie:
Screen 1
Locate 16,3 :
Print "MAGIA:";Magia
...
Screen 0
return
[#47] Re: Gra w Amosie

@selur, post #45

Dziekuje bardzo za szybka i cenna odpowiedz. Z twoja wiedza na temat Amosa moglbys klepac ze 2 gry na tydzien jakbys tylko mial ochote i czas.

Musze przyznac, ze zanim napisalem tego posta to probowalem wielu sposobow i prawie mi sie udalo wpasc na twoj pomysl. Tzn. otwarlem dwa osobne okna, ale jednak nic to nie dalo. Na otwarcie dwoch ekranow w zyciu bym sam nie wpadl. Na dniach powinienem znalezc troche czasu by zastosowac sie do twojej wskazowki i wdrozyc to w moj silnik.

Ostatnia aktualizacja: 16.04.2015 02:44:38 przez sordan
[#48] Re: Gra w Amosie

@sordan, post #47

"moglbys klepac ze 2 gry na tydzien"

lepiej "napisac" jedna na 2 lata niz "klepac" 20 w rok
[#49] Re: Gra w Amosie

@selur, post #48

lepiej napisac jedna niz zadnej.
[#50] Re: Gra w Amosie

@selur, post #46

Maly update: Otworzylem dwa okna jak polecal moj Amosowy guru selur - jedno na gre, druga na punktacje u gory i teraz wszystko smiga elegancko, grafika nie przycina :) Dodalem punktacje za diamenty oraz poprawilem kolizje pocisku z murami (teraz pociski juz nie przelatuja przez mury).

Mistrzu selur mam jednak kolejny problem. Chce zrobic ograniczona ilosc strzalow no i w glownej petli przy wypuszczaniu pociskow bez komendy wait przy jednym nacisnieciu zżera kilkanascie/kilkadziesiat pociskow, a jak przytrzymie fire + kierunek to pocisk stoi w miejsu, a liczba pociskow ubywa bardzo szybko. Chce po prostu zrobic tak by pocisk sobie lecial i robil swoje, a nastepny szlo by wypuscic dopiero po na przyklad sekundzie. Komenda Wait 50 czy Wait Vbl po wypuszczeniu boba z pociskiem nie spelnia tutaj roli bo wtedy stoi cala petla i nastepny pocisk faktycznie moge wypuscic dopiero za sekunde ale wtedy nie dzialaja na przyklad kolizje bo cala petla czeka 1 sekunde. Mistrzu selur jak to ogarnac? Jesli kiepsko wytlumaczylem to mozna zobaczyc na filmiku o co mi chodzi: Filmik

Kod wypuszczanych pociskow przez bohatera u mnie wyglada tak:
`Glowna petla:
Do
If Joy(1)=24 then POCISKPRAWO
...
Loop

Procedure POCISKPRAWO
B$="L: M 330,0,40 ; Jump L"
Channel 6 to Bob 19
Bob 19,X Bob(1),Y Bob(1),14
Amal 6,B$
Amal On 6
End Proc
...
[#51] Re: Gra w Amosie

@sordan, post #50

Nieźle OK Tylko jak by postać była trochę większa. I co tam robi słowo na "D"
[#52] Re: Gra w Amosie

@SuperBuster11, post #51

no i ta jedna kulka (monster) ze strachu uciekła poza ekran :P
[#53] Re: Gra w Amosie

@SuperBuster11, post #51

SuperBuster11: Kompletnie nie znam sie na grafice i z moimi zdolnosciami bylem w stanie narysowac tylko tego zielonego ludzika :) Co do jego wielkosci to w sumie takiego chcialem. Poziomy nie beda scrollowane w ogole wiec chcialem miec jak najwiecej miejsca na ekranie w rozdzielczosci 320/256. Slowo na `D` to najwazniejsza etykieta w kodzie i moje ulubione slowo jednoczesnie, dlatego w kodzie jest ich pelno :)

QUAD: nie ma powodow do obaw, ten monster u gory jest tylko do picu poki co, testowalem na nim czy potrafie wprawic w bardziej zaawansowany ruch boba :)
[#54] Re: Gra w Amosie

@sordan, post #53

Kompletnie nie znam sie na grafice i z moimi zdolnosciami bylem w stanie narysowac tylko tego zielonego ludzika :)


Spoko. Ja też się nie znam. Umiem tylko ocenić czy mi się podoba, czy nie.
[#55] Re: Gra w Amosie

@sordan, post #53

tak czy inaczej gratulacje, sam chciałbym mieć tyle samozaparcia żeby coś takiego stworzyć :) ale najzwyczajniej albo mi ktoś przeszkadza, albo nie mam czasu, albo mi się nie chce :( ale nie ukrywam że po pierwszym Twoim filmiku zainstalowałem AMOSa :D
[#56] Re: Gra w Amosie

@sordan, post #50

Jeszcze nie osiagnalem mistrzostwa we wladaniu AMOSem, brakuje mi jakies 20%.
Z tego co widze w twoim programie mozna zrobic to np. tak
Czas w AMOSie mierzony jest w jednostkach a Timer to taka specjalna funkcja, ktora podaje aktualny czas (w jednostkach) jaki minal od momentu uruchomienia komputera. Jedna sekunda jest rowna 50 jednostkom timera. 180.000 jednostek to godzina dzialania komputera. Czyli np. zeby wstrzymac dzialanie programu na 2 sekundy wpisujesz komende Wait 100

Definiujesz na poczatku programu zmienna globalna, ktora bedzie przechowywac "czas"


Global stary_czas
stary_czas=timer <-- pobranie aktualnego czasu do zmiennej
..
..
Do
If Joy(1)=24 then POCISKPRAWO
...
Loop


Procedure POCISKPRAWO

roznica_czasu=timer-stary_czas <--- obliczamy roznice aktualnego czasu ze starym

If roznica_czasu>50 <-- jesli roznica czasu przekroczy 50 jednostek wywolaj strzal
stary_czas=timer <--- zapamietujemy aktualny czas wywolania strzalu
B$="L: M 330,0,40 ; Jump L"
Channel 6 to Bob 19
Bob 19,X Bob(1),Y Bob(1),14
Amal 6,B$
Amal On 6
End if

End Proc
...
..

Teraz co sekunde bedzie wywolywany strzal, jesli czas bedzie mniejszy niz sekudna od poprzedniego wystrzalu to procedura nie wykona animacji boba. Tylko musisz pamietac, ze zliczanie "pociskow" trzeba umiescic rowniez w tym warunku IF Roznica_czasu.... END IF.


Ostatnia aktualizacja: 28.04.2015 23:34:22 przez selur
[#57] Re: Gra w Amosie

@selur, post #45

Czemu nie dać Autoback 0, Synchro off, Update 0 przy inicjalizacji programu i nie używać w głównej pętli gry zespołu instrukcji: Synchro: Update: screen swap: wait vbl ?
Można wtedy łatwiej zarządzać większą ilością obiektów.

PS mogłem pomylić kolejność instrukcji i ich składnię / nazwy - ale jak pamiętam wyjście z przerwań znakomicie upłynniło grę napisaną 20 lat temu ;)
[#58] Re: Gra w Amosie

@selur, post #56

Bardzo dziekuje selur kolejny raz za konkretna i szybka odpowiedz i za to, ze w ogole ci sie chce mi odpisywac. Wprowadzilem od razu to w kod i przepieknie to dziala. A do blokowania strzalow gdy ma sie ich 0 uzylem zwyczajnie wyjscia z procedury: If MAGIA=0 Then Pop Proc przed warunkiem ROZNICA_CZASU>50 Filmik
[#59] Re: Gra w Amosie

@sordan, post #58

Bardzo ciekawe. Trzymam kciuki za dalszy ciąg pracy!
[#60] Re: Gra w Amosie

@RAL, post #57

bardzo dobry pomysl, tylko to sa juz funkcje bardziej zlozone i wymagaja pewnej wiedzy w ich uzyciu.
Zatem moglbys napisac tutoriala z przykladami jak uzywac takich funkcji prawidlowo. Na pewno skorzysta z tego pare osob
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