-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
167 lines (136 loc) · 12.5 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/*IIFE Satements
(function(){
'use strict';
*/
const words = ["RUMOR", "HAPPEN", "MATCH", "SAIL", "SICK", "FLOOR", "SUMMIT", "SHADOW", "CENSUS", "CHORUS", "LAUNCH", "ABBEY", "EJECT", "RESIST", "GUILT", "REPEAT", "DRAMA", "EASY", "MORSEL", "SWIPE", "EQUIP", "READER", "PRAY", "GRAVE", "CORD", "CHEEK", "FIGURE", "REBEL", "NATIVE", "RACK", "FADE", "BASKET", "REFORM", "HALL", "AREA", "ROOT", "BREEZE", "SHIFT", "CANE", "CASH", "HOUR", "GALAXY", "BREED", "STRAW", "OFFSET", "SPEECH", "APPEAR", "PORTER", "MOSQUE", "FLUSH", "SHEET", "WHIP", "FINGER", "SUITE", "GLARE", "BASE", "CATCH", "CHEQUE", "CRITIC", "CIRCLE", "BLOCK", "TALK", "SALAD", "BRONZE", "OCCUPY", "MORALE", "POLICY", "WEAK", "NARROW", "ESSAY", "KORAN", "DIRECT", "AWARE", "WORTH", "CHOOSE", "OUTER", "STAMP", "AGILE", "WEAVE", "CASE", "LIFT", "SHELL", "LIVER", "SAFARI", "LINEAR", "STAR", "MAKEUP", "SNACK", "SNOW", "COPE", "FAULT", "ALIVE", "IDEAL", "FOOT", "REDUCE", "SOLID", "INCH", "ARISE", "MASTER", "SIGH", "SHELF", "BRAKE", "ADMIRE", "LEADER", "TOOTH", "BITCH", "COACH", "DARE", "BEAM", "SELL", "CHANGE", "BROKEN", "EDGE", "ABSORB", "SIDE", "BASIN", "MESS", "CROWN", "EFFORT", "BURST", "SERIES", "UPSET", "BEARD", "LANE", "PALM", "WING", "TORCH", "HEAVEN", "YOUNG", "STAND", "POLISH", "PARDON", "MOUTH", "SPHERE", "CHARGE", "GRACE", "BACK", "WRITER", "BRIDGE", "EVEN", "RENT", "ENDURE", "STORY", "REMAIN", "GLOOM", "EXILE", "NEED", "REVISE", "PUNCH", "FUTURE", "DATE", "FOREST", "CRASH", "BALD", "COUP", "COMA", "SOAK", "JOINT", "BEGIN", "SCREEN", "APPLE", "WEIGHT", "YARD", "ORDER", "SERMON", "BIRD", "PITY", "EFFLUX", "MIRROR", "STROLL", "MENU", "TUBE", "GUEST", "TERMS", "REVEAL", "LONG", "SCRAP", "ROUGH", "LAKE", "SCORE", "SUMMER", "ORBIT", "SEEM", "WONDER", "BOLD", "THUMB", "ATTACK", "COFFIN", "SKETCH", "FORM", "TUMBLE", "HALF", "MEMBER", "BACON", "RUSH", "CASTLE", "POISON", "MAIL", "STEAM", "CORE", "SNAIL", "SELLER", "INVITE", "DISK", "READY", "REFER", "INDOOR", "KILL", "WEAPON", "HAUNT", "TRUE", "SLICE", "FAME", "EXTENT", "KNIFE", "PARTY", "MARGIN", "TRAY", "NUMBER", "MEDAL", "BOTTLE", "THROW", "CAFE", "DRIVER", "SOURCE", "COOK", "FRANK", "ABSENT", "UNIQUE", "BLAND", "JURY", "SOFA", "BUNDLE", "BRAG", "CLOCK", "DEBUT", "NUANCE", "AISLE", "STROKE", "WRAP", "REAL", "WOUND", "SLUMP", "FRIEND", "KICK", "POWDER", "CROUCH", "CHORD", "SHINE", "SMILE", "GARAGE", "NERVE", "MAYOR", "DEPART", "LOCK", "ORAL", "CLOSE", "CHOKE", "VIRTUE", "TIGER", "HONOR", "SOFT", "STABLE", "FINAL", "POUR", "SNAKE", "PRIZE", "DAMAGE", "DONOR", "LAND", "BOAT", "PATROL", "LIGHT", "PARK", "RING", "REVOKE", "FIELD", "METHOD", "WIDEN", "CHANCE", "REVIVE", "TILE", "WATCH", "PILLOW", "WAIST", "SPIT", "SPIRIT", "HOST", "DINNER", "DINE", "GOWN", "SLIP", "GIVE", "STILL", "ITEM", "HURL", "CANCER", "GUITAR", "SILK", "MOVING", "FENCE", "YEARN", "OPPOSE", "RANK", "GOAL", "LAWYER", "TURN", "REAR", "HOLE", "ASYLUM", "PLANT", "OUTPUT", "DETAIL", "SOAR", "ENTRY", "FULL", "SWIM", "FLEX", "DRAW", "HORN", "CURL", "HERD", "ROCK", "PLAN", "ZONE", "GROAN", "MONEY", "ADOPT", "EAUX", "SPACE", "DANGER", "TRACT", "RACISM", "MONTH", "STREAM", "SAMPLE", "KNOT", "OUTFIT", "DECIDE", "FAIR", "RUNNER", "PAIN", "BROWN", "SKATE", "DOME", "MINOR", "TEXT", "WANDER", "HEEL", "LEMON", "FIND", "BRAID", "GOLD", "DESIGN", "SEAL", "TITLE", "ABUSE", "BAKE", "KING", "MILE", "WINE", "VOICE", "STEEP", "TAKE", "CLUB", "JOCKEY", "SEIZE", "HOLD", "CENTER", "FILTER", "SHOWER", "BLUE", "BREAD", "ENEMY", "LEAN", "DRESS", "GRAVEL", "KNOW", "JACKET", "NAVY", "TONE", "EXACT", "ARCH", "STAKE", "LAST", "SLAP", "SPELL", "STITCH", "JEST", "TIPTOE", "GRAIN", "DECK", "FIRE", "TIRED", "FIGHT", "COMMON", "SOIL", "WILD", "SHIVER", "BILL", "BISHOP", "DAWN", "RICE", "BULB", "FREE", "DREAM", "EXCUSE", "CREDIT", "MISS", "MUSCLE", "OFFEND", "FINE", "CHEW", "COUSIN", "DULL", "ACID", "RIFLE", "CREW", "VENUS", "TRUCK", "REMIND", "TRACE", "EFFECT", "STUN", "DEBATE", "GLORY", "CROWD", "SLAM", "BARREL", "GRIEF", "STORE", "CHIN", "MERCY", "WALL", "PAWN", "DEBT", "LAYOUT", "VIDEO", "STEM", "COPY", "BELIEF", "SWEEP", "APPEAL", "ARMY", "HIKE", "ASSET", "BRAVE", "LIST", "THREAD", "DECADE", "NOBLE", "POLITE", "PILE", "FRAME", "FATE", "GRIP", "VIRUS", "PURE", "TIDY", "SODIUM", "HARBOR", "THIGH", "PUBLIC", "VIEW", "TAXI", "BAIT", "RIOT", "RIDGE", "TONGUE", "UTTER", "BUILD", "FUNNY", "SCENE", "TRIP", "MOVIE", "SCAN", "RITUAL", "PLANET", "SALE", "FARE", "OPTION", "JUST", "STUDY", "NOTE", "TYCOON", "PLEASE", "SURVEY", "ANKLE", "DOUBLE", "POEM", "ENJOY", "USEFUL", "DRUG", "THEFT", "HORSE", "PACK", "INSTAL", "FEAR", "QUOTA", "BOWEL", "COVER", "RAPE", "ARENA", "SPLIT", "ELITE", "ALLOW", "WAKE", "GRIND", "DOLL", "CRIME", "CRUEL", "REMARK", "DITCH", "INSURE", "CLUE", "FAVOR", "TOPPLE", "MOVE", "MEMORY", "SEED", "CHAOS", "X-RAY", "FOLLOW", "SWEAR", "GREET", "TACTIC", "COLUMN", "STYLE", "SMASH", "LEND", "TAIL", "COFFEE", "PRESS", "WIRE", "LEAD", "BENCH", "BELT", "PENNY", "OBESE", "TASTE", "POLL", "QUOTE", "EXPAND", "MASK", "GOLF", "IGNITE", "WORM", "DRAGON", "TASTY", "STICKY", "IVORY", "SPOIL", "STRIKE", "PEPPER", "PILOT", "IRON", "GENE", "REACH", "SIGHT", "BOTHER", "TWIN", "HEAT", "FILE", "JELLY", "ANGLE", "DESIRE", "AMBER", "NECK", "VAIN", "FLOAT", "BOOM", "STING", "WINTER", "FACADE", "EQUAL", "DOZEN", "VALLEY", "TELL", "WANT", "FAIRY", "CARRY", "BITE", "STRING", "SIZE", "JUMP", "RIDE", "REWARD", "SITE", "TEACH", "HELP", "IGNORE", "GAFFE", "DIET", "RATE", "ANIMAL", "CAMERA", "MARBLE", "JAIL", "NOVEL", "HORROR", "HERB", "BANNER", "REMEDY", "MOLD", "DESK", "ASPECT", "LUNG", "HERO", "COURSE", "FLEET", "ANGEL", "BRING", "BANANA", "SCRIPT", "ROOM", "ANSWER", "AWARD", "TREAD", "IMPACT", "FORMAL", "SOLVE", "PUMP", "SCREAM", "NATURE", "THEME", "TUMOUR", "SWEAT", "FERRY", "IDEA", "TRUST", "VISUAL", "FEAST", "MISERY", "LOOSE", "KIDNAP", "LOBBY", "RELATE", "PEACE", "ONION", "EXEMPT", "COUNT", "BRANCH", "TEST", "HARASS", "BOLT", "FLAG", "BRAND", "PANEL", "DROWN", "BLESS", "MARK", "LAYER", "VOLUME", "PLAYER", "DASH", "PRINCE", "LOCATE", "COTTON", "ZERO", "LUNCH", "MATURE", "BIND", "CARE", "LATE", "DEPUTY", "RIDER", "DROP", "BASIC", "TICKET", "WAIT", "DEEP", "STORM", "SHORT", "WEAR", "BANISH", "ROBOT", "MAKE", "EARWAX", "REVIEW", "SLEEVE", "THESIS", "BLACK", "BELL", "CLEAR", "FLOCK", "MIND", "COLONY", "MARKET", "LOSS", "HEROIN", "PATENT", "LOVE", "SNUB", "PRISON", "REFUND", "PETTY", "PART", "CARD", "ISSUE", "DRAIN", "DEADLY", "TEMPT", "FROWN", "GOAT", "TERM", "DRAG", "VOTE", "EAST", "TURKEY", "FLOW", "LAMB", "CYCLE", "BUFFET", "PROVE", "MOMENT", "SHOW", "WAGE", "COWER", "HAMMER", "HEAVY", "SPIN", "DRAWER", "PANIC", "SALT", "INSIDE", "PULL", "SHRINK", "SHORTS", "SENIOR", "SQUARE", "LILY", "MEET", "DAIRY", "HAND", "CANVAS", "HELL", "POOR", "EMBRYO", "MEAL", "YEAR", "BUDGET", "VIABLE", "NOTICE", "MARSH", "PUNISH", "SHAME", "RUNG", "WRIST", "NOSE", "ESCAPE", "ELECT", "SHAVE", "SMOKE", "FILL", "TRAIN", "LOST", "CHEAP", "SHOP", "MUTTER", "FIBRE", "FAINT", "VAGUE", "ARREST", "STOOL", "THAW", "COLON", "HIGH", "FAMILY", "INJURY", "WORK", "ENFIX", "BIBLE", "FRUIT", "PERSON", "CRISIS", "PICK", "STOCK", "BOND", "URGE", "FRESH", "PRIDE", "FAIL", "JEWEL", "BLOODY", "VIRGIN", "CHALK", "AXIS", "BALLET", "LASER", "EXTEND", "DESERT", "CHEAT", "MARINE", "SLAB", "PREACH", "FRONT", "LADDER", "TOAST", "SAFETY", "FEEL", "WOMAN", "MUGGY", "RISE", "SKIP", "ECHO", "STAGE", "CHEST", "FLIGHT", "TEASE", "KIDNEY", "FORBID", "BRICK", "ORIGIN", "PREY", "COLOR", "DRAFT", "TEAM", "CHEESE", "AGREE", "JUNIOR", "CARPET", "MAZE", "CITY", "SHOT", "SUFFER", "LACE", "CINEMA", "BASIS", "PASTEL", "LARGE", "ACQUIT", "AFFORD", "ORGAN", "HAIR", "POWER", "CHASE", "MERIT", "ELBOW", "ENERGY", "PLACE", "VELVET", "EXOTIC", "GROWTH", "PROUD", "THIN", "PAIR", "FISH", "LODGE", "THANK", "LABOUR", "SLIME", "GAIN", "BELLY", "GARLIC", "CLIMB", "LATEST", "TIME", "EAGLE", "WIFE", "PAUSE", "CHOP", "KETTLE", "GREEN", "ALBUM", "SWELL", "MATRIX", "RICH", "WOOD", "SINK", "SPRING", "WORRY", "TICK", "VOTER", "FIST", "PLEAD", "RELIEF", "SLANT", "BIKE", "BRUSH", "FEVER", "DOOR", "CABLE", "PROFIT", "GLASS", "PATH", "DEAD", "CORPSE", "CREED", "BANG", "SCRAPE", "MINUTE", "THICK", "JUNGLE", "MORAL", "BRIDE", "HANDY", "GIANT", "DEATH", "START", "SUNDAY", "SQUASH", "TUNE", "CLEAN", "GOSSIP", "CHAIN", "SACRED", "FATHER", "SALMON", "TENSE", "HALT", "GUTTER", "MIDDLE", "WATERMELON", "HANGMAN", "TELEVISION"];
let wordindex = Math.floor((Math.random() * words.length));
var word = words[wordindex];
var wordcons = word;
var wordvow = word;
wordcons = wordcons.replace(/[AEIOU]/g, '')
wordvow = wordvow.replace(/[B-DF-HJ-NP-TV-Z]/g, '_')
function startNew() {
document.getElementById("reveal").innerHTML = wordvow;
drawCanvas();
}
var letters = findUnique(wordcons);
var lives = letters.length;
function findUnique(str) {
// The variable that contains the unique values
let uniq = "";
for (let i = 0; i < str.length; i++) {
// Checking if the uniq contains the character
if (uniq.includes(str[i]) === false) {
// If the character not present in uniq
// Concatenate the character with uniq
uniq += str[i];
}
}
return uniq;
}
function textClear() {
let text = document.getElementById("fname").value;
text = text.toUpperCase();
document.getElementById("fname").value = "";
checkText(text);
}
function checkText(s) {
var temp = 0; //for hanging
if (s == word) {
finalPrompt(true);
}
else {
finalPrompt(false);
lives -= 1;
let randindex = Math.floor((Math.random() * letters.length));
l = letters[randindex];
letters = letters.replace(l, '');
hangMan(temp++);
reveal(l);
}
printHangman();
}
function reveal(l) {
let str = document.getElementById("reveal").innerHTML;
let temp = word;
while (temp.indexOf(l) != -1) {
str = replaceAt(str, word.indexOf(temp) + temp.indexOf(l), l);
temp = temp.substr(temp.indexOf(l) + 1, temp.length + 2);
}
document.getElementById("reveal").innerHTML = str;
}
function replaceAt(str, index, replacement) {
return str.substr(0, index) + replacement + str.substr(index + replacement.length);
}
function finalPrompt(bool) {
if (bool) {
document.getElementById("para").innerHTML = "<hr width=40% align=\"left\">You guessed it RIGHT! ";
document.getElementById("prompt").innerHTML = "<br>[<i>whispers:</i> lowkey genius]";
document.getElementById("prompt").style.color = "green";
document.getElementById("para").style.display = "inline";
document.getElementById("prompt").style.display = "inline";
document.getElementById("check").disabled = "true";
}
else {
document.getElementById("prompt").innerHTML = "WRONG!";
document.getElementById("prompt").style.color = "red";
document.getElementById("para").style.display = "inline";
document.getElementById("prompt").style.display = "inline";
}
}
function printHangman() {
if (lives > 0) {
}
else {
document.getElementById("check").disabled = "true";
document.getElementById("para").innerHTML = "<hr width=40% align=\"left\">You have lost all lives! ";
document.getElementById("prompt").innerHTML = "<br>[<i>whispers:</i> such a loser]";
document.getElementById("prompt").style.color = "red";
document.getElementById("para").style.display = "inline";
document.getElementById("prompt").style.display = "inline";
}
}
function drawCanvas(){
var canvas = document.getElementById("canvas");
if(canvas.getContext){
var asd = canvas.getContext("2d");
asd.beginPath();
asd.arc(120,155,25,0,Math.PI*2,true); //circle
asd.moveTo(120,180);
asd.lineTo(120,230);
asd.lineTo(105,265);
asd.moveTo(120,230);
asd.lineTo(135,265);
asd.moveTo(120,200);
asd.lineTo(135,220);
asd.moveTo(120,200);
asd.lineTo(105,220);
asd.stroke();
}
else console.log("Canvas Error: " +canvas.getContext);
}
function hangMan(temp){
var diff = lives-temp;
var canvas = document.getElementById("canvas");
if(canvas.getContext){
var asd = canvas.getContext("2d");
switch(diff){
case 3: asd.fillRect(171,280,50,10);
break;
case 2: asd.fillRect(190,30,15,250);
break;
case 1: asd.fillRect(90,30,140,15);
break;
case 0: asd.beginPath();
asd.moveTo(120,45);
asd.lineTo(120,130);
asd.stroke();
break;
default: console.log("Bad Case Input");
}
}
else console.log("Canvas Error: " + canvas.getContext);
}
/*
})();
*/