After JHV-Party - Programmierübungen


After JHV-Party - Programmierübungen

von Sleepy » So 27. Okt 2013, 20:06
Hi,

wir haben uns diesmal am Sonntag nach der JHV im Foobar getroffen. Danke nocheinmal an Cas für das Organisieren des Raumes und die Leitung des Kurses.

Auf dem Plan stand die Programmierung und anschließende Optimierung eines kleinen Spieles.

Die Rahmenbedingungen:

- Graphics 7
- Ein Schläger der durch ein "I" repräsentiert wird
- ein 24 Pixel breites Tor am Bildschirmrand
- Ein durch einen Kreis (CTRL-T) repräsentierter Ball
- Er fliegt diagonal und wird bei Berührung des Bildschirmrand oder des Schlägers um 90° abgelenkt
- Man muß den Ball in das Tor lenken
- erst mal "ganz einfach" programmieren; ohne Optimierungen. Die sollen später durchgeführt werden um die Auswirkungen besser sehen zu können.

Die Programmiersprache war frei wählbar.Die anschließend geplante Optimierung des Codes war aus zeitgründen leider nicht mehr möglich.

Hier meine erste Lösung in Turbo Basic.

Sleeπ

Code: Alles auswählen
100 ------------------------------
110 REM
120 REM JHV 2013
130 REM
140 REM kleine Ballerei
150 REM
160 REM in TURBO BASIC
170 REM
180 ------------------------------
190 EXEC SPIELFELD
200 EXEC INIT
210 DO
220   EXEC BEWEGE_SCHLAEGER
230   IF DB
240     EXEC BEWEGE_BALL
250   ENDIF
260   DB=NOT DB
270   IF (ABS(XB-XP)<4) AND (ABS(YB-YP)<4) THEN DXB=-DXB:EXEC BEWEGE_BALL
280   IF XB<2 AND (YB>36) AND (YB<60) THEN EXEC TOR
290   COLOR 3
300   TEXT 79,1,TOR
310   COLOR 1
320   IF TOR=5 THEN EXIT
330 LOOP
340 EXEC FERTIG
350 END
360 ------------------------------
370 PROC INIT
380   XP=100:YP=44
390   XB=RAND(100)+50
400   YB=RAND(70)+10
410   DXB=1-RAND(2)*2
420   DYB=1-RAND(2)*2
430   DB=1
440 ENDPROC
450 ------------------------------
460 PROC SPIELFELD
470   GRAPHICS 7+16
480   COLOR 1
490   PLOT 0,0
500   DRAWTO 159,0
510   DRAWTO 159,95
520   DRAWTO 0,95
530   DRAWTO 0,0
540   COLOR 3
550   PLOT 0,36
560   DRAWTO 0,60
570 ENDPROC
580 ------------------------------
590 PROC BEWEGE_SCHLAEGER
600   ST=STICK(0)
610   IF ST>8 AND ST<12 THEN XP=XP-1
620   IF ST>4 AND ST<8 THEN XP=XP+1
630   IF ST=14 OR ST=10 OR ST=6 THEN YP=YP-1
640   IF ST=13 OR ST=9 OR ST=5 THEN YP=YP+1
650   IF XP<9 THEN XP=9
660   IF XP>151 THEN XP=151
670   IF YP<1 THEN YP=1
680   IF YP>87 THEN YP=87
690   TEXT XP,YP,"I"
700 ENDPROC
710 ------------------------------
720 PROC BEWEGE_BALL
730   XB=XB+DXB
740   YB=YB+DYB
750   IF XB>150 THEN DXB=-DXB
760   IF XB<2 THEN DXB=-DXB
770   IF YB>86 THEN DYB=-DYB
780   IF YB<2 THEN DYB=-DYB
790   COLOR 3
800   TEXT XB,YB,"O"
810 ENDPROC
820 ------------------------------
830 PROC TOR
840   TOR=TOR+%1
850   FOR LS=15 TO 0 STEP -0.5
860     SOUND 0,200,10,LS
870   NEXT LS
880   TEXT XB,YB," "
890   TEXT XP,YP," "
900   EXEC INIT
910 ENDPROC
920 ------------------------------
930 PROC FERTIG
940   COLOR 2
950   TEXT 40,16,"HERZLICHEN"
960   TEXT 40,32,"GLUEKWUNSCH"
970   PAUSE 100
980 ENDPROC
990 ------------------------------

Re: After JHV-Party - Programmierübungen

von skriegel » So 27. Okt 2013, 22:31
Das war lustig. Ich wollte erst auch TurboBasic machen, aber JAC! hat mich dann glücklicherweise ermuntert, es in Assembler zu tun und mir da auch extrem bei geholfen. :)

Ist zwar nicht fertig geworden, aber ich denke, jetzt bekomme ich den Rest auch noch hin.

Den Code poste hier noch nicht, das ist ja momentan noch zu 95% JAC!s Code. :beer:

Re: After JHV-Party - Programmierübungen

von 8bitjunkie » So 27. Okt 2013, 23:25
@sleepy: :beer:

Re: After JHV-Party - Programmierübungen

von Sleepy » Mo 28. Okt 2013, 07:30
Ich habe den Code übrigens ganz einfach vom ATARI raus bekommen: Einfach das ATR mit dem Emu geladen und es erst mal ganz plump mit " LIST "P:" " probiert - schwups hatte ich eine Textdatei mit dem Listing auf dem Desktop. Lediglich das Sonderzeichen (CTRL-T für den Ball in Zeile 800) hat gefehlt.
Ich weiß jetzt nicht (mehr) ob dafür extra etwas eingestellt werden mußte, mit dem ATARI800macX geht´s jedenfalls.
Wenn man dan den Text im Forum einfügt, das Listing markiert und die Option "Code" (neben bold, italic, ect.) wählt wird auch TB-mäßig eingerückt und ein nicht-proportionaler Zeichensatz verwendet.

@Skriegel: Ja, alles ist auch nicht direkt auf meinen Mist gewachsen; als ich mir gerade Gedanken machte wie man eine Zufallszahl die entweder "+1" oder "-1" ist generiert (Zeile 410 DXB=1-RAND(2)*2 bzw. 420 DYB=1-RAND(2)*2) hat Mirko laut darüber philosophiert wie das am besten geht. Da konnte ich einfach nicht weghören, zumal ich gerade an einer ähnlichen Formel gebastelt habe die aber noch nicht fluppte... :mrgreen:

Sleepy

Re: After JHV-Party - Programmierübungen

von Cash » Mo 28. Okt 2013, 08:53
Ich danke auch nochmal Cas das er alles organisiert hatte, an Erhard der mir trotz meines ACTION! "Spaghetti" Codes sehr viel beigebracht hatte. :mrgreen:
An JAC, der mir freundlicherweise sein Atari -Netzteil geliehen hatte und Sleepy der den Kabel-defekt am NT festgestellt hatte. Ich bin jetzt jedenfalls wieder motiviert am Ball zu bleiben, viel dank! :notworthy: