{{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 |}}]]