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