{{htmlmetatags>metatag-robots=() metatag-title=( | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(An isomorphic language for retrocomputers) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=( | ugBASIC User Manual) metatag-og:description=(An isomorphic language for retrocomputers) }} ====== ugBASIC Manuale Utente ====== ===== ===== ==== SCOPO ==== ==== SORGENTE ==== 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 ==== FILE ==== * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/contrib_game_old.bas|contrib_game_old.bas]]'' ==== COME ESEGUIRLO ==== === Atari 400/800 === 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 === Atari 600XL/800XL/1200XL/XG(SE) === 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 === Commodore 64 === 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 === Commodore PLUS/4 === == Usando YAPE == 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 == Usando VICE == 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 === Dragon 32 === 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 === Dragon 64 === 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 === PC128 Olivetti Prodest === 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 === Thomson MO5 === 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 === Commodore VIC-20 === 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 === ZX Spectrum === 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 === ColecoVision === 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: == openMSX == # 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 == blueMSX == # 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 === SEGA SC-3000 === 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 === SEGA SG-1000 === 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 ==== PROBLEMI? ==== 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, [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=MIGLIORARE |apri una segnalazione]] su GitHub per questo specifico esempio. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:examples|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]