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