'=========================================================================== ' Subject: FANCY HANGMAN GAME Date: 07-04-97 (09:26) ' Author: Tom Watson Code: QB, QBasic, PDS ' Origin: awatson@wctc.net Packet: GAMES.ABC '=========================================================================== ' ' Note: When you win a game, you get a free turn on your next game if your ' first guess is wrong. ' DEFINT A-Z DECLARE SUB tletter (wletter$) DECLARE SUB start () DECLARE SUB lost () DECLARE SUB calculate () DECLARE SUB ending () DECLARE SUB endscreen () DECLARE FUNCTION test () CLEAR : RANDOMIZE TIMER: SCREEN 13: CLS : OPTION BASE 1 CONST numberofwords = 650 '$STATIC DIM SHARED already AS INTEGER DIM SHARED nwrong AS INTEGER DIM SHARED curword AS STRING DIM SHARED length AS INTEGER DIM SHARED curletter AS STRING * 1 DIM SHARED letters(20) AS STRING DIM SHARED words(numberofwords) AS STRING CLS COLOR 15 LOCATE 2, 1 PRINT " LOADING WORDS . . ." FOR p = 1 TO numberofwords READ words(p) NEXT p ON ERROR GOTO ohno already = 0 begin: start GOSUB bgnd GOSUB drawboard FOR c = 1 TO UBOUND(letters) letters(c) = "" NEXT c curword = "" length = 0 curletter = "" nwrong = 0 curword = words(INT(RND(1) * numberofwords + 1)): length = LEN(curword) COLOR 15 LOCATE 18 PRINT " "; 'REDIM letters(length) AS STRING FOR l = 1 TO length letters(l) = MID$(curword, l, 1) PRINT "__ "; NEXT l LOCATE 20 PRINT " ENTER YOUR GUESS FOR A LETTER" FOR l = 1 TO 11 IF test = 1 THEN ending: GOTO begin DO: curletter = UCASE$(INKEY$): LOOP WHILE ASC(curletter) < 65 OR ASC(curletter) > 90 IF test = 1 THEN ending: GOTO begin FOR isit = 1 TO length IF test = 1 THEN ending: GOTO begin IF curletter = letters(isit) THEN SOUND 400, 5: LOCATE 18, isit * 4 - 2: PRINT curletter + " ": plo = 1: GOTO 20 IF test = 1 THEN ending: GOTO begin 20 NEXT isit IF test = 1 THEN ending: GOTO begin tletter curletter curletter = "" IF test = 1 THEN ending: GOTO begin IF plo = 0 THEN SOUND 100, 5: nwrong = nwrong + 1: calculate IF plo = 1 THEN l = l - 1 IF test = 1 THEN ending: GOTO begin plo = 0 IF test = 1 THEN ending: GOTO begin NEXT l lost GOTO begin END DATA "JAZZ", "DOG", "CAT", "PICTURE", "INVENT", "ZERO", "YELLOW", "LOOP", "TYPE", "COMPUTER" DATA "QBASIC", "ROPE", "AMAZING", "TERRIBLE", "BOOK", "ESCAPE", "SKIP", "GIRAFFE", "RAGTIME", "PAINT" DATA "GALLON", "COMMA", "FORGE", "DISKETTE", "TEST", "SCIENCE", "MILL", "SHOULD", "HELLO", "MAT" DATA "PATENT", "VAST", "SCROLL", "OPEN", "LOCATION", "WINDOW", "PRINTER", "BUTTON", "PLAY", "THE" DATA "FOOL", "POST" , "DOLL", "MONEY", "ORANGE", "LEND", "MORE", "BUBBLE", "MUSIC", "PEPPER" DATA "MAN", "TELEPHONE","CLOWN","BASS", "GOLD", "RUBY", "CLEAN", "IMAGINE", "UMBRELLA","FLAT" DATA "SAIL", "JUST", "TRIAL", "PARTY", "PIN", "SOUP", "EAT", "SCHOOL", "ROCK", "PREDICT" DATA "ONE", "WASTE", "WORLD", "MORNING", "NIGHT", "MONKEY", "YESTERDAY","TIME", "FAKE", "SING" DATA "THROUGH","BUG", "TWO", "YOU", "MEN", "BELIEVE", "ENEMY", "NACHOS", "CHIP", "SUN" DATA "FAITH", "TIME", "FIFTY", "YEAR", "NURSE", "WHEEL", "BOY", "PRACTICE","PEST", "PAT" DATA "SIT", "STAND", "SANDWICH","LAMP", "DOZEN", "CART", "PROUD", "MAGIC", "SNOW", "BELT" DATA "SONG", "SELFISH","LOVE", "LOG", "TWIG", "POTATO", "DRIVE", "TOP", "MUG", "STOP" DATA "PIT", "TAN", "SAT", "PIANO" , "BOOM", "LISTEN", "REMEMBER","TOY", "MILK", "TORNADO" DATA "HAM", "PEANUT","MELON", "MOOSE", "WEASEL", "LONG", "COOL", "BLACK", "DRESS", "TARIFF" DATA "PIANO", "BEAUTIFUL","DIGITAL","MYSTERY","GHOST", "CUP", "HOUSE", "QUOTE", "VOLUME", "LOUD" DATA "BASKET", "BOWL", "PRETTY", "WOMAN", "MAN", "KIND", "TRUTH", "MERCY", "SUCH", "SHIRT" DATA "SILENT", "TONIGHT","WALK", "CRY", "AWAY", "HOME", "TOMORROW","BACK", "HORSE", "COLUMN" DATA "FOOT", "WASH", "PAIN", "RAIN", "SHAME", "SISTER", "HELP", "LUCKY", "ROAST", "ROAD" DATA "HALL", "NAIL", "PIG", "FLOWERS", "EYE", "SHOULDER","COOKIE", "CURRENT", "SHY", "KINGDOM" DATA "STATIC", "DYNAMIC","TWIST", "SHOUT", "MINUTE", "NIGHT", "MARCH", "WONDERFUL","MOTHER", "URBAN" DATA "MACHINE","RURAL", "ALMANAC", "ISLAND", "MUSTACHE", "COMPACT", "POTTERY", "MAP", "TIP", "EAR" DATA "BREAK", "TWILIGHT","WAS", "STRONG", "SURE", "OUT", "GROUND", "BIRD", "HOLD", "LEAF" DATA "HURT", "COMFORT","SUNSHINE","GIVE", "BEG", "DOCK", "SPELL", "NEVER", "GREEN", "BLOOD" DATA "BEEP", "KEY", "LONG", "HAPPY", "CAMERA", "DUCK", "CLOCK", "WIFE", "CITY", "EVENING" DATA "SHIP", "REPEAT", "TIDE", "GLASS", "FORK", "BUNNY", "CHEMISTRY","TIN", "BONE", "WASP" DATA "LODGE", "QUESTION","ALGEBRA","DAISY", "CANDY", "WEDDING", "GARDEN", "POLE", "MITTEN", "LIP" DATA "TRUCK", "COUNTY", "CHIN", "LIBRARY", "EQUIPMENT","HAMMER", "NEEDLE", "KNIFE", "MEMBER", "BOIL" DATA "BLACK", "IMMENSE", "BASS", "TENOR", "SEW", "PEOPLE", "RANGE", "SPACE", "ROBOT", "BRAG" DATA "MARGARINE","WISH", "FRUIT", "ABSTRACT","SHOW", "SCUM", "TOWN", "TIGER", "LION", "CLAW" DATA "FLOOR", "CAVE", "BEFORE", "ERASER", "LETTER", "CRUMB", "BOG", "GRAMMAR","SPORT", "KANGAROO" DATA "SLURP", "MESS", "TRADITION","WET", "CLUE", "CRAYON", "SURF", "MOUNTAIN","HILL", "SALT" DATA "PLANET", "WAVE", "TUNE", "MIX", "MURDER", "HEART", "GRIN", "WRITE", "OMEN", "SHEET" DATA "THANK", "MAKE", "CANOE", "TUB", "CLEAN", "PRESIDENT","KNEE", "PRETEND", "ROCK", "TRAVEL" DATA "GARAGE", "SMOKE", "FIRST", "SECOND", "MOST", "SENATOR", "COMIC", "LAUGH", "OPERATION","STOVE" DATA "STINK", "RIVER", "TRAIN", "PAGE", "PHYSICS", "GRUNT", "GASP", "PORK", "CLUTCH", "SCISSORS" DATA "JELLY", "FLUFF", "ODYSSEY","WORM", "GREASE", "JEOPARDY","GUILTY", "DIRECT", "DANCE", "SQUIRREL" DATA "DATA", "APRIL", "FLUTE", "VACATION","MONARCH", "BURGLAR", "CONE", "GUM", "SET", "OAK" DATA "PRETZEL","WALNUT", "WREATH", "UNCLE", "COUSIN", "AUTHOR", "ORCHESTRA","BET", "STITCH", "MAPLE" DATA "CRACKER","SOUP", "BAKERY", "TEACUP", "JOKE", "NOVEL", "CINEMA", "MOVIE", "THREAD", "WEAR" DATA "TENNIS", "GRASS", "HEX", "VOODOO", "SPECIAL", "COLLEGE", "BREAD", "SPICY", "MAGAZINE", "HAT" DATA "SCORPION","MAROON", "DOPE", "KEY", "BUSH", "BORROW", "SCARLET", "MUSTARD", "PEACOCK", "WHITE" DATA "NAPKIN", "PLEDGE", "STEREO", "DIAMOND", "SIMMER", "OFFICE", "SOLDIER", "CORPORAL","PRISTINE", "BARITONE" DATA "ENGAGE", "ATTEMPT", "HAZARD", "MUSHROOM","PASTE", "GLUE", "HEN", "CRAZY", "HOT", "DESTROY" DATA "JOY", "CRAP", "LEG", "MOUTH", "FOOT", "FENCE", "ARRIVE", "ESCHEW", "CATTLE", "CORN" DATA "FERN", "POT", "WET", "SORT", "PANDA", "RAFT", "BOX", "FOX", "GET", "WIN" DATA "AMAZE", "DOT", "COMPLAIN","PET", "BLUE", "FISH", "SEE", "SIGHT", "DESK", "HANDLE" DATA "PLY", "GYPSY", "YESTERDAY","FLY", "DROP", "HURL", "SHELF", "ANGER", "SOLACE", "DESPAIR" DATA "BULB", "CASTLE", "OTHER", "APRON", "SPRING", "YAWN", "ZIPPER", "CONCERT", "CARPET", "WONDER" DATA "CAROUSEL","VILLAGE","CAP", "WHY", "JULY", "TEMPO", "TEXT", "SWIM", "DULL", "STICK" DATA "GLOBE", "POSTER", "REPAIR", "LEISURE","ATLAS", "HUNK", "PRELUDE", "SONATA", "JUSTICE", "SUPREME" DATA "STRANGE", "MUSICAL","ELEPHANT", "COCKROACH","YOKE", "PRESSURE","DEVIL", "VENOM", "INFINITY", "PIGEON" DATA "ADVENTURE","EXTRA", "NOWHERE", "PORTABLE", "ELICIT","IGNEOUS", "SEDIMENT", "MUD", "TAXI", "ANTENNA" DATA "SPECTRUM", "AND", "SQUARE", "ANGLE", "TUMBLE","BASSOON", "SWITCH", "MORE", "POP", "SHADE" DATA "TOILET", "GASOLINE","INK", "JET", "CABLE", "DRAW", "EYEBROW", "DIAL", "SIGN", "PURSUE" DATA "TORN", "FIX", "FINE", "WAR", "FIN", "BEND", "BIND", "BERRY", "TAR", "CHECK" DATA "MINIATURE","HOUSE", "FUN", "BED", "MAD", "GOT", "LEVEL", "EXPONENT","WON", "WIN" DATA "EAGER", "ALGEBRA", "PARK", "ICE", "IRE", "VAT", "MIST", "FORGET", "OIL", "FLOAT" DATA "DAM", "CHIPMONK","GUESS", "NIP", "GUY", "SMILE", "FRIEND", "ODD", "SHOP", "SERIOUS" DATA "RING", "TICK", "POPCORN", "PLEA", "PLAZA", "RAPID", "OPAQUE", "CHEDDAR", "HOPE", "NAP" DATA "SUBLIME", "RIDICULE","PAR", "SCAR", "WRINKLE","FICTION","POEM", "SIN", "ASK", "SNAP" DATA "CREDIT", "RHAPSODY","ETUDE", "APEX", "HUSTLE","FATHER", "SURPRISE", "COW", "BULL", "WINK" DATA "PERTAIN", "TORMENT", "EXCUSE", "FINGER", "SLOW", "SOUL", "RHYTHM", "MOTOR", "POCKET", "LARCENY" DATA "CHARM", "TROPICAL", "CHASE", "BENEFIT", "CROOKED","HOG", "TOURIST", "CLAN", "SICK", "INSECT" DATA "MARSUPIAL","ISTHMUS", "LITTLE", "ART", "BRUSH", "TOOTH", "CABINET", "ROOM", "SCARE", "OPINION" DATA "BETWEEN", "REAL", "GLORY", "GENTLE", "ASSUME", "SON", "TAKE", "GROOVE", "JEANS", "MILD" bgnd: 'background DRAW "BM175,0 C44 R143 D102 L143 U102 BF5" DRAW "P44,44 BH5" DRAW "L170 D102 R170 U5 L165 U92 R165 BL1 BU1" DRAW "P44,44" 'scaffold DRAW "C8 BM220,95" DRAW "R76 L20 U90 L30 D8 " RETURN drawboard: COLOR 198 LOCATE 4, 6 PRINT "A B C D E F G" LOCATE 6, 6 PRINT "H I J K L M N" LOCATE 8, 6 PRINT "O P Q R S T U" LOCATE 10, 6 PRINT "V W X Y Z" COLOR 15 RETURN ohno: CLS COLOR 15 PRINT PRINT " AN ERROR HAS OCCURED." PRINT " PRESS ANY KEY TO LEAVE." SLEEP END SUB calculate SELECT CASE nwrong CASE 1 CIRCLE STEP(0, 5), 10, 122, , , 1.5 DRAW "P66,122" SLEEP EXIT SUB CASE 2 CIRCLE STEP(0, 28), 18, 122, , , 1.9 DRAW "P55,122" SLEEP EXIT SUB CASE 3 DRAW "BD15 R6 C122" DRAW "D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 G4 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 BR3" DRAW "P55,122 BL3 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD1" SLEEP EXIT SUB CASE 4 DRAW "C200 E6 R1 F1 D1 G6 H2 BR1" DRAW "P200,200" SLEEP EXIT SUB CASE 5 DRAW "BL16 BU27" DRAW "C122 G18 F4 E18 BL2 BG2" DRAW "P55,122 BE2 BR2 BG18 C200" SLEEP EXIT SUB CASE 6 DRAW "H6 L1 G1 D1 F6 E2 BL2" DRAW "P200,200" SLEEP EXIT SUB CASE 7 DRAW "BU49 BR17" DRAW "C122 G13 H10 E3 F7 E11 R3 BG4" DRAW "P55,122" SLEEP EXIT SUB CASE 8 DRAW "BL17" DRAW "C122 U3 L1 G2 H4 G2 F6 E4 BG2 BL1" DRAW "P66,122 BR35 BD1" SLEEP EXIT SUB CASE 9 DRAW "C122 R1 D4 R1 D5 R1 D4 R1 D4 R1 D3 R3 U3 L1 U4 L1 U4 L1 U5 L1 U4 L1 U5 L5 BR2 BD2" DRAW "P55,122" SLEEP EXIT SUB CASE 10 DRAW "BR8 BD23" DRAW "C122 F2 D1 L2 D4 L3 U6 R5 BD1 BL2" DRAW "P66,122 BU41 BL9" SLEEP EXIT SUB CASE 11 DRAW "C122 H1 L1 H2 L5 G1 L1 G1 L1 BE2 BR1" DRAW "P232,122" CIRCLE STEP(1, 5), 1, 232 DRAW "P232,232" CIRCLE STEP(4, 0), 1, 232 DRAW "P232,232" CIRCLE STEP(-2, 5), 1, 39 CASE IS > 11: lost SLEEP END SELECT END SUB SUB ending LOCATE 21: PRINT " CORRECT! THE WORD WAS " + curword + ". " LINE (175, 0)-(310, 100), 44, BF DRAW "BM175,0 C44 R143 D102 L143 U102 BF5" DRAW "P44,44 BH5" DRAW "L170 D102 R170 U5 L165 U92 R165 BL1 BU1" DRAW "P44,44" DRAW "C8 BM220,95" DRAW "R76 L20 U90 L30 D8 " SLEEP 1 PLAY "MNT200O3L4L2CL4D.L8CC.L16CL8C.L16CL4CL8E.L16DL8D.L16CL8C.L16CL2C" SLEEP END SUB SUB start SCREEN 13 CLS bgnd2: 'background DRAW "BM175,0 C44 R143 D102 L143 U102 BF5" DRAW "P44,44 BH5" DRAW "L170 D102 R170 U5 L165 U92 R165 BL1 BU1" DRAW "P44,44" DRAW "BD1 BR1 BD102" DRAW "C55 L170 D60 R313 U60 L143 BD5 L165 D50 R303 U50 L138 BU1" DRAW "P55,55" COLOR 36 LOCATE 3, 6 PRINT "HANGMAN" COLOR 37 LOCATE 4, 7 PRINT "HANGMAN" COLOR 38 LOCATE 5, 8 PRINT "HANGMAN" COLOR 39 LOCATE 7, 6 PRINT "H A N G M A N" COLOR 38 LOCATE 9, 10 PRINT "HANGMAN" COLOR 37 LOCATE 10, 11 PRINT "HANGMAN" COLOR 36 LOCATE 11, 12 PRINT "HANGMAN" COLOR 39 LOCATE 23 PRINT " H A N G M A N B Y C L O C K E R" 'scaffold DRAW "C8 BM220,95" DRAW "R76 L20 U90 L30 D8 " 'head CIRCLE STEP(0, 5), 10, 122, , , 1.5 DRAW "P66,122" 'body CIRCLE STEP(0, 28), 18, 122, , , 1.9 DRAW "P55,122" 'right leg DRAW "BD15 R6 C122" DRAW "D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 D3 R1 G4 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 L1 U3 BR3" DRAW "P55,122 BL3 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD3 BR1 BD1" 'RIGHT FOOT DRAW "C200 E6 R1 F1 D1 G6 H2 BR1" DRAW "P200,200" 'left leg DRAW "BL16 BU27" DRAW "C122 G18 F4 E18 BL2 BG2" DRAW "P55,122 BE2 BR2 BG18 C200" 'left foot DRAW "H6 L1 G1 D1 F6 E2 BL2" DRAW "P200,200" 'left arm DRAW "BU49 BR17" DRAW "C122 G13 H10 E3 F7 E11 R3 BG4" DRAW "P55,122" 'left hand DRAW "BL17" DRAW "C122 U3 L1 G2 H4 G2 F6 E4 BG2 BL1" DRAW "P66,122 BR35 BD1" 'right arm DRAW "C122 R1 D4 R1 D5 R1 D4 R1 D4 R1 D3 R3 U3 L1 U4 L1 U4 L1 U5 L1 U4 L1 U5 L5 BR2 BD2" DRAW "P55,122" 'right hand DRAW "BR8 BD23" DRAW "C122 F2 D1 L2 D4 L3 U6 R5 BD1 BL2" DRAW "P66,122 BU41 BL9" 'features DRAW "C122 H1 L1 H2 L5 G1 L1 G1 L1 BE2 BR1" DRAW "P232,122" CIRCLE STEP(1, 5), 1, 232 DRAW "P232,232" CIRCLE STEP(4, 0), 1, 232 DRAW "P232,232" CIRCLE STEP(-2, 5), 1, 39 COLOR 38 LOCATE 16, 17 PRINT "PRESS:" LOCATE 18, 4 PRINT "1 TO PLAY THE GAME AND 2 TO QUIT" IF already = 0 THEN PLAY "MNT150L8O2AL4>DL8DDEFL4EL8DL4DL8DEFGAA+L2AP8L8AL4>D L8DDCDP8L8 95 AND SCREEN(18, 7) <> 95 AND SCREEN(18, 11) <> 95 AND SCREEN(18, 15) <> 95 AND SCREEN(18, 19) <> 95 AND SCREEN(18, 23) <> 95 AND SCREEN(18, 27) <> 95 AND SCREEN(18, 31) <> 95 AND SCREEN(18, 35) <> 95 AND SCREEN(18, 39) <> 95 _ THEN test = 1 END FUNCTION SUB tletter (wletter$) COLOR 39 SELECT CASE wletter$ CASE "A" LOCATE 4, 6 PRINT "A" CASE "B" LOCATE 4, 8 PRINT "B" CASE "C" LOCATE 4, 10 PRINT "C" CASE "D" LOCATE 4, 12 PRINT "D" CASE "E" LOCATE 4, 14 PRINT "E" CASE "F" LOCATE 4, 16 PRINT "F" CASE "G" LOCATE 4, 18 PRINT "G" CASE "H" LOCATE 6, 6 PRINT "H" CASE "I" LOCATE 6, 8 PRINT "I" CASE "J" LOCATE 6, 10 PRINT "J" CASE "K" LOCATE 6, 12 PRINT "K" CASE "L" LOCATE 6, 14 PRINT "L" CASE "M" LOCATE 6, 16 PRINT "M" CASE "N" LOCATE 6, 18 PRINT "N" CASE "O" LOCATE 8, 6 PRINT "O" CASE "P" LOCATE 8, 8 PRINT "P" CASE "Q" LOCATE 8, 10 PRINT "Q" CASE "R" LOCATE 8, 12 PRINT "R" CASE "S" LOCATE 8, 14 PRINT "S" CASE "T" LOCATE 8, 16 PRINT "T" CASE "U" LOCATE 8, 18 PRINT "U" CASE "V" LOCATE 10, 6 PRINT "V" CASE "W" LOCATE 10, 8 PRINT "W" CASE "X" LOCATE 10, 10 PRINT "X" CASE "Y" LOCATE 10, 12 PRINT "Y" CASE "Z" LOCATE 10, 14 PRINT "Z" END SELECT COLOR 15 END SUB