{{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 ====
INK BROWN
CLS
COLOR BORDER LIGHT BLUE
CONST POSITIVE maxWalls = 3
CONST POSITIVE windowHeight = 3
CONST POSITIVE maxobjects = 4
title = LOAD TILES("examples/scrolling_title.png") TRANSPARENT
titleX = ( SCREEN TILES WIDTH - TILES WIDTH( title ) ) \ 2
titleY = ( SCREEN TILES HEIGHT - TILES HEIGHT( title ) ) \ 2
titleCycle = 0
DO
ADD titleCycle, 1, 0 TO 5000
IF titleCycle = 0 THEN
INK BROWN
PUT TILE title AT titleX, titleY
ELSE IF titleCycle = 2500 THEN
INK RED
PUT TILE title AT titleX, titleY
ENDIF
IF (titleCycle = 0) OR (titleCycle=2500) THEN
INK YELLOW
LOCATE , titleY + TILES HEIGHT(title) + 2: CENTER "press any key"
ELSE IF (titleCycle = 1250) OR (titleCycle=3750) THEN
LOCATE , titleY + TILES HEIGHT(title) + 2: CLINE
ENDIF
IF SCANCODE > 0 THEN
EXIT
ENDIF
LOOP
INK BROWN
basement = LOAD TILES("examples/scrolling_basement.png") TRANSPARENT
DIM wall AS TILES(maxWalls)
wall(0) = LOAD TILES("examples/scrolling_wall0.png") TRANSPARENT
wall(1) = LOAD TILES("examples/scrolling_wall1.png") TRANSPARENT
wall(2) = LOAD TILES("examples/scrolling_wall2.png") TRANSPARENT
DIM window AS TILES(windowHeight)
window(0) = LOAD TILES("examples/scrolling_window0.png") TRANSPARENT
window(1) = LOAD TILES("examples/scrolling_window1.png") TRANSPARENT
window(2) = LOAD TILES("examples/scrolling_window2.png") TRANSPARENT
player = CSPRITE(LOAD IMAGE("examples/scrolling_player0.png"))
DIM object AS SPRITE(maxobjects)
object(0) = SPRITE(LOAD IMAGE("examples/scrolling_arrow.png") MULTICOLOR)
object(1) = SPRITE(LOAD IMAGE("examples/scrolling_barrel.png") MULTICOLOR)
object(2) = SPRITE(LOAD IMAGE("examples/scrolling_chair.png") MULTICOLOR)
object(3) = SPRITE(LOAD IMAGE("examples/scrolling_barrel.png") MULTICOLOR)
DIM objectX AS POSITION(maxobjects)
objectX(0) = 0
objectX(1) = 0
DIM objectY AS POSITION(maxobjects)
objectY(0) = 0
objectY(1) = 0
DIM objectSpeed AS POSITION(maxobjects)
objectSpeed(0) = 0
objectSpeed(1) = 0
rowIndex = 0
windowIndex = 0
playerIndex = 0
playerX = ( SCREEN WIDTH - SPRITE WIDTH ) \ #2
playerY = SCREEN HEIGHT - SPRITE HEIGHT - TILES HEIGHT(basement)
wallRightBorder = SCREEN TILES WIDTH - 1 - 4
GLOBAL wall
GLOBAL window
GLOBAL rowIndex
GLOBAL windowIndex
GLOBAL player
GLOBAL playerIndex
GLOBAL playerX
GLOBAL playerY
GLOBAL objectX
GLOBAL objectY
GLOBAL objectSpeed
GLOBAL object
GLOBAL wallRightBorder
PARALLEL PROCEDURE moveobject
[objectX] = RND(SCREEN WIDTH - SPRITE WIDTH - 1)
[objectY] = 1
[objectSpeed] = 3 + RND(5)
IF RANDOM BYTE < 64 THEN
[object] = SPRITE(LOAD IMAGE("examples/scrolling_arrow.png"), [object] MULTICOLOR)
ELSE IF RANDOM BYTE < 128 THEN
[object] = SPRITE(LOAD IMAGE("examples/scrolling_chair.png"), [object] MULTICOLOR)
ELSE IF RANDOM BYTE < 192 THEN
[object] = SPRITE(LOAD IMAGE("examples/scrolling_hammer.png"), [object] MULTICOLOR)
ELSE
[object] = SPRITE(LOAD IMAGE("examples/scrolling_barrel.png"), [object] MULTICOLOR)
ENDIF
WHILE [objectY] > 0
IF COLLISION(player) THEN
playerY = playerY + [objectSpeed]
ENDIF
ADD [objectY], [objectSpeed], 0 TO SCREEN HEIGHT + SPRITE HEIGHT
SPRITE [object] AT [objectX],[objectY] ENABLE
WEND
SPRITE [object] DISABLE
END PROC
DIM objectThread AS THREAD(maxobjects)
objectThread(0) = HALTED SPAWN moveobject
objectThread(1) = HALTED SPAWN moveobject
objectThread(2) = HALTED SPAWN moveobject
objectThread(3) = HALTED SPAWN moveobject
PROCEDURE refreshRow
x = (BYTE) 0
IF rowIndex > 0 THEN
DRAW TILES wall(rowIndex) ROW 0, 0 TO rowIndex - 1
ENDIF
DRAW TILES wall(rowIndex) ROW 0, rowIndex TO wallRightBorder
IF windowIndex > 4 THEN
w = TILES WIDTH(window(windowIndex-5))
x = 4
DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1
ADD x, w ** #2
DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1
ADD x, w ** #2
DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1
ENDIF
ADD rowIndex, 1, 0 TO 2
ADD windowIndex, 1, 0 TO 7
ADD playerIndex, 1, 0 TO 1
IF playerIndex = 0 THEN
player = CSPRITE(LOAD IMAGE("examples/scrolling_player0.png"), player)
ELSE
player = CSPRITE(LOAD IMAGE("examples/scrolling_player1.png"), player)
ENDIF
IF ( playerY > 0 ) AND ( windowIndex = 7 ) THEN
DEC playerY
DEC playerY
ENDIF
END PROC
SCREEN ROWS 24
SCROLL DOWN
DRAW TILES basement ROW 0, 0 TO wallRightBorder
DOUBLE BUFFER ON
BEGIN GAMELOOP
ON SCROLL DOWN ROW CALL refreshRow
SCROLL DOWN
SELECT CASE JOY(0)
CASE JOY LEFT
IF playerX > 0 THEN
DEC playerX
ENDIF
CASE JOY RIGHT
IF playerX < (SCREEN WIDTH - SPRITE WIDTH) THEN
INC playerX
ENDIF
ENDSELECT
SPRITE player AT playerX, playerY ENABLE
IF (RANDOM BYTE > 128) THEN
RESPAWN objectThread(0)
ENDIF
IF (RANDOM BYTE > 146) THEN
RESPAWN objectThread(1)
ENDIF
IF (RANDOM BYTE > 192) THEN
RESPAWN objectThread(2)
ENDIF
IF (RANDOM BYTE > 192) THEN
RESPAWN objectThread(3)
ENDIF
END GAMELOOP
==== FILE ====
* ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/scrolling_example_09.bas|scrolling_example_09.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 scrolling_example_09.bas -o example.xex
altirra example.xex
# Windows
ugbc.atari.exe scrolling_example_09.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 scrolling_example_09.bas -o example.xex
altirra example.xex
# Windows
ugbc.atarixl.exe scrolling_example_09.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 scrolling_example_09.bas -o example.prg
x64sc example.prg
# Windows
ugbc.c64.exe scrolling_example_09.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 scrolling_example_09.bas -o example.prg
yape example.prg
# Windows
ugbc.plus4.exe scrolling_example_09.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 scrolling_example_09.bas -o example.prg
xplus4 example.prg
# Windows
ugbc.plus4.exe scrolling_example_09.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 scrolling_example_09.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d32.exe scrolling_example_09.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 scrolling_example_09.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d64.exe scrolling_example_09.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 scrolling_example_09.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.pc128op.exe scrolling_example_09.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 scrolling_example_09.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.mo5.exe scrolling_example_09.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 scrolling_example_09.bas -o example.prg
xvic --memory 24k example.prg
# Windows
ugbc.vic20.exe scrolling_example_09.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 scrolling_example_09.bas -o example.tap
Speccy example.tap
# Windows
ugbc.zx.exe scrolling_example_09.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 scrolling_example_09.bas -o example.rom
openmsx -machine \"COL - ColecoVision\" -cart example.rom
# Windows
ugbc.coleco.exe scrolling_example_09.bas -o example.rom
bluemsx -machine \"COL - ColecoVision\" example.rom
== blueMSX ==
# Linux
ugbc.coleco scrolling_example_09.bas -o example.rom
bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
# Windows
ugbc.coleco.exe scrolling_example_09.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 scrolling_example_09.bas -o example.rom
bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
# Windows
ugbc.sc3000.exe scrolling_example_09.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 scrolling_example_09.bas -o example.rom
bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
# Windows
ugbc.sg1000.exe scrolling_example_09.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 |}}]]