Inspired by Games like MasterMnd and Bagels, the New York Times has popularized a this guessing puzzle
Here is a listing of the console version:
Here we will start with the wordle class that can be used for the Console version as well as a GUI version.
import java.awt.Color; public class Wordel { private String[] words ={"ABACK", "ABASE", "ABATE", "ABBEY", "ABOUT", "ABOVE", "ABYSS", "ACRID", "ACUTE", "ADMIT", "ADOBE", "ADOPT", "ADORE", "ADULT", "AGAIN", "AGAPE", "AGATE", "AGENT", "AGILE", "AGLOW", "AGONY", "AGREE", "AHEAD", "ALBUM", "ALIEN", "ALIKE", "ALLOW", "ALOFT", "ALONE", "ALOUD", "ALPHA", "ALTAR", "ALTER", "AMBER", "AMISS", "AMPLE", "ANGEL", "ANGER", "ANGRY", "ANODE", "ANTIC", "AORTA", "APHID", "APPLE", "APPLY", "APRON", "APTLY", "ARBOR", "ARGUE", "AROMA", "ASIDE", "ASKEW", "ASSET", "ATOLL", "ATONE", "AUDIO", "AUDIT", "AVAIL", "AVERT", "AWAIT", "AWAKE", "AWFUL", "AXIOM", "AZURE", "BADGE", "BADLY", "BAGEL", "BAKER", "BALSA", "BANAL", "BARGE", "BASIC", "BATHE", "BATON", "BATTY", "BAYOU", "BEACH", "BEADY", "BEAST", "BEEFY", "BEGET", "BEGIN", "BEING", "BELCH", "BELIE", "BELLY", "BELOW", "BENCH", "BERET", "BERTH", "BESET", "BINGE", "BIOME", "BIRCH", "BIRTH", "BLACK", "BLAME", "BLAND", "BLEED", "BLEEP", "BLOKE", "BLOWN", "BLUFF", "BLURB", "BLURT", "BLUSH", "BOOBY", "BOOST", "BOOZE", "BOOZY", "BORAX", "BOUGH", "BRAID", "BRAKE", "BRASH", "BRAVE", "BREAD", "BREAK", "BRIAR", "BRIBE", "BRIDE", "BRINE", "BRING", "BRINK", "BRISK", "BROKE", "BROOK", "BROOM", "BRUSH", "BUGGY", "BULLY", "BUNCH", "BURLY", "CACAO", "CACHE", "CANNY", "CANOE", "CAPER", "CARAT", "CARGO", "CARRY", "CAROL", "CATCH", "CATER", "CAULK", "CAUSE", "CEDAR", "CHAFE", "CHAMP", "CHANT", "CHARD", "CHARM", "CHART", "CHEAT", "CHEEK", "CHEST", "CHIEF", "CHILL", "CHIME", "CHOIR", "CHOKE", "CHORD", "CHUNK", "CHUTE", "CIDER", "CIGAR", "CINCH", "CIRCA", "CIVIC", "CLASS", "CLEAN", "CLEAR", "CLERK", "CLICK", "CLING", "CLOCK", "CLOSE", "CLOTH", "CLOWN", "CLUCK", "COACH", "COAST", "COCOA", "COLON", "COMET", "COMMA", "CONDO", "CONIC", "CORNY", "COULD", "COUNT", "COVET", "COWER", "COYLY", "CRAMP", "CRANE", "CRANK", "CRASS", "CRATE", "CRAVE", "CRAZE", "CRAZY", "CREAK", "CREDO", "CREPT", "CRIME", "CRIMP", "CROAK", "CRONE", "CROSS", "CRUMB", "CRUST", "CURLY", "CYNIC", "DADDY", "DANCE", "DANDY", "DEATH", "DEBUG", "DELTA", "DELVE", "DENIM", "DEPOT", "DEPTH", "DIGIT", "DINER", "DISCO", "DITTO", "DODGE", "DONOR", "DONUT", "DOUBT", "DOWRY", "DOZEN", "DRAIN", "DREAM", "DRINK", "DRIVE", "DROLL", "DROOP", "DUCHY", "DUTCH", "DUVET", "DWARF", "DWELL", "DWELT", "EARTH", "EGRET", "EJECT", "ELDER", "ELOPE", "ELUDE", "EMAIL", "EMPTY", "ENEMA", "ENJOY", "ENNUI", "ENTER", "EPOCH", "EPOXY", "EQUAL", "ERODE", "ERROR", "ESSAY", "ETHIC", "ETHOS", "EVADE", "EVERY", "EXACT", "EXCEL", "EXERT", "EXIST", "EXTRA", "EXULT", "FARCE", "FAULT", "FAVOR", "FEAST", "FEIGN", "FERRY", "FEWER", "FIELD", "FIEND", "FIFTY", "FINER", "FIRST", "FISHY", "FIXER", "FJORD", "FLAIL", "FLAIR", "FLANK", "FLASK", "FLESH", "FLICK", "FLING", "FLIRT", "FLOAT", "FLOCK", "FLOOD", "FLOOR", "FLORA", "FLOSS", "FLOUT", "FLUFF", "FLUME", "FLYER", "FOCAL", "FOCUS", "FOGGY", "FOLLY", "FORAY", "FORGE", "FORGO", "FORTH", "FOUND", "FOYER", "FRAME", "FRANK", "FRESH", "FROCK", "FRONT", "FROST", "FROTH", "FROZE", "FUNGI", "GAMER", "GAMMA", "GAUDY", "GAUZE", "GAWKY", "GECKO", "GHOUL", "GIANT", "GIDDY", "GIRTH", "GIVEN", "GLASS", "GLEAN", "GLOAT", "GLOOM", "GLORY", "GLOVE", "GLYPH", "GNASH", "GOLEM", "GONER", "GOOSE", "GORGE", "GOUGE", "GRADE", "GRAND", "GRAPH", "GRATE", "GREAT", "GREET", "GRIEF", "GRIME", "GRIMY", "GRIPE", "GROIN", "GROUP", "GROUT", "GROVE", "GROWL", "GRUEL", "GUANO", "GUARD", "GUEST", "GUILD", "GULLY", "GUPPY", "HAIRY", "HAPPY", "HATCH", "HATER", "HAVOC", "HEADY", "HEART", "HEATH", "HEIST", "HELIX", "HELLO", "HERON", "HINGE", "HOARD", "HOBBY", "HOMER", "HORDE", "HORSE", "HOTEL", "HOUND", "HOWDY", "HUMAN", "HUMID", "HUMOR", "HUMPH", "HUNKY", "HURRY", "HUTCH", "HYPER", "IGLOO", "IMPEL", "INANE", "INDEX", "INEPT", "INERT", "INFER", "INPUT", "INTER", "IONIC", "IRATE", "IRONY", "ISLET", "ITCHY", "IVORY", "JAUNT", "JAZZY", "JOKER", "JOUST", "JUDGE", "KARMA", "KAYAK", "KAZOO", "KEBAB", "KHAKI", "KIOSK", "KNEEL", "KNELT", "KNOCK", "KNOLL", "KOALA", "LABEL", "LABOR", "LAPEL", "LAPSE", "LARVA", "LATTE", "LAYER", "LEAFY", "LEAKY", "LEAPT", "LEAVE", "LEDGE", "LEERY", "LEMON", "LIBEL", "LIGHT", "LILAC", "LINEN", "LIVER", "LOCUS", "LOFTY", "LOGIC", "LOOPY", "LOSER", "LOVER", "LOWLY", "LOYAL", "LUCKY", "LUNAR", "LUSTY", "LYING", "MADAM", "MAGIC", "MAGMA", "MAIZE", "MAJOR", "MANLY", "MANOR", "MAPLE", "MARCH", "MARRY", "MARSH", "MASON", "MASSE", "MATEY", "MAXIM", "MAYBE", "MEALY", "MEDAL", "MERCY", "MERIT", "MERRY", "METAL", "METRO", "MIDGE", "MIDST", "MIMIC", "MINCE", "MODEL", "MOIST", "MOLAR", "MONEY", "MONTH", "MOOSE", "MOSSY", "MOTOR", "MOTTO", "MOULT", "MOUNT", "MOURN", "MOUSE", "MOVIE", "MUCKY", "MUMMY", "MUSIC", "NAIVE", "NANNY", "NASTY", "NATAL", "NAVAL", "NEEDY", "NIGHT", "NINTH", "NOBLE", "NYMPH", "OCCUR", "OCEAN", "OFFAL", "OLDER", "OLIVE", "ONION", "ONSET", "OPERA", "OTHER", "OUGHT", "OUTDO", "OXIDE", "PANEL", "PANIC", "PAPER", "PARER", "PARRY", "PARTY", "PATTY", "PAUSE", "PEACE", "PEACH", "PERCH", "PERKY", "PHASE", "PHOTO", "PICKY", "PIETY", "PILOT", "PINEY", "PINKY", "PINTO", "PIQUE", "PITHY", "PIXIE", "PLANK", "PLANT", "PLATE", "PLAZA", "PLEAT", "PLUCK", "PLUNK", "POINT", "POISE", "POKER", "POLKA", "POLYP", "POUND", "POWER", "PRICK", "PRIDE", "PRIME", "PRIMO", "PRINT", "PRIZE", "PROBE", "PROVE", "PROXY", "PULPY", "PURGE", "QUALM", "QUART", "QUERY", "QUEST", "QUICK", "QUIET", "QUIRK", "QUOTE", "RADIO", "RAINY", "RAMEN", "RANCH", "RANGE", "RATIO", "RAYON", "REACT", "REBUS", "REBUT", "RECAP", "REGAL", "RENEW", "REPAY", "RETCH", "RETRO", "RETRY", "REVEL", "RHINO", "RHYME", "RIGHT", "RIPER", "RIVAL", "ROBIN", "ROBOT", "ROCKY", "RODEO", "ROGUE", "ROOMY", "ROUGE", "ROUND", "ROUSE", "ROYAL", "RUDDY", "RUDER", "RUPEE", "RUSTY", "SAINT", "SALAD", "SALSA", "SAUTE", "SCALD", "SCARE", "SCARF", "SCOLD", "SCORN", "SCOUR", "SCOUT", "SCRAP", "SCRUB", "SEDAN", "SEEDY", "SERVE", "SEVER", "SHAKE", "SHALL", "SHAME", "SHARD", "SHAWL", "SHINE", "SHIRE", "SHIRK", "SHORN", "SHOWN", "SHOWY", "SHRUB", "SHRUG", "SHYLY", "SIEGE", "SISSY", "SKILL", "SKIMP", "SKIRT", "SKUNK", "SLATE", "SLEEK", "SLOSH", "SLOTH", "SLUMP", "SLUNG", "SMART", "SMASH", "SMEAR", "SMELT", "SMILE", "SMIRK", "SMITE", "SNACK", "SNAFU", "SNAIL", "SNAKY", "SNARE", "SNARL", "SNEAK", "SNOUT", "SOGGY", "SOLAR", "SOLVE", "SONIC", "SOUND", "SOWER", "SPACE", "SPADE", "SPELL", "SPEND", "SPICE", "SPICY", "SPIEL", "SPIKE", "SPILL", "SPIRE", "SPLAT", "SPOKE", "SPRAY", "SPURT", "SQUAD", "SQUAT", "STAFF", "STAGE", "STAID", "STAIR", "STALE", "STAND", "START", "STEAD", "STEED", "STEIN", "STICK", "STING", "STINK", "STOCK", "STOMP", "STONE", "STOOL", "STORE", "STORY", "STOUT", "STOVE", "STRAP", "STRAW", "STUDY", "STYLE", "SUGAR", "SULKY", "SURER", "SURLY", "SWEAT", "SWEEP", "SWEET", "SWILL", "SWINE", "SWIRL", "SYRUP", "TACIT", "TANGY", "TAPER", "TAPIR", "TASTE", "TASTY", "TAUNT", "TEASE", "TEMPO", "TENTH", "TEPID", "THEIR", "THEME", "THERE", "THIEF", "THIRD", "THORN", "THOSE", "THUMB", "THUMP", "THYME", "TIARA", "TIBIA", "TIGER", "TILDE", "TIPSY", "TODAY", "TONIC", "TOPAZ", "TORSO", "TOTEM", "TOUGH", "TOXIC", "TRACE", "TRACT", "TRAIN", "TRAIT", "TRASH", "TRAWL", "TREAT", "TREND", "TRIAD", "TRICE", "TRITE", "TROLL", "TROPE", "TROVE", "TRUSS", "TRUTH", "TRYST", "TWANG", "TWEED", "TWICE", "TWINE", "ULCER", "ULTRA", "UNCLE", "UNDER", "UNDUE", "UNFED", "UNFIT", "UNIFY", "UNITE", "UNLIT", "UNMET", "UNTIE", "UNZIP", "UPSET", "USAGE", "USHER", "USING", "USUAL", "USURP", "UTTER", "VAGUE", "VALET", "VALID", "VENOM", "VERVE", "VIGOR", "VIOLA", "VIRAL", "VITAL", "VIVID", "VODKA", "VOICE", "VOTER", "VOUCH", "WACKY", "WALTZ", "WASTE", "WATCH", "WEARY", "WEDGE", "WHACK", "WHALE", "WHEEL", "WHELP", "WHERE", "WHIFF", "WHILE", "WHINE", "WHIRL", "WHISK", "WHOOP", "WINCE", "WINDY", "WOKEN", "WOOER", "WORDY", "WORLD", "WORRY", "WORSE", "WOVEN", "WRATH", "WRITE", "WRONG", "WROTE", "WRUNG", "YACHT", "YEARN", "YIELD", "YOUTH", "ZESTY"}; private String answer; public Wordel () { int rand = (int)( words.length * Math.random()); answer = words[rand]; } public boolean equals(String guess) { return answer.equals(guess); } /** * For each letter of the answer, return the letter is correct, * a "+" if a letter in the wrong position, and a "_" otherwise. * * Precondition: all strings are already UPPERCASE * PostCondition: guess and answer is unchanged * * @param guess * @return A String of clues */ public String getClue(String guess) { String clue = ""; for(int i = 0; i < answer.length(); i++) { String answerLetter = answer.substring(i,i+1); String guessLetter = guess.substring(i,i+1); /// YOUR CODE HERE } return clue; } public Color getLetterColor(int i, String guess) { Color color = Color.BLACK; String answerLetter = answer.substring(i,i+1); String guessLetter = guess.substring(i,i+1); if(answerLetter.equals(guessLetter)) color = Color.GREEN; else if (answer.indexOf(guessLetter) > -1) color = Color.YELLOW; return color; } public String toString() { return answer; } }