Indice

ugBASIC Manuale Utente

SCOPO

SORGENTE

 10 CLS 
 70 ST=RND(9)+RND(9)+RND(9):IQ=RND(9)+RND(9)+RND(9) 
 80 EN=RND(9)+RND(9)+RND(9):ST=ST*5:IQ=IQ*5:EN=EN*6 
 90 PRINT"1) WARRIOR":PRINT"2) CLERIC":PRINT"3) BARBARIAN" 
 100 PRINT"4) WIZARD":INPUT"WHICH ONE (1-4)";A 
 110 IFA<1ORA>4THENCL$="FOOL";IQ=IQ-RND(10) 
 120 IFA=1THENCL$="WARRIOR":ST=ST+RND(ST):IQ=IQ+RND(10) 
 130 IFA=2THENCL$="CLERIC":IQ=IQ+RND(10)*2 
 140 IFA=3THENCL$="BARBARIAN":IQ=IQ-RND(5):ST=ST+RND(ST) 
 150 IFA=3THENEN=EN+RND(ST) 
 160 IFA=4THENCL$="WIZARD":IQ=IQ+RND(15)*2:EN=EN+RND(5) 
 170 INPUT"NAME";NAME$ 
 180 IFNAME$=""THENNAME$="MR. 'X'"
 190 CLS 
 200 PRINTSTRING$(32,175);:FORN=0TO7:PRINTCHR$(175); 
 210 PRINTSTRING$(30,32);CHR$(175);:NEXT 
 220 PRINTSTRING$(32,175) 
 230 A$(1)=CHR$(175)+"#####################/\#######"+CHR$(175) 
 240 A$(2)=CHR$(175)+"#/\/\########/\/\##/## /\#####"+CHR$(175) 
 250 A$(3)=CHR$(175)+"p####\####/\/####\/######\/\/k"+CHR$(175) 
 260 A$(4)=CHR$(175)+"######\/\/"+STRING$(20,32)+CHR$(175) 
 270 J=RND(5)*32:PRINT@J,A$(1);:PRINTA$(2);:PRINTA$(3); 
 280 PRINTA$(4); 
 360 PRINT@352,NAME$;" THE ";CLASS$ 
 370 PRINT@384,"ST:";ST;TAB(10);"IQ:";IQ;TAB(20);"EN:"; 
 380 PRINTEN;:PRINT@416,"TR:";TR;TAB(20);"EX:";EX; 
 530 GOSUB 2300 
 2300 A$=INKEY$:IFA$=""THEN2300 
 2310 IFA$="R"THEND=-33 
 2320 IFA$="T"THEND=-32 
 2330 IFA$="Y"THEND=-31 
 2340 IFA$="F"THEND=-1 
 2350 IFA$="H"THEND=1 
 2360 IFA$="C"THEND=31 
 2370 IFA$="V"THEND=32 
 2380 IFA$="B"THEND=33 
 2450 RETURN 
 30 MAN=1056:Z=16 
 410 MAN=MAN+J+33 
 440 POKE MAN,36 
 560 IFPEEK(MAN+D)=111ORPEEK(MAN+D)=92THENMAN=MAN+D:POKE MAN-D,Z:PATH=1:Z=PEEK(MAN):GOTO660 
 570 IFPEEK(MANI+D)=11THENMAN=MAN+D:POKEMAN-D,Z:CASTLE=1:Z= PEEK(MAN):GOTO660 
 580 IFPEEK(MAN+D)=16THENMAN=MAN+D:POKEMAN-D,7:PL=1:Z=PEEK(MAN):GOTO660 
 650 IFPEEK(MAN+D)<>175THENMAN=MAN+D:POKEMAN-D,Z:Z=PEEK(MAN) 
 790 GOTO440 
 660 IFZ<>11THENCASTLE=0 
 670 IFZ<>16THENPL=0 
 680 IFZ<>92ANDZ<>111THENPATH=0 
 700 PRINT@320," " 
 710 IFPATH=1THENPRINT@320,"SAFE ON PATH" 
 720 IFCASTLE=1THENPRINT@320,"SAFE IN KEEP" 
 750 IFPL=1THENPRINT@320,"SAFE IN PALACE" 
 390 IF U=1 THEN RETURN 
 400 U=1 
 490 GOSUB 360 
 540 E=E+1:IFE=10THENEN=EN-1:E=0
 40 PL=1 
 500 IFRND(4)=2ANDDEAD=0ANDCASTLE=0ANDPATH=0ANDPL=0THENGOSUB2770 
 2770 SOUND100,5:SOUND100,6:RESTORE:IFEX<2000ANDTW=0THEN FORN=0TORND(19):READMONSTER$,HITS:NEXT 
 2780 M=0 
 2790 IFEX>=2000ORTW=1THENFORN=0TORND(19)+20:READMONSTER$,HITS:NEXT 
 2810 FORN=1TOLEN(MONSTER$):MID$(MONSTER$,N,1)=CHR$(ASC(MID$(MONSTER$,N,1))+32):IFMID$(MONSTER$,N,1)="@"THENMID$(MONSTER$,N,1)=CHR$(128):NEXT:MONSTER$;
 2820 PRINT@320,"YOU HAVE MET A ";MONSTER$; 
 2830 IFCLASS$="CLERIC"AND(MONSTER$="mummy"ORMONSTER$="wraith"ORMONSTER$="spectre")ANDRND(3)=2THENYZ=1 
 2840 IFYZ=1THENFORN=0TO2000:NEXT:PRINT@320,"BUT YOU TURN IT AWAY!":FORN=0TO2000:NEXT:PRINT@320," ":EX=EX+H:YZ=0:RETURN
 2850 HITS=HITS+RND(INT(HITS/2)):IFHITS<INT(EN/2)THEN2850 
 2860 H=HITS
 2870 FORN=0TO1000:NEXT
 2880 PRINT@448,"strike";CHR$(128);"now" 
 2890 SOUND50,2 
 2900 A$=INKEY$ 
 2910 PRINT@480,STRING$(28,32); 
 2920 PRINT@480,"THE MONSTER HAS";HITS;"ENERGY   "; 
 2930 FORN=0TO300:A$=INKEY$:IFA$<>""THEN2960:ELSENEXT:PRINT@448,"too";CHR$(128);"slow":FORN=0TO2000:NEXT:PRINT@448," ":GOTO2990
 2960 IFA$="H"ANDRND(2)=2THENG=RND(EN)+RND(ST)*SD:PRINT@448,"you";CHR$(128);"hit":FORN=0TO2000:NEXT:PRINT@448,G;"DAMAGE!";:FORN=0TO3000:NEXT:YZ=1
 2970 IFYZ=1THENYZ=0:PRINT@448," ":HITS=HITS-G:ELSEIFA$="H"THENPRINT@448,"you";CHR$(128);"missed":FORN=0TO2000:NEXT:PRINT@448,STRING$(30,32);:YZ=0
 2980 IFG>0THENSOUND150,2:G=0:ELSESOUND200,2 
 2990 PRINT@480,"THE MONSTER HAS";HITS;"ENERGY   "; 
 3000 IFHITS<=0THEN3110 
 3010 SOUND200,2:PRINT@448,"the";CHR$(128);"monster";CHR$(128);"strikes":FORN=0TO2000:NEXT:PRINT@448," " 
 3020 IFRND(2)=1THENM=RND(HITS):PRINT@448,"and";CHR$(128);"hits";:SOUND10,2:FORN=0TO2000:NEXT:ELSEPRINT@448,"and";CHR$(128);"misses";:SOUND50,2:YZ=1 
 3030 IFYZ=1THENFORN=0TO2000:NEXT:PRINT@448," ":YZ=0 
 3040 EN=EN-M 
 3050 IFM>0THENPRINT@448,"DOING";M;"DAMAGE!";:FORN=0TO2000:NEXT:PRINT@448," " 
 3060 GOSUB360 
 3070 M=0 
 3080 IFEN<=0THEN3770 
 3100 HITS=HITS-1:EN=EN-1:GOTO2880 
 3110 PRINT@448," ":PRINT@480,STRING$(31,32);:PRINT@320,"YOU'VE KILLED IT!":FORN=225TO250:SOUNDN,1:NEXT:EX=EX+H:EN=EN+RND(INT(H/2)) 
 3120 FORN=0TO2000:NEXT:PRINT@320," ":IFEN>400THENEN=EN-RND(INT(H/2)):RETURN:ELSERETURN 
 3200 DATA"BANDIT",20,"BERSERKER",20,"BUGBEAR",60,"CARRION CRAWLER",60,"COCKATRICE",100,"DWARF",20,"DOPPLEGANGER",80,"ELF",20,"FIRE BEETLE",20 
 3210 DATA"GARGOYLE",80,"GELATINUS CUBE",80,"GIANT ANT",40, "GIANT CENTIPEDE",5,"GIANT RAT",10,"GNOLL",40,"GNOME",10,"GOBLIN",10,"GREY OOZE",60 
 3220 DATA"HIPPOGRIFF",65,"HOBGOBLIN",15,"BLACK PUDDING",200,"CHIMERA",180,"DJINNI",145,"DRAGON",220,"GIANT",200,"GRIFFON",140,"HYDRA",160 
 3230 DATA"WEREBEAR",120,"MANTICORE",125,"MINOTAUR",120,"MUMMY",105,"OGRE",120,"OWL BEAR",110,"PURPLE WORM",300 
 3240 DATA"SPECTRE",120,"TROLL",130,"VAMPIRE",180,"WIGHT",60,"WRAITH",80,"HELL HOUND",140 
 3770 PRINT@320,"YOU'RE DEAD!":IFK=1THEN3770 
 3780 PLAY"O1V31T2L4GGL8GGL4B-AAGGF+G":K=1:GOTO3770

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_valley.bas -o example.xex
 altirra example.xex
 
 # Windows 
 ugbc.atari.exe contrib_valley.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_valley.bas -o example.xex
 altirra example.xex
 
 # Windows 
 ugbc.atarixl.exe contrib_valley.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_valley.bas -o example.prg
 x64sc example.prg
 
 # Windows 
 ugbc.c64.exe contrib_valley.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 contrib_valley.bas -o example.prg
 yape example.prg
 
 # Windows 
 ugbc.plus4.exe contrib_valley.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_valley.bas -o example.prg
 xplus4 example.prg
 
 # Windows 
 ugbc.plus4.exe contrib_valley.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_valley.bas -o example.bin
 xroar -rompath (percorso ROM) example.bin
 
 # Windows 
 ugbc.d32.exe contrib_valley.bas -o example.bin
 xroar.exe -rompath (percorso ROM) example.bin

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_valley.bas -o example.tap
 Speccy example.tap
 
 # Windows 
 ugbc.zx.exe contrib_valley.bas -o example.tap
 Speccy example.tap

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