Indice

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

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, apri una segnalazione su GitHub per questo specifico esempio. Grazie!

POWERED BY