{{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 ==== DEFINE STRING COUNT 64 DEFINE STRING SPACE 512 CONST maxoptions=8 CONST optionsy=3 DIM availableoptions(maxoptions) GLOBAL charPoints GLOBAL optionspointer GLOBAL xlocation GLOBAL ylocation DIM options$(maxoptions) DIM r$(3,3) r$(0,0)="north of the base entrance" r$(0,1)="outside the base entrance" r$(0,2)="south of the base entrance" r$(1,0)="nw" r$(1,1)="base entrance" r$(1,2)="sw" r$(2,0)="ne" r$(2,1)="e" r$(2,2)="se" DIM lockeddoors$(3,3) DIM exits$(3,3) DIM encounters(3,3) DIM encountername$(7,10) DIM encounterstr(7,10) DIM partystr(9) DIM partyskill(9) GLOBAL charisma PROCEDURE initGame SHARED lockeddoors SHARED exits SHARED encounters SHARED encountername SHARED encounterstr SHARED partystr SHARED partyskill charPoints=15 partystr(0)=3 partyskill(0)=3 charisma=3 xlocation=0 ylocation=1 ' lockeddoors$(0,0)="" lockeddoors$(0,1)="e" ' lockeddoors$(1,2)="" ' lockeddoors$(1,0)="" ' lockeddoors$(1,1)="" ' lockeddoors$(1,2)="" ' lockeddoors$(2,0)="" ' lockeddoors$(2,1)="" ' lockeddoors$(2,2)="" exits$(0,0)="s" exits$(0,1)="esn" exits$(0,2)="n" exits$(1,0)="se" exits$(1,1)="wens" exits$(1,2)="ne" exits$(2,0)="sw" exits$(2,1)="wns" exits$(2,2)="wn" encounters(1,2)=1 encountername$(1,1)="Protestor" encountername$(1,2)="Protestor" encountername$(1,3)="Protestor" encountername$(1,4)="Protestor" encountername$(1,5)="Protestor" encountername$(1,6)="Protestor" encounterstr(1,1)=4 encounterstr(1,2)=4 encounterstr(1,3)=4 encounterstr(1,4)=3 encounterstr(1,5)=4 encounterstr(1,6)=4 END PROC initGame[] PROCEDURE printPointer FOR c=1 TO maxoptions LOCATE 0,optionsy+c PRINT " " NEXT LOCATE 0,optionsy+optionspointer PRINT ">" END PROC PROCEDURE printOptions SHARED availableoptions SHARED options FOR c=1 TO maxoptions IF availableoptions(c)=1 THEN LOCATE 1,optionsy+c PRINT options$(c) ENDIF NEXT END PROC PROCEDURE resetOptions FOR c=1 TO maxoptions availableoptions(c)=0 options$(c)="" NEXT END PROC PROCEDURE optionsdown FOR c=1 TO maxoptions optionspointer=optionspointer+1 IF optionspointer>maxoptions THEN optionspointer=1 ENDIF IF availableoptions(optionspointer)=1 THEN RETURN ENDIF NEXT END PROC PROCEDURE optionsup done=0 FOR c=1 TO maxoptions optionspointer=optionspointer-1 IF optionspointer<1 THEN optionspointer=maxoptions ENDIF IF availableoptions(optionspointer)=1 THEN RETURN ENDIF NEXT END PROC PROCEDURE updatedecide[l$] IF l$="q" THEN optionsup[] printPointer[] ENDIF IF l$="a" THEN optionsdown[] printPointer[] ENDIF END PROC PROCEDURE reprintCreateCharacterScreen FOR c =1 TO maxoptions IF options$(c)="Strength" THEN LOCATE 11,optionsy+c PRINT " " LOCATE 11,optionsy+c PRINT partystr(0) ENDIF IF options$(c)="Skill" THEN LOCATE 7,optionsy+c PRINT " " LOCATE 7,optionsy+c PRINT partyskill(0) ENDIF IF options$(c)="Charisma" THEN LOCATE 11,optionsy+c PRINT " " LOCATE 11,optionsy+c PRINT charisma ENDIF NEXT LOCATE 18,18 PRINT " " LOCATE 18,18 PRINT charPoints END PROC PROCEDURE initCharScreen CLS SHARED availableoptions SHARED options$ LOCATE 0,0 resetOptions[] optionspointer=2 PRINT "distribute points between" PRINT "strength,skill and charisma." LOCATE 0,18 charPoints=15 PRINT "char points left:" availableoptions(2)=1 availableoptions(4)=1 availableoptions(6)=1 options$(2)="Strength" options$(4)="Skill" options$(6)="Charisma" printOptions[] printPointer[] reprintCreateCharacterScreen[] END PROC PROCEDURE spendcharpoint charPoints=charPoints-1 IF options$(optionspointer)="Strength" THEN partystr(0)=partystr(0)+1 ENDIF IF options$(optionspointer)="Skill" THEN partyskill(0)=partyskill(0)+1 ENDIF IF options$(optionspointer)="Charisma" THEN charisma=charisma+1 ENDIF reprintCreateCharacterScreen[] END PROC PROCEDURE retractcharpoint IF options$(optionspointer)="Strength" AND partystr(0)>3 THEN partystr(0)=partystr(0)-1 charPoints=charPoints+1 ENDIF IF options$(optionspointer)="Skill" AND partyskill(0)>3 THEN partyskill(0)=partyskill(0)-1 charPoints=charPoints+1 ENDIF IF options$(optionspointer)="Charisma" AND charisma>3 THEN charisma=charisma-1 charPoints=charPoints+1 ENDIF reprintCreateCharacterScreen[] END PROC CONST createcharmode=1 CONST adventurMode=2 GLOBAL gamemode gamemode=createcharmode PROCEDURE printAdventureScreen SHARED r$ SHARED availableoptions SHARED options$ SHARED exits$ CLS LOCATE 0,0 PRINT r$(xlocation,ylocation) PRINT exits$(xlocation,ylocation) PRINT MID(exits$(xlocation,ylocation),1,1) PRINT MID(exits$(xlocation,ylocation),2,1) PRINT MID(exits$(xlocation,ylocation),3,1) FOR c=0 TO 3 IF MID(exits$(xlocation, ylocation),c,1)="n" THEN options$(1)="Move North" :availableoptions(1)=1 ENDIF IF MID(exits$(xlocation,ylocation),c,1)="e" THEN options$(2)="Move East":availableoptions(2)=1 ENDIF IF MID(exits$(xlocation, ylocation),c,1)="s" THEN options$(3)="Move South":availableoptions(3)=1 ENDIF IF MID(exits$(xlocation,ylocation),c)="w" THEN options$(4)="Move West":availableoptions(4)=1 ENDIF NEXT printOptions[] END PROC PROCEDURE initAdventurMode resetOptions[] gamemode=adventurMode printAdventureScreen[] END PROC PROCEDURE updateCreateCharMode[l$] IF l$="p" AND charPoints>0 THEN spendcharpoint[] ENDIF IF l$="o" THEN retractcharpoint[] ENDIF IF l$=" " THEN initAdventurMode[] ENDIF END PROC PROCEDURE updateAdventurMode END PROC initCharScreen[] WHILE 1 k$=INKEY$ updatedecide[k$] IF gamemode=createcharmode THEN updateCreateCharMode[k$] ENDIF IF gamemode=adventurMode THEN updateAdventurMode[] ENDIF WEND ==== FILE ==== * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/bug447.bas|bug447.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 bug447.bas -o example.xex altirra example.xex # Windows ugbc.atari.exe bug447.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 bug447.bas -o example.xex altirra example.xex # Windows ugbc.atarixl.exe bug447.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 bug447.bas -o example.prg x64sc example.prg # Windows ugbc.c64.exe bug447.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 bug447.bas -o example.prg yape example.prg # Windows ugbc.plus4.exe bug447.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 bug447.bas -o example.prg xplus4 example.prg # Windows ugbc.plus4.exe bug447.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 bug447.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d32.exe bug447.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 bug447.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d64.exe bug447.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 bug447.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.pc128op.exe bug447.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 bug447.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.mo5.exe bug447.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 bug447.bas -o example.prg xvic --memory 24k example.prg # Windows ugbc.vic20.exe bug447.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 bug447.bas -o example.tap Speccy example.tap # Windows ugbc.zx.exe bug447.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 bug447.bas -o example.rom openmsx -machine \"COL - ColecoVision\" -cart example.rom # Windows ugbc.coleco.exe bug447.bas -o example.rom bluemsx -machine \"COL - ColecoVision\" example.rom == blueMSX == # Linux ugbc.coleco bug447.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom # Windows ugbc.coleco.exe bug447.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 bug447.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom # Windows ugbc.sc3000.exe bug447.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 bug447.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom # Windows ugbc.sg1000.exe bug447.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 |}}]]