kategoria: Dema
[#61] Re: Tworzenie dem

@Nasedo, post #60

Odnosząc się do tego, co powiedział kolega Nasedo, może właśnie sprawdź najpierw, w którym kierunku chcesz pójść. Bo jeżeli chcesz najpierw porealizować się twórczo, bez koncentracji na konkretnym języku, to może najpierw wypróbuj swoich sił przy pomocy właśnie Demo Maker. Nie chcę wywołać fali oburzenia, czy politowania, bo oczywiście taki edytor jest mocno ograniczony i raczej nie umożliwia wglądu w kod źródłowy (nie sprawdziłem, ale nie sądzę). Za jego pomocą nie stworzysz dzieła scenowego, lecz raczej coś na wzór udźwiękowionych mini-demek z crack'owanych wersji gier, gdzie zaraz po odpaleniu gry miałeś najczęściej próbkę możliwości hackera, jakieś numery BBS'ów, scrollowane teksty, czy ekran z wybieraniem opcji nieśmiertelności. Chociaż i one czasem robiły wrażenie, zwłaszcza muzycznie!
Parę lat temu wpadła mi w ręce cała seria książeczek Demo Maker z początku lat 90, wraz ze sprawnymi dyskietkami. Niestety do dzisiaj nie znalazłem czasu, żeby się tym pobawić, poza odpaleniem, ale wygląda to dość interesująco na dobry początek. To nie jest absolutnie graficzny "WYSiWYG", jak kiedyś MS FrontPage do tworzenia stron www, tylko w formie autorskiego skryptu wypełniasz ekran podzielony na trzy strefy obiektami dostępnymi w bibliotece, bądź wyedytowanymi w osobnych edytorach.
Demo Maker
Demo Maker, dodatki cz.1
Demo Maker, dodatki cz.2
Demo Maker, Blitter Object Editor
Demo Maker, Vector Balls Editor
Demo Maker, Vector Objects Editor
Demo Maker, Font Editor
Demo Maker, Music Construction Kit
Żeby nie było za łatwo, to język niemiecki, ale wówczas to oni pisali najwięcej dobrej literatury amigowej. Nie mogę póki zaoferować skanów, bo czas czas czas, ale adf'y mam. Ewentualnie skan tej pierwszej książeczki mogę zrobić w jakimś nieodległym czasie. Bo fajnie by było jakby ludzie z tego korzystali, no i chwalili się potem swoimi osiągnięciamiOK.
[#62] Re: Tworzenie dem

@Michciu, post #61

Zacząłem od AMOSa. Ma trochę wspólnego z Basic'iem więc start jest łatwy. Narazie zacząłem ćwiczyć a jak tylko coś zrobię na pokaz to zaraz się tym pochwalę chociaż dla Was pewnie to będzie pokaz lamerski gościa który po 30 latach odkrywa Amerykę :) no ale mnie cieszy stworzenie czegoś. Od razu mówię że to nie będzie demko.
5
[#63] Re: Tworzenie dem

@tukinem, post #62

Jakiego wyboru dokonasz / dokonałeś, zależy od Ciebie. Jeżeli czujesz się dobrze korzystając z AMOSa, dlaczego nie?
Nie uważam, że powinieneś mieć jakieś poczucie niższości w tym przypadku - stawiasz swoje pierwsze kroki w programowaniu w danym języku, więc nawet jeżeli pierwszy program by miał wyświetlić tylko napis "Hello World" to nie jest powód do wyśmiania Ciebie.
Interesuje Ciebie Amiga? Dobrze. Interesuje Cię programowanie na Amidze? Również dobrze. Jeżeli to co robisz sprawia Ci przyjemność, odczuwasz właśnie w tym procesie kreowania coś dla siebie, to niby dlaczego Ci sugerować, abyś robił coś innego?
[#64] Re: Tworzenie dem

@Nasedo, post #63

Poza tym za AMOSem przemawia fakt, że w tym języku (ponoć) powstało zaj***ste mordobicie Franko, tak więc jak widać i tu potencjał jest dużyOK. Powodzenia!
[#65] Re: Tworzenie dem

@tukinem, post #62

Ważne aby pisać zgodnie z feng shui,
przede wszystkim nie stosować basicowych GOTO,
całość pozamykać w procedury, wykonujące pojedyncze zadania,
duże zadania dzielić na mniejsze itp.
Przed programowaniem warto sobie rozrysować przynajmniej schemacik struktury programu,
przypadków użycia, itp.
.
[#66] Re: Tworzenie dem

@rePeter, post #65

przede wszystkim nie stosować basicowych GOTO


GOTO i GOSUB wcale te instrukcje nie są złe , jak je się mądrze wykorzysta . Procedury są na tyle fajne że kod programu jest bardziej czytelny. Jeśli chodzi o prędkość programu z wykorzystaniem procedur czy etykiet to kwestia jest już sporna.
[#67] Re: Tworzenie dem

@rePeter, post #65

Procedury lepiej nie. Info z amigacoding.com:

speed increase: large


Use subroutines instead of procedures. Although they're messier, they are several times faster! Of course, with this method, you can not pass parameters, but all the variables you were using will still be accessible.

Don't use:

_SOMETHING
Procedure _SOMETHING
Code
End Proc
Use this instead:

Gosub _SOMETHING
_SOMETHING:
Code
Return
[#68] Re: Tworzenie dem

@mastaszek, post #67

Zawsze mozna uzyc "inline" :) No ale to kwestia jezyka:)
[#69] Re: Tworzenie dem

@mastaszek, post #67

Ja dodam, by nie martwić się o prędkość działania na początku pracy. Ważne by zamknąć algorytmy w procedury, żeby móc później optymalizować.

Zdecydowanie lepsze są parametry i zmienne lokalne, aniżeli zmienne globalne.

Dowód: jeżeli chcemy skorzystać z rekurencji, to stosując parametry jest to bardzo wygodne:

/* Silnia wyliczana za pomocą rekurencji z parametrem na stosie */
unsigned int silnia(unsigned int x)
{
    return x == 0 ? 1 : x * silnia(x - 1);
}

Stosując zmienne globalne rekurencja też wyjdzie ale jest to mniej wygodne, trzeba pamiętać o inicjalizacji x i funkcja jest nieczytelna i mniej elastyczna:

/* Przekazywanie parametrów przez zmienną globalną */
unsigned int silnia()
{
    extern unsigned int x; /* Aktualna wartość zmiennej zewnętrznej x */

    return x == 0 ? 1 : (--x + 1) * silnia();
}

Dla dwóch parametrów jest to nawet bardziej widoczne:

/* Dwumian Newtona za pomocą rekurencji z parametrami na stosie */
unsigned int dwumianNewtona(unsigned int n, unsigned int k)
{
    assert(n >= k);
    return n == 0 || n == k ? 1 : dwumianNewtona(n - 1, k - 1) + dwumianNewtona(n - 1, k);
}

Dlatego też przed implementacją warto wyznaczyć minimalny niezbędny zestaw parametrów. Żeby funkcja była rozszerzalna warto stosować struktury.

Jeżeli jednak zapomnieliśmy o jakimś parametrze, a mamy już sporo odnośników, to można dopisać funkcję, która ma pełne spektrum parametrów, zaś funkcję z niedoborem parametrów posiłkujemy zmienną globalną (której używamy jako parametr domyślny):

void wypiszCiagTekstowy(char *c)
{
    printf("%s\n", c);
}

void wypiszCiag()
{
    extern char *ciag; /* Domyślnie wyświetlany ciąg */
    wypiszCiagTekstowy(ciag);
}


Ostatnia aktualizacja: 10.07.2021 14:43:36 przez Hexmage960
[#70] Re: Tworzenie dem

@Hexmage960, post #69

Panie, ale my tu o amosie, w którym kolega chce pisać dema, więc prędkość jest raczej kluczowa...

Ostatnia aktualizacja: 10.07.2021 15:04:51 przez mastaszek
[#71] Re: Tworzenie dem

@mastaszek, post #70

Podałem przykłady w C, bo obecnie w nim koduję.

Ale moje wywody odnoszą się też do AMOSa i dowolnego języka programowania.

Prędkość jest ważna, ale według mnie nie powinna przysłaniać funkcjonalności na początku pisania gry/programu/dema.

Jak się umieści algorytmy w procedurach/funkcjach to wtedy można optymalizować później.

Przykład: funkcję sortującą sort() najpierw implementujemy by osiągnąć podstawową funkcjonalność, a później można ją wielokrotnie przyśpieszyć zmieniając implementację.

Ostatnia aktualizacja: 10.07.2021 15:12:38 przez Hexmage960
[#72] Re: Tworzenie dem

@Hexmage960, post #71

Zgoda, ale optymalizacja procedury w amosie polega na tym, żeby procedury w ogóle nie używać :) To co, kolega napisze sobie na początek procedury, żeby było funkcjonalnie i przejrzyście, a potem w ramach optymalizacji te procedury wywali?
[#73] Re: Tworzenie dem

@mastaszek, post #72

Procedury zoptymalizuje w razie potrzeby. Funkcja i wszystkie odwołania zostają.

Jeżeli zaś chodzi Ci o to, że GOSUB jest szybsze niż procedury w AMOSie, to OK - ale ja bym osobiście skorzystał mimo wszystko z procedur, bo po to one w ogóle są - i dodatkowo mają bardzo przydatną możliwość przekazywania parametrów.
[#74] Re: Tworzenie dem

@Hexmage960, post #73

SZYBKOŚĆ działania będzie kluczowa, więc co mu po funkcjonalności procedur, skoro są powolne? To tak jakbyś sprinterowi w biegu na 100m dał plecak gaśnicą w środku, bo gaśnica to dobra rzecz i może się przydać. I nieważne, że pobiegnie wolniej niż reszta, ważne że jakby się paliło, to będzie miał funkcjonalną i użyteczną gaśnicę.

Ostatnia aktualizacja: 10.07.2021 15:39:03 przez mastaszek
2
[#75] Re: Tworzenie dem

@mastaszek, post #74

Ciekawe porównanie.

Ja mam na myśli w zasadzie to, żeby np. implementować sortowanie metodą InsertionSort, a później QuickSort.

Czyli najpierw pokonujemy trasę chodem, a dopiero później sprintem.
[#76] Re: Tworzenie dem

@djpiotrs, post #66

Na tym etapie nauki programowania nie ma znaczenia dla wydajności czy użyje się procedur czy GOTO. Lepiej używać procedur ponieważ kod będzie czytelniejszy i łatwiejszy do modyfikacji. Efektów takich jak w asemblerowych demach i tak w Amosie się nie uzyska więc nie zawracałbym sobie głowy optymalizacjami szybkości. Zamiast tego można się pobawić prostymi efektami, poznać możliwości Amosa a dopiero po osiągnięciu kolejnego stopnia zaawansowania robić optymalizacje i wstawki.
[#77] Re: Tworzenie dem

@mastaszek, post #67

No wiem, można mieć w dupie te wszystkie struktury, procedury, encapsulację
i jechać z góry bez trzymanki byle szybciej.
Ja tylko chciałem zwrócić uwagę, że można bawić się zachowując
jakąś podstawową elegancję, art, to też daje dużą satysfakcję
a dogonić topowe dema w dowolnym języku wyższego poziomu i tak się zapewne nie uda.

Co do powolności procedur, narzut jest tylko przy wejściu a nie w samej procedurze,
więc wystarczy nie puszczać w pętli 1000x wywołanie procedury,
tylko odpowiednio projektować kod.
.
[#78] Re: Tworzenie dem

@rePeter, post #77

W sumie bez znaczenia co wcześniej pisałem, bo kolega Tukinem jednak postanowił zrobić sokobana.
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