{{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 ====
BITMAP ENABLE(16)
POSITIVE CONST startX = 1
POSITIVE CONST startY = 1
POSITIVE CONST wagonSpeed = 4
POSITIVE CONST wagonSpeedX = ( wagonSpeed * SCREEN SPRITE RATIO X ) / 100
POSITIVE CONST wagonSpeedY = ( wagonSpeed * SCREEN SPRITE RATIO Y ) / 100
wagonImage := LOAD IMAGE( "/usr/src/mine-rails/resources/wagon.png")
POSITIVE CONST wagonImageWidth = IMAGE WIDTH( wagonImage )
POSITIVE CONST wagonImageHeight = IMAGE HEIGHT( wagonImage )
POSITIVE CONST minWagonX = SCREEN BORDER X
POSITIVE CONST minWagonY = SCREEN BORDER Y
POSITIVE CONST screenWidthInWagonCoords = ( SCREEN WIDTH * SCREEN SPRITE RATIO X ) / 100
POSITIVE CONST screenHeightInWagonCoords = ( SCREEN HEIGHT * SCREEN SPRITE RATIO Y ) / 100
POSITIVE CONST maxWagonX = SCREEN BORDER X + screenWidthInWagonCoords - wagonImageWidth
POSITIVE CONST maxWagonY = SCREEN BORDER Y + screenHeightInWagonCoords - wagonImageHeight
DIM x AS POSITION = minWagonX
DIM y AS POSITION = minWagonY
DIM px AS POSITION = -1
DIM py AS POSITION = -1
DIM dx AS POSITION = 0
DIM dy AS POSITION = 0
wagon = CSPRITE( wagonImage )
PROCEDURE prepareBitmaps ON CPC, ATARI, ATARIXL, C128Z, COCO, DRAGON, MO5, PC128OP, ZX
SHARED wagonImage
SHARED wagonBackground
wagonBackground := NEW IMAGE( wagonImageWidth, wagonImageHeight )
PUT IMAGE wagonImage AT 0, 0
GET IMAGE wagonBackground FROM 0, 0
CLS BLACK
END PROC
PROCEDURE readWagonMovement
SHARED x, y, dx, dy
right = JRIGHT(0) OR KEY PRESSED( KEY S )
left = JLEFT(0) OR KEY PRESSED( KEY A )
up = JUP(0) OR KEY PRESSED( KEY W )
down = JDOWN(0) OR KEY PRESSED( KEY Z )
IF (dx = 0) AND (dy = 0) THEN
IF right AND ( x < maxWagonX ) THEN
dx = wagonSpeedX
ELSE IF left AND ( x > minWagonX ) THEN
dx = -wagonSpeedX
ELSE IF down AND ( y < maxWagonY ) THEN
dy = wagonSpeedY
ELSE IF up AND ( y > minWagonY ) THEN
dy = -wagonSpeedY
ENDIF
ENDIF
END PROC
PROCEDURE drawWagonSprite ON C64, C128, COLECO, MSX, SC3000, SG1000
SHARED x, y
SHARED wagon
SPRITE wagon ENABLE AT x, y
END PROC
PROCEDURE drawWagonBitmap ON CPC, ATARI, ATARIXL, C128Z, COCO, DRAGON, MO5, PC128OP, ZX
SHARED x, y
SHARED px, py
SHARED wagonImage
IF ( px <> x ) OR ( py <> y ) THEN
IF (px<>-1) AND (py<>-1) THEN
PUT IMAGE wagonBackground AT px, py
ENDIF
GET IMAGE wagonBackground FROM x, y
PUT IMAGE wagonImage AT x,y WITH TRANSPARENCY
px = x
py = y
ENDIF
END PROC
DIM k AS BYTE
PROCEDURE drawWagon
SHARED x, y, dx, dy
SHARED wagon
SHARED k
ADD x, dx
IF x < minWagonX THEN
x = minWagonX
ENDIF
IF x > maxWagonX THEN
x = maxWagonX
ENDIF
ADD y, dy
IF y < minWagonY THEN
y = minWagonY
ENDIF
IF y > maxWagonY THEN
y = maxWagonY
ENDIF
drawWagonSprite[] ON C64, C128, COLECO, MSX, SC3000, SG1000
drawWagonBitmap[] ON CPC, ATARI, ATARIXL, C128Z, COCO, DRAGON, MO5, PC128OP, ZX
dx = 0
dy = 0
END PROC
PROCEDURE drawWagonTimed ON C128Z
DIM t AS WORD
IF ( TIMER - t ) > 5 THEN
drawWagon[]
t = TIMER
ENDIF
END PROC
prepareBitmaps[] ON CPC, ATARI, ATARIXL, C128Z, COCO, DRAGON, MO5, PC128OP, ZX
EVERY 5 TICKS CALL drawWagon ON C64, C128, CPC, ATARI, ATARIXL, COCO, COLECO, DRAGON, MO5, MSX, PC128OP, SC3000, SG1000, ZX
CLS
EVERY ON
DO
readWagonMovement[]
drawWagonTimed[] ON C128Z
LOOP
==== FILE ====
* ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/main_014.bas|main_014.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 main_014.bas -o example.xex
altirra example.xex
# Windows
ugbc.atari.exe main_014.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 main_014.bas -o example.xex
altirra example.xex
# Windows
ugbc.atarixl.exe main_014.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 main_014.bas -o example.prg
x64sc example.prg
# Windows
ugbc.c64.exe main_014.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 main_014.bas -o example.prg
yape example.prg
# Windows
ugbc.plus4.exe main_014.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 main_014.bas -o example.prg
xplus4 example.prg
# Windows
ugbc.plus4.exe main_014.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 main_014.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d32.exe main_014.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 main_014.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d64.exe main_014.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 main_014.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.pc128op.exe main_014.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 main_014.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.mo5.exe main_014.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 main_014.bas -o example.prg
xvic --memory 24k example.prg
# Windows
ugbc.vic20.exe main_014.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 main_014.bas -o example.tap
Speccy example.tap
# Windows
ugbc.zx.exe main_014.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 main_014.bas -o example.rom
openmsx -machine \"COL - ColecoVision\" -cart example.rom
# Windows
ugbc.coleco.exe main_014.bas -o example.rom
bluemsx -machine \"COL - ColecoVision\" example.rom
== blueMSX ==
# Linux
ugbc.coleco main_014.bas -o example.rom
bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
# Windows
ugbc.coleco.exe main_014.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 main_014.bas -o example.rom
bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
# Windows
ugbc.sc3000.exe main_014.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 main_014.bas -o example.rom
bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
# Windows
ugbc.sg1000.exe main_014.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 |}}]]