Hangman


In this rather sophisticated game of Hangman the computer invites you to guess words from a range of topics, including animals, countries of the world, composers and artists, chemical elements, christian names and general verbs.

The strings from which the words are chosen by the computer are stored in A$ and you may wish to modify the program to include your own words and topics or to combine all the existing topics so that the selected word can be taken randomly from any one of them. Note that some of the topics are divided up into two distinct groups of words of different lengths and random number routines are used in the program to determine which group the word is to be chosen from.

    1 REM *** BBC VERSION ***
    2 REM *** HANGMAN ***
    4  GOSUB 7000
    5  MODE1:CLS:VDU23,1,0;0;0;0;:GOSUB10000
    6  REM @ PAUL STANLEY
    7  GOSUB 7000
   10  GOSUB1000
   95 FORI=1TO10000:NEXT:VDU20:CLS:RETURN
   99  END
  100  IF RND(1)>.5 THEN GOTO125
  110  A$="PIGEONDONKEYBUDGIEMAGGOTJAGUARSPID
ERBEETLEWEEVILEARWIGSHRIMPSALMONPLAICEMINNOWB
ADGERCATTLEKITTENLOCUSTMAGPIERABBITTURKEYTURT
LECANARYGERBILMONKEYCURLEW"
  120  I=RND(25)*6-5:B$=MID$(A$,I,6):RETURN
  125  A$="SNAILROACHHIPPOLLAMACHIMPCAMELHORS
ETIGERHOUNDSNAKEROBINHERONRAVENSTORKTROUTWHAL
EHYENAPANDASKUNKTAPIRZEBRAMOUSESHREWEAGLESWIF
TPERCHPRAWNOTTERGOOSEKOALASHEEP"
  130  I=RND(31)*5-4:B$=MID$(A$,I,5):RETURN
  150  IF RND(1)>.5 THEN GOTO175
  160  A$="ALBANIAAUSTRIABELGIUMDENMARKFINLAN
DGERMANYHUNGARYICELANDIRELANDRUMANIABAHRAINLE
BANONALGERIALIBERIANIGERIASENEGALTUNISIABERMU
DAJAMAICABOLIVIAURUGUAY"
  170  I=RND(21)*7-6:B$=MID$(A$,I,7):RETURN
  175  A$="TURKEYUGANDASWEDENPOLANDNORWAYMEXI
COKUWAITISRAELGREECEZAMBIAFRANCECYPRUSCANADAB
RAZILTAIWANPANAMAMALAWIJORDANAZORESANGOLA"
  185  I=RND(20)*6-5:B$=MID$(A$,I,6):RETURN
  210  I=RND(16)*7-6:B$=MID$(A$,I,7):RETURN
  250  IF RND(1)>.5 THEN GOTO275
  260  A$="BARIUMCARBONCERIUMCOBALTCOPPERCURI
UMERBIUMHELIUMINDIUMIODINENICKELOSMIUMOXYGENR
ADIUMSILVERSODIUM"
  265  I=RND(16)*6-5:B$=MID$(A$,I,6):RETURN
  275  A$="ARSENICBISMUTHBROMINECADMIUMCAESIU
MCALCIUMFERMIUMGALLIUMHAFNIUMHOLMIUMIRIDIUMKR
YPTONLITHIUMMERCURYRHENIUMRHODIUMSILICONSULPH
URTERBIUMTHORIUMTHULIUMYTTRIUM"
  280  I=RND(22)*7-6:B$=MID$(A$,I,7):RETURN
  300  A$="JAMESDAVIDEDGARHENRYCAROLHELENBRIA
NSALLYSARAHSUSANPETERSIMONMANDYKEVINSCOTTNIGE
LMILESROBINVENUSROMEOCECILDYLANPERCYLEIGHEMIL
YPABLOFRANKCLIVEDIANANIKCYTRACYBARRYGEOFFTERR
Y"
  320  I=RND(34)*5-4:B$=MID$(A$,I,5):RETURN
  350  IF RND(1)>.5 THEN GOTO375
  360  A$="CARRYCATCHMARRYLAUGHTWISTBRINGFETC
HWRITECLIMBWORRYGLIDEAWASHSHOOTDODGEPUNCHSMAC
KSCALETHROWLOATHDRIVEPRESSTASTESPEAKHURRYSCOR
ETRAILFORCEPROVETRACEPAINT"
  370  I=RND(30)*5-4:B$=MID$(A$,I,5):RETURN
  375  A$="COLOURTHRILLUNLOCKAFFECTABDUCTFOLL
OWATTACKDEFENDDIFFERSELECTOUTPUTDEFINECHANCEM
ODIFYREMAINACCEPTSPRINGASSUREVANISHFINISHTRAV
EL"
  390  I=RND(21)*6-5:B$=MID$(A$,I,6):RETURN
 1000 COLOUR2:PRINTTAB(13,3)"H A N G M A N"
 1005  COLOUR1:PRINTTAB(6,7)"Which subject do
 you want?"
 1010 COLOUR3:PRINTTAB(6,10)"1.....ANIMALS",T
AB(6,12)"2.....COUNTRIES OF THE WORLD",TAB(6,
14)"3.....COMPOSERS & ARTISTS"
 1020 PRINTTAB(6,16)"4.....CHEMICAL ELEMENTS"
,TAB(6,18)"5.....CHRISTIAN NAMES",TAB(6,20)"6
.....GENERAL VERBS"
 1050 COLOUR1:PRINTTAB(7,25)"Press the approp
riate key"
 1060 I=GET:IFI<49 OR I>54 THENGOTO1060
 1070  GOSUB (50+50*VAL(CHR$(I)))
 1080 CLS
 1090 COLOUR1:PRINTTAB(19,5)"H A N G M A N"
 1100 S=0:C=0:L=LEN(B$):Y=13:X=15
 1105 COLOUR2:PRINTTAB(19,6)"Your guesses:"
 1110 COLOUR1:FORF=1TOL:PRINTTAB(17+F*2,8)"?"
:NEXT
 1120 COLOUR2:PRINTTAB(19,12)"Guess a letter"
 1125  JJ=0
 1130 I=GET:IF I<65 OR I>90 THENGOTO1130
 1135  JJ=JJ+1:IF MID$(T$,JJ,1)=CHR$(I) THEN 
JJ=0:GOTO1130
 1137  IF JJ<20 GOTO1135
 1138  T$=T$+CHR$(I)
 2000 S1=S:FORF=1TOL
 2010 IF CHR$(I)=MID$(B$,F,1) THEN GOTO2100
 2020 NEXT:IF S=S1 THEN SOUND2,-12,53,2:SOUND
3,-12,80,3:GOSUB(5000+10*C):C=C+1
 2030 IF S=S1 THEN COLOUR1:PRINTTAB(X+4,Y+5)C
HR$(I):X=X+2:IFX=33 THEN X=15:Y=Y+2
 2040 GOTO1120
 2100 COLOUR2:PRINTTAB(17+F*2,8)CHR$(I)
 2110 SOUND2,-12,190,2:S=S+1:IF S=L THEN GOTO
3000
 2115  NEXTF
 2120 GOTO1120
 3000 COLOUR2:PRINTTAB(4,25)"WELL DONE! YOU C
ORRECTLY GOT":COLOUR1:PRINTTAB(4,26)B$:COLOUR
2:PRINTTAB(13,26)"IN ";C+S;" GUESSES"
 3010 FORF=1TO15000:NEXT:T$="":GOTO1000
 5000  COLOUR1:FORF=1TO14:VDU31,F+4,23,144:NE
XT:RETURN
 5010  COLOUR1:FORF=5TO17:PRINTTAB(6,F+5)CHR$
144:NEXT:RETURN
 5020  COLOUR1:FORF=1TO8:VDU31,5+F,9,144:NEXT
:RETURN
 5030  GCOL0,1:FORF=0TO5:MOVE224,608+F:DRAW32
0-F,700-F:NEXT:RETURN
 5040  COLOUR1:VDU31,13,10,144:RETURN
 5050  GCOL0,2:PROCCR(428,636,36):MOVE408,640
:DRAW412,640:DRAW412,644:DRAW408,644:MOVE432,
640:DRAW436,640:DRAW436,644:DRAW432,644
 5052  MOVE420,632:DRAW432,620:DRAW424,620:DR
AW420,624
 5056  MOVE404,620:DRAW424,612:DRAW444,620:RE
TURN
 5060  GCOL0,2:FORF=73TO76:MOVEF*4+128,576:DR
AWF*4+128,596:NEXT
 5062  COLOUR2:VDU31,12,14,143,143,143,31,11,
15,143,143,143,143,143,31,12,16,143,143,143,3
1,13,17,143:RETURN
 5070 GCOL0,2:MOVE460,576:DRAW500,616:DRAW504
,616:DRAW464,576:PROCCR(516,624,4):PROCCR(516
,624,8):PROCCR(516,624,12):RETURN
 5080  GCOL0,2:MOVE384,576:DRAW344,616:DRAW34
0,616:DRAW380,576:PROCCR(332,624,4):PROCCR(33
2,624,8):PROCCR(332,624,12):RETURN
 5090 GCOL0,2:FORF=1TO4:MOVE396+F*4,476:DRAW3
16+F*4,356:NEXT
 5092 COLOUR2:VDU31,9,21,143,143:RETURN
 5100 GCOL0,2:FORF=1TO4:MOVE444+F*4,476:DRAW5
24+F*4,356:NEXT
 5102  COLOUR2:VDU31,16,21,143,143
 5110  COLOUR1:PRINTTAB(4,25)"BAD LUCK! YOU'V
E BEEN HANGED.",TAB(4,27)"THE ANSWER WAS ";B$
 5120  GOTO3010
 7000  FORL=5000TO5090STEP10:GOSUB L:NEXT
 7050 GCOL0,2:FORF=1TO4:MOVE444+F*4,476:DRAW5
24+F*4,356:NEXT
 7060  COLOUR2:VDU31,16,21,143,143
 7080 FORF=110TO180STEP5:SOUND2,-12,F,5:SOUND
3,-12,290-F,5:NEXT
 8000 COLOUR3:VDU19,3,4,0,0,0:VDU31,1,25,144,
32,32,144,32,144,144,144,144,32,144,145,32,32
,144,32,144,144,144,144,32,144,145,32,146,144
,32,144,144,144,144,32,144,145,32,32,144
 8002  VDU31,1,26,144,32,32,144,32,144,32,32,
144,32,144,146,32,32,144,32,144,32,32,32,32,1
44,146,32,145,144,32,144,32,32,144,32,144,146
,32,32,144
 8004 VDU31,1,27,144,144,144,144,32,144,144,1
44,144,32,144,32,144,32,144,32,144,32,144,144
,32,144,32,144,32,144,32,144,144,144,144,32,1
44,32,144,32,144
 8006 VDU31,1,28,144,32,32,144,32,144,32,32,1
44,32,144,32,32,145,144,32,144,32,32,144,32,1
44,32,32,32,144,32,144,32,32,144,32,144,32,32
,145,144
 8008 VDU31,1,29,144,32,32,144,32,144,32,32,1
44,32,144,32,32,146,144,32,144,144,144,144,32
,144,32,32,32,144,32,144,32,32,144,32,144,32,
32,146,144
 8010 FORJ=2TO9:VDU19,3,J,0,0,0:FORI=1TO1000:
NEXT:NEXT
 9000 COLOUR2:PRINTTAB(20,10)"@ Paul Stanley"
10000 VDU23,143,255,255,255,255,255,255,255,2
55,23,144,255,129,155,181,181,177,191,255,23,
145,240,240,240,240,240,240,240,240,23,146,15
,15,15,15,15,15,15,15:T$="":RETURN
10010 END
11000 DEF PROCCR(AC,BC,RC):MOVEAC-RC,BC:FORXC
=(AC-RC)TO(AC+RC)STEP4:YC=BC+SQR(RC^2-(XC-AC)
^2):DRAWXC,YC:NEXT:FORXC=(AC+RC)TO(AC-RC)STEP
-4:YC=BC-SQR(RC^2-(XC-AC)^2):DRAWXC,YC:NEXT:E
NDPROC