REM: Richard Weston's Hangman, 25 April 2003 (50 years of DNA today!) MODE8:OFF : DIM word$(501),A$(20),B$(20),letter$(26),bx(26) PROCcountwords correct=0 : PROCshufflewords : REM: ******** Game Loop ********** FOR n= 1 TO nwords PRINTTAB(50,1)"Game : ";n;" / ";nwords PRINTTAB(50,2)"Score : ";correct;" / ";n-1 word$=word$(n) PROChangman NEXT n REM: ***************************** END : : DEF PROChangman score=0 initlives=11 lives=initlives PROCtitle PROCalphabetsetup : PROCword_arrays : PROCkeys : IF n=1 THEN PROCinstruct : finished=FALSE REPEAT PROCmain UNTIL finished=TRUE : PROCend ENDPROC : DEF PROCinstruct caption$ = "How to play" message$ = "Click on the letter boxes" SYS "MessageBox", @hwnd%, message$, caption$, 64 ENDPROC : DEF PROCmain PROClivesdisplay PROCdisplay PROCalphclick already=FALSE scored=FALSE FOR i= 1 TO L PROCtest(i) NEXT i IF scored=FALSE THEN lives-=1 SOUND0,-15,3,1 ENDIF : PROClivesdisplay PROCalphabstring PROCcheckfinished delay=INKEY(50) ENDPROC : DEF PROCcountwords REPEAT i=i+1 READ word$(i) UNTIL word$(i)="*" nwords=i-1 ENDPROC : DEF PROCshufflewords FOR i = nwords TO 2 STEP -1 x=RND(i) temp$=word$(x) word$(x)=word$(i) word$(i)=temp$ NEXT i ENDPROC : DEF PROCtitle COLOUR10 PRINTTAB(3,1);"H M A N" PRINTTAB(3,2)"A [" PRINTTAB(3,3)"N ^" PRINTTAB(3,4)"G" ENDPROC : DEF PROCalphabetsetup alph$="" FOR i=1 TO 26 letter$(i)=CHR$(96+i) alph$=alph$+letter$(i)+" " NEXT i COLOUR1 PROCcentre(13,alph$) ENDPROC : DEFPROClivesdisplay c=lives IF c=8 THEN c=12 IF c=1 THEN c=8 COLOURc lives$=STRING$(lives,"") blank$=STRING$(66," ") PROCcentre(20,blank$) PROCcentre(20,lives$) ENDPROC : DEFPROCcentre(line,a$) len=LEN(a$) PRINTTAB(39-(len/2),line)a$ ENDPROC : DEF PROCdisplay COLOUR15 d$="" FOR i=1 TO L d$=d$+B$(i)+" " NEXT i PROCcentre(10,d$) ENDPROC : DEF PROCword_arrays L=LEN(word$) FOR i= 1 TO L A$(i)=MID$(word$,i,1) B$(i)="*" NEXT i ENDPROC : DEF PROCalphabstring FOR i=1 TO 26 IF letter$(i)=G$ THEN letter$(i)="." ENDIF NEXT i alph$="" FOR j=1 TO 26 alph$=alph$+letter$(j)+" " NEXT j COLOUR1 blank$=STRING$(52," ") PROCcentre(13,blank$) PROCcentre(13,alph$) ENDPROC : DEF PROCend PROCdisplay COLOUR15 PRINTTAB(30,24)"The word was ";word$ COLOUR9 PROCcentre(28,"Press for another word") G=GET CLS ENDPROC : DEF PROCbox(x,y,a,b) RECTANGLE x,y,a,b ENDPROC : DEF PROCmouse MOUSE x,y,btn FOR i=1 TO 26 IF btn=4 THEN IF x>bx(i) THEN IF xby THEN IF y