DEFINE STRING SPACE 128 DEFINE STRING COUNT 16 BITMAP ENABLE(16) CONST balls = 4 CONST step = 2 CONST levels = SCREEN HEIGHT / 16 CONST screenLimitH = ( SCREEN HEIGHT - 16 ) CONST screenLimitW = ( SCREEN WIDTH - 16 ) CONST ballStep = (SCREEN WIDTH / balls) DIM x(balls), y(balls), dx(balls), dy(balls), d@(balls), m@(balls) GLOBAL x, y, f, dx, dy, d, m GLOBAL ball, bar, bgball GLOBAL basket PROCEDURE prepareGraphics bgball := NEW IMAGES(balls,16,10) CLS BLACK INK GREY BAR 0,0 TO 15,3 INK BLUE DRAW"L16R2U3L2R16L2D3L4U3L3D3" bar := NEW IMAGE(16,4) GET IMAGE bar FROM 0, 0 CLS INK GREY BAR 0,0 TO 7,7 INK BLUE DRAW"BU8D8L7U8" basket := NEW IMAGE(8,8) GET IMAGE basket FROM 0, 0 CLS INK RED CIRCLE 4,4,4 PAINT(4,4) INK WHITE DRAW"BU2L1D1L1D1" ball := NEW IMAGE(16,10) GET IMAGE ball FROM 0, 0 CLS i = 0 ty = 16 REPEAT tx = (i * ballStep) + step x(i) = tx y(i) = ty ' dx(i) = 0 ' dy(i) = 0 GET IMAGE bgball FRAME i FROM tx, ty INC i UNTIL i = balls FILL d WITH 1 FILL m WITH 0 END PROCEDURE GLOBAL bx, by PROCEDURE drawBarrier bx = 0 i = 0: j = RND(255) REPEAT IF (j AND 1) = 0 THEN PUT IMAGE bar AT bx, by ENDIF j = j \ 2 ADD bx, 16 INC i UNTIL bx > screenLimitW END PROCEDURE PROCEDURE drawBarriersAndBaskets by = 16 REPEAT drawBarrier[] ADD by, 16 UNTIL by > screenLimitH - 16 bx = 0 REPEAT PUT IMAGE basket AT bx, by ADD bx, 16 UNTIL bx > screenLimitW END PROCEDURE PARALLEL PROCEDURE moveBall REPEAT WAIT WHILE [d] IF POINT([x]+3,[y]+9) = BLACK THEN [dy] = step [dx] = 0 ELSE [dy] = 0 IF [dx] = 0 THEN IF RND(100) > 50 THEN [dx] = step ELSE [dx] = -step ENDIF ENDIF IF [x] >= screenLimitW THEN [dx] = -[dx] ELSEIF [x] < step THEN [dx] = -[dx] ELSEIF POINT([x]+9,[y]+4) <> BLACK THEN [dx] = -[dx] ELSE IF POINT([x]-3,[y]+4) <> BLACK THEN [dx] = -[dx] ENDIF ENDIF [m] = 1 [d] = 1 UNTIL [y] > SCREEN HEIGHT END PROCEDURE PROCEDURE waitRaster maxy = 0 i = balls-1 REPEAT NOP WAIT WHILE m(i) NOP IF maxy < y(i) THEN maxy = y(i) + 15 ENDIF DEC i UNTIL i < 0 IF maxy > 0 THEN WHILE RASTER LINE < maxy WEND ENDIF END PROC PARALLEL PROCEDURE drawBalls DO waitRaster[] FORBID i = balls-1: REPEAT d(i) = 1 PUT IMAGE bgball FRAME i AT x(i),y(i) DEC i UNTIL i < 0 i = 0: REPEAT ADD x(i), dx(i) ADD y(i), dy(i) GET IMAGE bgball FRAME i FROM x(i),y(i) IF dx(i) <> 0 AND dy(0) <> 0 THEN PUT IMAGE ball AT x(i), y(i) WITH TRANSPARENCY ENDIF INC i UNTIL i = balls FILL d WITH 0 ALLOW LOOP END PROCEDURE 'PARALLEL PROCEDURE movePlayer ' ' DO ' WHILE pdelay: DEC pdelay: WEND ' IF JUP(0) AND ply > 0 AND POINT(plx + 4, ply - 16) = BLACK THEN ' ADD ply, -16 ' pdelay = 10 ' ENDIF ' IF JDOWN(0) AND ply < screenLimitH AND POINT(plx + 4, ply + 16) = BLACK THEN ' ADD ply, 16 ' pdelay = 10 ' ENDIF ' IF JLEFT(0) AND plx > 16 AND POINT(plx - step, ply) = BLACK THEN ' ADD plx, -step ' pdelay = 10 ' ENDIF ' IF JRIGHT(0) AND plx < screenLimitH AND POINT(plx + 8 + step, ply) = BLACK THEN ' ADD plx, step ' pdelay = 10 ' ENDIF ' LOOP ' 'END PROC prepareGraphics[] drawBarriersAndBaskets[] SPAWN drawBalls 'SPAWN movePlayer
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.atari contrib_game_old.bas -o example.xex altirra example.xex # Windows ugbc.atari.exe contrib_game_old.bas -o example.xex altirra example.xex
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.atarixl contrib_game_old.bas -o example.xex altirra example.xex # Windows ugbc.atarixl.exe contrib_game_old.bas -o example.xex altirra example.xex
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.c64 contrib_game_old.bas -o example.prg x64sc example.prg # Windows ugbc.c64.exe contrib_game_old.bas -o example.prg x64sc example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore YAPE, e in particolare che l'eseguibile yape
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.plus4 contrib_game_old.bas -o example.prg yape example.prg # Windows ugbc.plus4.exe contrib_game_old.bas -o example.prg yape example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile xplus4
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.plus4 contrib_game_old.bas -o example.prg xplus4 example.prg # Windows ugbc.plus4.exe contrib_game_old.bas -o example.prg xplus4 example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.d32 contrib_game_old.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d32.exe contrib_game_old.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.d64 contrib_game_old.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d64.exe contrib_game_old.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi i seguenti comandi:
# Linux ugbc.pc128op contrib_game_old.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.pc128op.exe contrib_game_old.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi i seguenti comandi:
# Linux ugbc.mo5 contrib_game_old.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.mo5.exe contrib_game_old.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XEMU, e in particolare che l'eseguibile xmega65
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.vic20 contrib_game_old.bas -o example.prg xvic --memory 24k example.prg # Windows ugbc.vic20.exe contrib_game_old.bas -o example.prg xvic --memory 24k example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Speccy, e in particolare che l'eseguibile speccy
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.zx contrib_game_old.bas -o example.tap Speccy example.tap # Windows ugbc.zx.exe contrib_game_old.bas -o example.tap Speccy example.tap
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore openMsx oppure il BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.coleco contrib_game_old.bas -o example.rom openmsx -machine \"COL - ColecoVision\" -cart example.rom # Windows ugbc.coleco.exe contrib_game_old.bas -o example.rom bluemsx -machine \"COL - ColecoVision\" example.rom
# Linux ugbc.coleco contrib_game_old.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom # Windows ugbc.coleco.exe contrib_game_old.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.sc3000 contrib_game_old.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom # Windows ugbc.sc3000.exe contrib_game_old.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.sg1000 contrib_game_old.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom # Windows ugbc.sg1000.exe contrib_game_old.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
Se hai trovato un problema nel cercare di eseguire questo esempio, se pensi che ci sia un bug o, più semplicemente, vorresti che fosse migliorato, apri una segnalazione su GitHub per questo specifico esempio. Grazie!