Indice

ugBASIC Manuale Utente

VARI ALTRI CONTRIBUTI CAMPO STELLATO

SCOPO

This example shows a simple starfield by S.Devulder for ugBasic. Modified by M.Spedaletti. BITMAP ENABLE(320,200,4) BITMAP ENABLE(160,200,16) init pool of random position (faster than calling RND over and over again) initial stars avoid fixed stars, these are the ones where 1)

1)
x-x0)/speed)==0 or ((y-y0)/speed)==0 which result in the folowing bitwise AND expression ==== SORGENTE ====
 
 
 CONST numr  =  1000 : REM num of random position in pool 
 CONST nums  =    20 : REM number of stars in starfield
 CONST speed =     8 : REM speed of stars (smaller = faster)
 CONST clock =    50 : REM Number of TI per second
 CONST bg    = BLACK : REM background color
 CONST fg    = WHITE : REM forteground color
 
 DIM xrnd AS POSITION (numr+1)
 DIM yrnd AS POSITION (numr+1)
 
 DIM xtab AS POSITION (nums+1)
 DIM ytab AS POSITION (nums+1)
 
 BITMAP ENABLE (320,200,2)
 CLS bg
 COLOR BORDER bg 
 
 FOR i=0 TO numr
 	xrnd(i) = RND(SCREEN WIDTH)
 	yrnd(i) = RND(SCREEN HEIGHT)
 NEXT
 irnd = 0
 
 FOR i=0 TO nums
 	' REPEAT : c = RND(SCREEN COLORS) : UNTIL c<>bg
 	xtab(i) = RND(SCREEN WIDTH)
 	ytab(i) = RND(SCREEN HEIGHT) 
 	
 	PLOT xtab(i),ytab(i),fg
 NEXT
 
 VAR x0 AS SIGNED WORD = (SCREEN WIDTH / 2)
 VAR y0 AS SIGNED WORD = (SCREEN HEIGHT / 2)
 
 VAR x AS SIGNED WORD = 0
 VAR y AS SIGNED WORD = 0
 VAR z AS SIGNED WORD = 0
 VAR t AS SIGNED WORD = 0
 VAR dx AS SIGNED WORD = 0
 VAR dy AS SIGNED WORD = 0
 
 TI=0: frames = 0
 DO
 	INC frames
 	PLOT x0,y0,WHITE
 	IF TI>=clock THEN 
 		LOCATE 0,0 : PRINT frames;"    ";
 		frames = 0 
 		TI = 0
 	ENDIF
 	FOR i=0 TO nums
 		z = xtab(i)
 		x = z + (z - x0)/speed
 
 		t = ytab(i)	
 		y = t + (t - y0)/speed
 		
 		IF (((x OR y)<0) OR (y>=SCREEN HEIGHT)) OR (x>=SCREEN WIDTH) THEN
 			REPEAT
 				x = xrnd(irnd)
 				y = yrnd(irnd)
 				ADD irnd,1,0 TO numr
 			UNTIL ((x-x0)/speed) AND ((y-y0)/speed)
 		ENDIF
 		
 		xtab(i) = x
 		ytab(i) = y
 		
 		PLOT z,t,bg
 		PLOT x,y,fg
 		'PLOT x,y,bg
 	NEXT
     WAIT VBL
 	joy = JOY(0) : dx = 0 : dy = 0
 	IF joy HAS BIT LEFT  THEN : DEC dx : ENDIF
 	IF joy HAS BIT RIGHT THEN : INC dx : ENDIF
 	IF joy HAS BIT UP    THEN : DEC dy : ENDIF
 	IF joy HAS BIT DOWN  THEN : INC dy : ENDIF
 	IF (dx OR dy)<>0 THEN
 		IF joy HAS BIT FIRE THEN : MUL dx,4 : MUL dy,4 : ENDIF
 		PLOT x0,y0,bg
 		ADD x0,dx,0 TO SCREEN WIDTH
 		ADD y0,dy,0 TO SCREEN HEIGHT
 	ENDIF
 LOOP
 
==== FILE ==== ==== 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_starfield.bas -o example.xex
 altirra example.xex
 
 # Windows 
 ugbc.atari.exe contrib_starfield.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_starfield.bas -o example.xex
 altirra example.xex
 
 # Windows 
 ugbc.atarixl.exe contrib_starfield.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_starfield.bas -o example.prg
 x64sc example.prg
 
 # Windows 
 ugbc.c64.exe contrib_starfield.bas -o example.prg
 x64sc example.prg
=== Commodore 64+REU === 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.c64reu contrib_starfield.bas -o example.prg
 x64sc -reu example.prg
 
 # Windows 
 ugbc.c64reu.exe contrib_starfield.bas -o example.prg
 x64sc -reu 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_starfield.bas -o example.prg
 yape example.prg
 
 # Windows 
 ugbc.plus4.exe contrib_starfield.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_starfield.bas -o example.prg
 xplus4 example.prg
 
 # Windows 
 ugbc.plus4.exe contrib_starfield.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_starfield.bas -o example.bin
 xroar -rompath (percorso ROM) example.bin
 
 # Windows 
 ugbc.d32.exe contrib_starfield.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_starfield.bas -o example.bin
 xroar -rompath (percorso ROM) example.bin
 
 # Windows 
 ugbc.d64.exe contrib_starfield.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_starfield.bas -o example.bin
 dcmoto example.bin
 (scegliere example.bin)
 (scegliere BASIC 128)
 CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
 
 # Windows 
 ugbc.pc128op.exe contrib_starfield.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_starfield.bas -o example.bin
 dcmoto example.bin
 (scegliere example.bin)
 (scegliere BASIC 128)
 CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
 
 # Windows 
 ugbc.mo5.exe contrib_starfield.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_starfield.bas -o example.prg
 xvic --memory 24k example.prg
 
 # Windows 
 ugbc.vic20.exe contrib_starfield.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_starfield.bas -o example.tap
 Speccy example.tap
 
 # Windows 
 ugbc.zx.exe contrib_starfield.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_starfield.bas -o example.rom
 openmsx -machine \"COL - ColecoVision\" -cart example.rom
 
 # Windows 
 ugbc.coleco.exe contrib_starfield.bas -o example.rom
 bluemsx -machine \"COL - ColecoVision\" example.rom
== blueMSX ==
 # Linux 
 ugbc.coleco contrib_starfield.bas -o example.rom
 bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
 
 # Windows 
 ugbc.coleco.exe contrib_starfield.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_starfield.bas -o example.rom
 bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
 
 # Windows 
 ugbc.sc3000.exe contrib_starfield.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_starfield.bas -o example.rom
 bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
 
 # Windows 
 ugbc.sg1000.exe contrib_starfield.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, apri una segnalazione su GitHub per questo specifico esempio. Grazie!===== POWERED BY =====