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