{{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 User Manual ====== ===== ===== ==== PURPOSE ==== ==== SOURCE CODE ==== 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""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 ==== SOURCE FILE ==== * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/contrib_valley.bas|contrib_valley.bas]]'' ==== HOW TO COMPILE AND RUN ==== === ATARI 400/800 family === In order to compile and run the example, you need to have the Altirra emulator, and in particular that the ''altirra'' executable is accessible. Then, type this command on the command line: # 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) family === In order to compile and run the example, you need to have the Altirra emulator, and in particular that the ''altirra'' executable is accessible. Then, type this command on the command line: # 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 === In order to compile and run the example, you need to have the VICE emulator, and in particular that the ''x64sc'' executable is accessible. Then, type this command on the command line: # 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 === == Using YAPE == In order to run the example, you need to have the YAPE emulator. In particular that the ''yape'' executable is accessible. Then, type this command on the command line: # 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 == Using VICE == In order to run the example, you need to have the VICE emulator. In particular that the ''xplus4'' executable is accessible. Then, type this command on the command line: # 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 === In order to compile and run the example, you need to have the XROAR emulator, and in particular that the ''xroar'' executable is accessible. Then, type this command on the command line: # Linux ugbc.d32 contrib_valley.bas -o example.bin xroar -rompath (your rom path) example.bin # Windows ugbc.d32.exe contrib_valley.bas -o example.bin xroar.exe -rompath (your rom path) example.bin === ZX Spectrum === In order to compile and run the example, you need to have the Speccy emulator, and in particular that the ''speccy'' executable is accessible. Then, type this command on the command line: # 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 ==== ANY PROBLEM? ==== If you have found a problem trying to run this example, if you think there is a bug or, more simply, you would like it to be improved, [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=IMPROVE |open an issue]] for this example on GitHub. Thank you!===== POWERED BY ===== [[:ugbasic:user:examples|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]