2000 REM ...... THIS IS FILE "HANG6.BAS"
2010
2020 !------------------------------------!
2030 ! IMPROVED HANGMAN GAME (05/27/81) !
2040 !------------------------------------!
2050 ! COPYRIGHT JAN 1983, BOB FOWLER
2090
2400 REM ...... FILLERS & BUFFERS
2410 MAP1 W$ ,S,50
2420 MAP1 STAR$ ,S,50,"**********************************************"
2430 MAP1 HYPHEN$,S,50,"----------------------------------------------"
2440 MAP1 SP$ ,S,50,SPACE(50)
2450 MAP1 BS$ ,S,50
2460 BS$="" : FOR I=1 TO 50 : BS$=BS$+CHR(8) : NEXT I
2490
2500 REM ...... DISPLAYS AND LISTS
2510 MAP1 ALPHABET$, S,26,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2520 MAP1 WRONG$ ,S,26
2530 MAP1 FREQUENCY$,S,26,"ETAISONHRDLUCMFWYPGVBKJQXZ"
2540 MAP1 CHOSEN$ ,S,26
2550 MAP1 THEWORD$ ,S,50
2560 MAP1 DWORD$ ,S,50
2570 MAP1 SCORE(10) ,F,6
2580 MTEAMS=4
2590
2600 REM ...... MAPS FOR WORD STORAGE
2620 NFW=25
2630 MAP1 WDATA(25)
2640 MAP2 WREC ,B,2
2650 MAP2 FWORD$,S,50
2660 MAP2 WRECO ,B,2
2670 MAP2 ORDER ,B,1
2680 MAP1 RAN'WORD$,S,16
2685 RECSIZ=16
2690
2800 REM ...... (RANDOM) WORD FILE PARAMETER RECORD MAPS
2820 MAP1 RECORD'ZERO
2830 MAP2 URECS,B,2
2840 MAP2 TBLOX,B,2
2850 MAP2 BPREC,B,2
2860 MAP2 INDEX,B,2
2890
2900 REM ...... INITIALIZE VARIABLES
2920 FOR I=1 TO TEAMS : SCORE(I)=0 : NEXT I
2940 GAME=0
2950 RANDOMIZE
2970
2980
2990
3000 REM ...... INTRODUCTIONS
3020 PRINT TAB(-1,0);
3030 PRINT "WELCOME TO HANGMAN --- VERSION 6"
3040 PRINT
3045 TEAMS:
3050 PRINT "PLEASE ENTER NUMBER OF PLAYERS : 1"; CHR(8);
3060 TEAMS=1
3070 INPUT "" TEAMS
3076 IF(TEAMS<1 OR TEAMS<>INT(TEAMS)) THEN ? "ERROR---BAD ENTRY" : GO TO TEAMS
3080 IF(TEAMS > MTEAMS) THEN ? "ERROR--- >"; MTEAMS; "TEAMS" : GO TO TEAMS
3090
3200 REM ...... LOOK UP "WORDS.DAT"
3220 LOOKUP "WORDS.DAT", THERE
3230 IF(THERE < 0) THEN GO TO RANDOM'FILE
3240 IF(THERE > 0) THEN GO TO SEQUENTIAL'FILE
3250 PRINT "ERROR---WORD FILE ('WORDS.DAT') NOT FOUND"
3260 GO TO END
3270
3280
3290
3500 RANDOM'FILE:
3520 OPEN #1, "WORDS.DAT", RANDOM, RECSIZ, RECNUM
3530 RECNUM=0
3540 READ #1, RECORD'ZERO
3550 CLOSE #1
3560 IF(BPREC <> RECSIZ) THEN ? "ERROR---BAD RECORD SIZE" : GO TO END
3570 NWORD=URECS-1
3575 IF(URECS=1) THEN ? "ERROR---WORD FILE EMPTY" : GO TO END
3580 NFW=1
3590
3600 RANDOM'PICK:
3620 OPEN #1, "WORDS.DAT", RANDOM, RECSIZ, RECNUM
3630 RECNUM=INT( RND(1)*(URECS-1.00001)+1 )
3640 READ #1, RAN'WORD$
3645 FWORD$(1)=RAN'WORD$
3650 CLOSE #1
3660 NW=0
3670 GO TO TITLE
3970
3980
3990
4000 SEQUENTIAL'FILE:
4050 NWORD=0
4060 OPEN #1, "WORDS.DAT", INPUT
4070 PRINT TAB(-1,7); "PLEASE WAIT WHILE I READ MY DICTIONARY .... 0";
4090
4100 WORD'SCAN:
4120 INPUT #1, W$
4130 IF(EOF(1)=1) THEN CLOSE #1 : GO TO SEQUENTIAL'PICK
4135 IF(NWORD/10=INT(NWORD/10)) THEN PRINT BS$[1,4]; NWORD USING "####";
4140 NWORD=NWORD+1
4150 GO TO WORD'SCAN
419