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