[#1] Klon PONGa w AMOSIE
* Gra na 2 joysticki - na razie bez AI
* Wygrywa ten, kto zdobędzie 10 pnkt
* Wychodzimy klawiszem ESC
* Kod wrzucamy bądź przepisujemy w środowisku AMOS Pro
* Na razie uproszczona fizyka ruchu piłeczki
* W 3 linii od końca zmieniając wartość z 1000 na dowolnie inną sterujemy prędkością gry w zależności od posiadanego procesora - większa dla szybszego procesora

* "Jak to jest zrobione" będziemy omawiać na III spotkaniu w Rzeszowie - "Amiga: początki kultury w wersji cyfrowej cz.3" w Rzeszowie w WDK dnia 15.11.2014 - serdecznie zapraszamy.



Rem ********************************   
Rem * AmiPong ver. 0.1A       
Rem * [2014] pong777 @ ppa.pl      
Rem * contact: jkremski@plusnet.pl  
Rem * F R E E W A R E *  
Rem ******************************** 

Screen Open 0,320,256,32,Lowres

Palette $0,$0,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
Curs Off 
Hide 

Bar 20,30 To 70,40
Bar 20,30 To 30,90
Bar 60,40 To 70,60
Bar 20,50 To 70,60

Bar 90,30 To 140,40
Bar 90,80 To 140,90
Bar 90,30 To 100,80
Bar 130,30 To 140,90

Bar 160,30 To 210,40
Bar 160,30 To 170,90
Bar 200,30 To 210,90

Bar 230,30 To 280,40
Bar 230,80 To 280,90
Bar 230,30 To 240,90
Bar 270,60 To 280,80
Bar 260,60 To 270,70

Ink 0

Bar 60,30 To 70,40
Bar 60,50 To 70,60
Bar 90,30 To 100,40
Bar 130,30 To 140,40
Bar 130,80 To 140,90
Bar 90,80 To 100,90
Bar 200,30 To 210,40
Bar 230,30 To 240,40
Bar 230,80 To 240,90

Centre At(,1)+"AMI (ver. 0.1A)"
Centre At(,14)+"Press any key to start..."

Centre At(,22)+"A TRIBUTE TO THE ORIGINAL ATARI PONG"
Centre At(,26)+"<FROM pong777 @ PPA.PL #2014#>"

Ink 4

Wait Key 

Cls 

Box 0,0 To 319,0
Box 0,255 To 319,255

Draw 160,0 To 160,10
Draw 160,20 To 160,30
Draw 160,40 To 160,50
Draw 160,60 To 160,70
Draw 160,80 To 160,90
Draw 160,100 To 160,110
Draw 160,120 To 160,130
Draw 160,140 To 160,150
Draw 160,160 To 160,170
Draw 160,180 To 160,190
Draw 160,200 To 160,210
Draw 160,220 To 160,230
Draw 160,240 To 160,250

Bar 0,40 To 10,90

Bar 0,120 To 10,130

Get Sprite 2,0,40 To 11,91
Get Sprite 4,0,40 To 11,91
Get Sprite 6,0,120 To 11,131

Ink 0

Bar 0,40 To 10,90
Bar 0,120 To 10,130

Ink 3
Pen 3

Centre At(,15)+"0:0"

Y1=100
Rem X1=100 

Y2=100

X3=200
Y3=200

RX=-1
RY=1

P1=0
P2=0

Repeat 
Sprite 2,130,Y1,1
Sprite 4,436,Y2,2
Sprite 6,X3,Y3,3

If Jup(1)=-1 and Y1>45 Then Y1=Y1-1
If Jdown(1)=-1 and Y1<245 Then Y1=Y1+1

If Jup(0)=-1 and Y2>45 Then Y2=Y2-1
If Jdown(0)=-1 and Y2<245 Then Y2=Y2+1

If X3<130
P2=P2+1
X3=200
Y3=Rnd(100)
RX=1
RY=1
End If 

If X3>436
P1=P1+1
X3=200
Y3=Rnd(100)
RX=-1
RY=1
End If 

If X3>=426 and X3<=436 and Y3>=Y2-10 and Y3<=Y2+50
 RX=RX*(-1)
End If 

If X3<=140 and X3>130 and Y3>=Y1-10 and Y3<=Y1+50
 RX=1
End If 

If Y3=45 Then RY=1
If Y3=285 Then RY=RY*(-1)

X3=X3+RX
Y3=Y3+RY

If P1=10
P1=0
P2=0
End If 

If P2=10
P1=0
P2=0
End If 

Centre At(,15)+(Str$(P1)+" :"+Str$(P2))
Rem Wait Vbl 

For I=1 To 1000
Next I

Until Key State(69)=-1


Ostatnia aktualizacja: 26.10.2014 02:51:11 przez pong777
[#2] Re: Klon PONGa w AMOSIE

@pong777, post #1

Z góry przepraszam za krytykę ale jeśli ten kod ma być omawiany,
należałoby go wpierw sformatować, czyli przede wszystkim użyć wcięć, itp.
oraz podzielić go na logiczne bloki, używając procedur,
ponieważ w tej chwili może być omawiany wyłącznie w kontekście jak nie należy pisać programów.
.
[#3] Re: Klon PONGa w AMOSIE

@rePeter, post #2

To jest wersja wyłącznie do wpisania i testowania-możliwie krótka. Omawiać będziemy wersję z wcięciami i komentarzami w kodzie, która opublikuję w późniejszym terminie. Nie wykorzystuję procedur aby nie przestraszyć początkujących.
[#4] Re: Klon PONGa w AMOSIE

@pong777, post #1

Powinieneś użyć przerwania wygaszania pionowego (o ile można w Amosie), aby ograniczyć wykonywanie kodu do 50 cykli na sekundę, w ten sposób uniezależniłbyś prędkość gry od procesora.

Formatowanie kodu to inna historia, bo go tu nie ma :) Pierwsze wrażenie to jednolita papka. Jeśli to twój pierwszy program, to można wybaczyć, ale jak zaczniesz pisać coś dłuższego, to sam wpadniesz we własne sidła.
[#5] Re: Klon PONGa w AMOSIE

@pong777, post #3

Początkujący przestraszy się od razu takiego kodu, bo wygląda jak zadanie z matematyki z ostatniego roku studiów.
[#6] Re: Klon PONGa w AMOSIE

@sanjyuubi, post #4

Program dla wygody powstawał pod WinUAE. Jest tam zakomentowana procedura "Wait Vbl" która jest dokładnie tym o czym wspomniałeś. Niestety nawet po jej zastosowaniu na UAE działa za szybko stąd dodatkowa pusta iteracja i chwilowe wyłączenie "Wait Vbl". Zdecydowanie jednak wątek prędkości gry wymaga jeszcze dopracowania. Jest to wersja 0.1A.

Ostatnia aktualizacja: 26.10.2014 14:38:15 przez pong777
[#7] Re: Klon PONGa w AMOSIE

@pong777, post #6

To trochę bez sensu, chyba, że coś jest namieszane w winUAE. Próbowałeś włączyć "cycle exact" w winuae?
[#8] Re: Klon PONGa w AMOSIE

@pong777, post #1

Mnie idea żywego kodu bardzo się podoba- do zobaczenia w WDK 15.11.2014 OK
[#9] Re: Klon PONGa w AMOSIE

@sanjyuubi, post #5

A tam pleciesz . Każdy kod jest dobry jak spełnia swoje zadanie. Według mnie ten kod jest dla początkujących , język basic to moje hobby i coś o tym wiem . Matematyka to podstawa programowania .szeroki uśmiech
[#10] Re: Klon PONGa w AMOSIE

@djpiotrs, post #9

Matematyka to podstawa programowania


matematyka matematyce nierowna :). moim zdaniem wiekszosc wspolczesnych programistow nie musi zbytnio zaglebiac sie w tajniki matematyki. wystarcza najczesciej to co przyswoili na lekcjach w szkole sredniej.

Ostatnia aktualizacja: 26.10.2014 19:14:23 przez sigma2pi
[#11] Re: Klon PONGa w AMOSIE

@djpiotrs, post #9

Każdy kod jest dobry jak spełnia swoje zadanie


Nawet nie zdajesz sobie sprawy w jakim błędzie jesteś. Nie sądzę, aby kod pozbawiony formatowania był lepszy dla początkującego, w dodatku, może tego nie widać po krótkim kodzie, ale przy większych programach pisanych jak leci, jakakolwiek modyfikacja kodu może wywołać niemałą zadyszkę o ile sam programista nie pogubi się w swojej sadzawce.

Matematyka w przeciętnym programie ogranicza się do dodawaniu, odejmowaniu i rzadziej mnożenia lub dzielenia, czyli ogólnie przyswojonych podstaw.

Ostatnia aktualizacja: 26.10.2014 20:30:11 przez sanjyuubi
[#12] Re: Klon PONGa w AMOSIE

@djpiotrs, post #9

Jest już nowsza wersja. Testuję. Ogarnąłem temat równej pracy gry niezależnie od CPU. Dodałem obsługę AI domyślnie - jeśli ktoś poruszy joy nr 2 to automatycznie przełącza się w tryb P2P.
[#13] Re: Klon PONGa w AMOSIE

@pong777, post #1

AMOS muszę przyznać to bardzo skuteczne narzędzie tworzenia dla klasyka.
[#14] Re: Klon PONGa w AMOSIE

@pong777, post #1

Pielęgnujemy stare obyczaje. :D
[#15] Re: Klon PONGa w AMOSIE

@pong777, post #12

Dodaj jeszcze jakiś dźwięk przy odbijaniu piłeczki.
[#16] Re: Klon PONGa w AMOSIE

@sigma2pi, post #10

Jeśli ktoś chce tworzyć gry na klasyka to musi co nie co znać się na matematyce w szczególności logice i geometrii oraz elementach fizyki do poruszania i obrotów obiektów. Dźwięk będzie dodany. Ktoś się orientuje czy w oryginale występował dźwięk?
[#17] Re: Klon PONGa w AMOSIE

@pong777, post #16

Tak był dźwięk.
[#18] Re: Klon PONGa w AMOSIE

@BULI, post #17

"pyk pyk pyk pyk"
[#19] Re: Klon PONGa w AMOSIE

@pong777, post #16

Z elementów matematyki, wymieniłeś właściwie wszystko co przeciętny Polak wynosi z podstawówki, właściwie to więcej w przeciętnym programie elementów logiki. Przesuwanie elementów po liniach prostych i krzywych, ciężko nazwać matematyką w takim stopniu, aby wszyscy drżeli na samą myśl o programowaniu, co innego wyliczanie kąta odbicia przy uwzględnieniu szybkości piłeczki oraz szybkości i kierunku poruszającej się kładeczki, to już jest jakiś wstęp do podstaw matematyki w programowaniu gier. Kreślenie linii, łuków, kółek i wektorów, to już inna liga, wtedy naprawdę czujesz, że matematyka wchodzi w grę. Zdziwiłbym się, gdyby ktoś podejmował się programowania, a nie mógł ogarnąć podstawowych działań matematycznych.

Ktoś się orientuje czy w oryginale występował dźwięk?


Jako wielki fan ponga (nick zobowiązuje) powinieneś wiedzieć o nim wszystko, nawet o dźwiękach. :)





Ostatnia aktualizacja: 28.10.2014 17:34:23 przez sanjyuubi
[#20] Re: Klon PONGa w AMOSIE

@sanjyuubi, post #19

Jako wielki fan ponga (nick zobowiązuje) powinieneś wiedzieć o nim wszystko, nawet o dźwiękach
.

Uwaga słuszna i wcielona w życie. Muszę zmniejszyć wielkość paletek i przyspieszyć ich ruch oraz ruch piłki oraz dodać też stopniowe przyspieszenie ruchu piłki.
Punktację też pewno należy zmienić - niech rysuje się dużym fontem złożonym z boxów a nie systemową czcionką Amigi. Dźwięk zatem będzie niemal oryginał :D

Ostatnia aktualizacja: 28.10.2014 19:15:07 przez pong777
[#21] Re: Klon PONGa w AMOSIE

@pong777, post #20

Jakbyś sobie ładnie poformatował i ułożył ten kod (nawet głupia pusta linia przed repeat robi już różnicę), to nawet jakieś procedurki byłyby nietrudne do strawienia dla początkujących.

Czcionka złożona z prostokątów nada grze prawdziwego klimatu 1-bitowej retro ery :) Do dzieła!

Ostatnia aktualizacja: 28.10.2014 19:29:36 przez sanjyuubi
[#22] Re: Klon PONGa w AMOSIE

@pong777, post #20

Nie no ten oryginalny dźwięk taką sugestią było by samplowanie dźwięku PinPonga. Albo poszukanie filmu z rozgrywki w Tenisa Stołowego i z takiego Filmu dało może by się coś wyciąć. Wtedy gra była by trochę nowocześniejsza.

I np: przy A-500 512KB był by oryginalny dźwięk. A przy lepszych konfiguracjach mógł by być lepszy. Co nie znaczy że oryginalny jest zły, no ale zawsze można dać coś nowszego na lepsze konfiguracje.
[#23] Re: Klon PONGa w AMOSIE

@amizet, post #22

Na razie jest dźwięk klasyczny:

1. link
2. link
3. link
[#24] Re: Klon PONGa w AMOSIE

@pong777, post #23

Naniesione zmiany:




A tutaj 2 pliczki do testowania - wersja wykonywalna i customowa, dwustopniowa ikonka

link_1
link_2

Czekają na zrobienie:

1. Zmienna szybkość piłeczki.
2. Zmniejszenie paletek - zwiększenie trudności.
3. Modyfikacja kodu aby był bardziej czytelny dla odbiorcy.



Ostatnia aktualizacja: 28.10.2014 23:26:18 przez pong777
[#25] Re: Klon PONGa w AMOSIE

@pong777, post #24

To chyba i ja cosik naskrobię w AMOSie :)
[#26] Re: Klon PONGa w AMOSIE

@pong777, post #24

Pong by Pong777
[#27] Re: Klon PONGa w AMOSIE

@selur, post #26

Zrobisz mi grafikę do gry? Kod i udźwiękowienie już jest. W zamian oferuję wyróżnienie w creditsach.

Pozdro.
[#28] Re: Klon PONGa w AMOSIE

@groovebox, post #25

Fajnie jeśli kogoś zainspirowałem moim mikroprojektem. Planuję zrobić jakiś Distance learning na PPA.
[#29] Re: Klon PONGa w AMOSIE

@pong777, post #28

Jak działają te polecenia?

Get Sprite 2,0,40 To 11,91
Get Sprite 4,0,40 To 11,91
Get Sprite 6,0,120 To 11,131

Skąd są pobierane "duszki"?
[#30] Re: Klon PONGa w AMOSIE

@pong777, post #28

Fajnie to by bylo jakby ktos dorwal kody zrodlowe z gier takich jak
Genesia, Dogfight, Bloodfest, Jetstrike, Breed 96, The Prophet , Valhalla. Sporo by sie mozna nauczyc.

#
Get Sprite E, O, x1,y1 to x2,y2
wycina obraz sprajta 'O' z ekranu 'E' gdzie x1,y1 to lewy gorny a x2,y2 prawy dolny rog prostokata. Jesli nie ma okreslonego E to wycina z aktualnie uzywanego ekranu.
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