kategoria: AMOS
[#31] Re: programowanie amos

@QUAD, post #30

Pięknie!
I o to chodzi
To jest clue programowania

Najpierw programujesz logikę bez grafiki - jak zacznie wszystko banglać, to nakładasz grafikę :)
Jak robiłem Bombera to robiłem sobie tak samo - a potem Leon dorobił grafikę :)
[#32] Re: programowanie amos

@QUAD, post #30

W ramach małej optymalizacji mógłbyś wyciąć ostatni wiersz i pierwszą i ostatnią kolumnę, jeśli chcesz ograniczyć ruch klocka w macierzy wystarczy użyć zwykłych IFów, chyba że źle zrozumiałem to co widzę na filmiku, w każdym razie powodzenia w dalszych pracach :)
[#33] Re: programowanie amos

@gohanks, post #32

na razie kodu nie pokaże bo do optymalizacji jest bardzo dużo, domyślam się że wszystko co napisałem da się zrobić ze 20 razy prościej, na razie się tym nie przejmuję zbytnio, oczywiście wywalę niepotrzebne rzeczy, chciałem sobie to tylko obrazowo jakoś zrobić żeby mi było łatwiej, zbieram wiedzę gdzie popadnie i coraz więcej z tego wszystkiego kumam, czym więcej kumam tym więcej pytań się pojawia haha, i dzięki wielkie za wsparcie.
[#34] Re: programowanie amos

@WojT_GL, post #31

no i tak teraz będę robił, jak dopracuje poruszanie kulek itp to dorzucę grafikę, nad grafiką też muszę popracować, chciałem zrobić ładne kuleczki przeźroczyste ale mi nie wyszło na razie, więc są jakie są :P
[#35] Re: programowanie amos

@QUAD, post #33

Skad ja to znam :) Jak ja bym pokazal kod z mojej gry to niejeden by sie przezegnal :)
[#36] Re: programowanie amos

@sordan, post #35

Aj tam, ważne że działa i cieszy oczy :)
[#37] Re: programowanie amos

@QUAD, post #1

walczę z tablicami i mam problem
chce sobie ułatwić życie, kombinuję na różne sposoby i nie mogę sobie poradzić
załóżmy że ma tablicę
dim(10,10)
i teraz chcę zmienić żeby od (1,10) do (10,10) była w tablicy wartość 1
do tej pory wpisywałem (1,1)=1 …… (10,10)=1
ale dam sobie głowę uciachać że to można zrobić jakoś prościej
tylko jak ...
[#38] Re: programowanie amos

@QUAD, post #37

W pętli oczywiście :) zerknij w dokumentację/książkę i poczytaj o pętlach.

Nie wiem na ile to Amosowe, ale coś w ten deseń pewnie będzie:
For I=1 To 10
  For J=1 To 10
    TABLICA(I,J)=1
  Next J
Next I


Ostatnia aktualizacja: 28.05.2015 13:05:55 przez gohanks
[#39] Re: programowanie amos

@gohanks, post #38

Można to załatwić prościej i szybciej:

S=Varptr(TABLICA(0,0))
Fill S To S+(4*121),1

I voila!
[#40] Re: programowanie amos

@Ocelot, post #39

prosze bez kpin z nowicjuszy ok?
[#41] Re: programowanie amos

@selur, post #40

Rozwiązanie bardzo ładne :)

Dla wytłumaczenia kolega posłużył się wskaźnikiem do przejścia przez tablicę tak jakby była jednowymiarowa i wypełnił ją wartością 1.

Wskaźnik to coś w stylu zmiennej która przechowuje adres w pamięci w którym znajduje się jakaś wartość. Wskaźniki można wykorzystać do wielu ciekawych rzeczy, ale raczej nie są dobre do zabawy dla początkujących. :)

Jeśli nieprecyzyjnie opisałem niech ktoś poprawi.
[#42] Re: programowanie amos

@Ocelot, post #39

A z czego wynika to 4*121 ?
[#43] Re: programowanie amos

@gohanks, post #41

I szybsze niż rozwiązanie z pętlami.
[#44] Re: programowanie amos

@sanjyuubi, post #42

A z czego wynika to 4*121 ?


Zgaduję, że 11*11=121 (czyli rozmiar tablicy po spłaszczeniu*), a 4 to rozmiar w bajtach zmiennej typu Integer.

* Ktoś wcześniej podał przykład z pętlą o zakresie 1 do 10, ponieważ tablice indeksowane są od 0 to daje rozmiar tablicy 11, ale nie wiem czy o to chodziło autorowi, bo z deklaracji wynikało, że chce tablicę 10x10 :)

Ostatnia aktualizacja: 28.05.2015 20:33:50 przez g0trek
[#45] Re: programowanie amos

@g0trek, post #44

Z tego co pamiętam w Basicach index 0 to nie jest używalne pole w tablicy, ale mogę się mylić. Pamiętam, że kiedyś index 0 to był wskaźnik na pierwsze pole czy coś takiego.
[#46] Re: programowanie amos

@g0trek, post #44

A faktycznie, ale gdzie jest podane, że elementy tablicy mają rozmiar 32bit? Amos ma na sztywno zmienne 32 bitowe czy można deklarować mniejsze?
[#47] Re: programowanie amos

@sanjyuubi, post #46

Amos ma tylko 3 typy zmiennych z tego co wiem, string, whole numbers i real numbers.
Ja sobie zerkam czasem tutaj. Polecam jak ktoś szuka info na szybko.

Ostatnia aktualizacja: 28.05.2015 20:43:01 przez gohanks
[#48] Re: programowanie amos

@gohanks, post #47

To lipa, bo odczyt większej niż 16bit liczby zżera na 68000 dwa cykle.
[#49] Re: programowanie amos

@sanjyuubi, post #48

Zawsze możesz użyć wstawki assemblerowej.
[#50] Re: programowanie amos

@gohanks, post #49

W ogóle ten zakres w Amosie jest jakiś dziwny -147,483,648 - 147,483,648. nie jest to nawet krotność 65536 (16bit) i plasuje się jako liczba 21 bitowa, nie wykorzystująca w pełni swojego zakresu.


Bez przesady, coś takiego jak rozmiar danej powinien w Amosie być, a assemblera powinno się używać tylko w krytycznych wypadkach. Często zmienne nie przekraczają liczby 255, więc zmuszanie do wykorzystywania danej 32 bitowej do przechowywania danej 8 bitowej to celowe ograniczanie wydajności na procesorach z 16-bitową szyną i nieekonomiczne wykorzystywanie pamięci. Co oni sobie myśleli?



Ostatnia aktualizacja: 28.05.2015 21:05:20 przez sanjyuubi
[#51] Re: programowanie amos

@g0trek, post #44

Dokładnie tak.
Instrukcja Fill operuje na długich słowach (cztery bajty), adres musi być parzysty. pierwszy indeks tablicy to 0 - więc tablica(10,10) ma 11x11=121 elementów.
[#52] Re: programowanie amos

@Ocelot, post #51

Aa, to sorka za wprowadzanie w błąd, niedługo zacznę używać Amos'a i znikną wątpliwości :)
[#53] Re: programowanie amos

@sanjyuubi, post #50

Ten zakres to jakiś wymysł, w Amosie jest normalny 32-bitowy zakres.
[#54] Re: programowanie amos

@cholok, post #53

Chyba wywolaliscie jakas amosowa klatwe, bo wyszlo mi, ze
od 2 147 483 647 do -1 (???) choc powinno byc do -2 147 483 647.
Nie wiem czy to u mnie jakis bug pod WINuae czy jak
[#55] Re: programowanie amos

@cholok, post #53

A może ktoś zjadł cyfrę 2 na początku? Bo wtedy by się zgadzało.
[#56] Re: programowanie amos

@selur, post #54

prosze sie nie smiac, mam szybkie pytanie
petla
x=0

Do
x=param
bob 0,x,y,1:wait vbl
QPA[0]
Loop

Procedure QPA[P]
QPA[p+1]
end proc[P]

chodzi mi o to zeby wywolujac procedure x się zwiekszal o 1
czekam na ksiazki ale mam dzisiaj caly dzien wolny i chcialem se "pocykac"
[#57] Re: programowanie amos

@QUAD, post #56

Możesz to zrobić w taki sposób:

inc X

Lub:

add x,1

Jak za mało to są jeszcze inne możliwości.
[#58] Re: programowanie amos

@QUAD, post #56

Tak na szybko to zamiast QPA[p+1] napisz p = p + 1 w ciele procsedury. I wtedy param przyjmie wartość zwiększoną o 1. Po drugie zamiast pisać QPA[0] napisz QPA[x], w przeciwnym razie zawsze będziesz miał wartość 1 w Param.
By zwiększyć czytelność przeniósłbym x = Param przed Loop.
Jeśli coś jest mało jasne to mogę rozszerzyć.
[#59] Re: programowanie amos

@asman, post #58

Uehehe
[#60] Re: programowanie amos

@asman, post #58

x=param

do
qpa[x]
bob 0,x,y,1 :wait vbl
loop

procedure qpa[x]
p=p+1
end proc[x]

zrobiłem tak, bo nie wiem czy dobrze zrozumiałem, tylko dalej nie działa, potrzebuje wyjaśnienia
z tego co rozumiem jak daję end proc[x] to x jest wartością wyjściową procedury
ale na ekranie nic się dalej nie dzieje, daje print param to ciągle jest 1
daje print x to jest 0
wiem ze to jakaś pierdoła ale już robiłem to na milion sposobów i nie działa
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