here2share

# Wordle.py

Feb 6th, 2022 (edited)
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.97 KB | None | 0 0
  1. # Wordle.py
  2.  
  3. from tkinter import *
  4. from tkinter import messagebox
  5. import random
  6.        
  7. words = '''
  8. ABOUT ABOVE ABUSE ACTOR ADAPT ADDED ADMIT ADOPT ADULT AFTER AGAIN AGENT AGREE AHEAD AISLE ALARM ALBUM ALIEN ALIKE ALIVE ALLEY ALLOW ALONE ALONG ALOUD ALTER AMONG ANGEL ANGER ANGLE ANGRY ANKLE APART APPLE APPLY ARENA ARGUE ARISE ARMED ARRAY ARROW ASIDE ASSET AVOID AWAIT AWAKE AWARD AWARE AWFUL BADLY BASIC BASIS BEACH BEARD BEAST BEGIN BEING BELLY BELOW BENCH BIRTH BLACK BLADE BLAME BLANK BLAST BLEND BLESS BLIND BLINK BLOCK BLOND BLOOD BOARD BOAST BONUS BOOST BOOTH BRAIN BRAKE BRAND BRAVE BREAD BREAK BRICK BRIDE BRIEF BRING BROAD BROWN BRUSH BUDDY BUILD BUNCH BURST BUYER CABIN CABLE CANDY CARGO CARRY CARVE CATCH CAUSE CEASE CHAIN CHAIR CHAOS CHARM CHART CHASE CHEAP CHEAT CHECK CHEEK CHEER CHEST CHIEF CHILD CHILL CHUNK CIVIC CIVIL CLAIM CLASS CLEAN CLEAR CLERK CLICK CLIFF CLIMB CLING CLOCK CLOSE CLOTH CLOUD COACH COAST COLOR COUCH COULD COUNT COURT COVER CRACK CRAFT CRASH CRAWL CRAZY CREAM CRIME CROSS CROWD CROWN CRUEL CRUSH CURVE CYCLE DAILY DANCE DEATH DEBUT DELAY DENSE DEPTH DEVIL DIARY DIRTY DITTO DONOR DOUBT DOUGH DOZEN DRAFT DRAIN DRAMA DREAM DRESS DRIED DRIFT DRILL DRINK DRIVE DROWN DRUNK DYING EAGER EARLY EARTH EIGHT ELBOW ELDER ELECT ELITE EMPTY ENACT ENEMY ENJOY ENTER ENTRY EQUAL EQUIP ERROR ESSAY EVENT EVERY EXACT EXIST EXTRA FAINT FAITH FALSE FATAL FAULT FAVOR FENCE FEVER FEWER FIBER FIELD FIFTH FIFTY FIGHT FINAL FIRST FIXED FLAME FLASH FLEET FLESH FLOAT FLOOD FLOOR FLOUR FLUID FOCUS FORCE FORTE FORTH FORTY FORUM FOUND FRAME FRAUD FRESH FRONT FROWN FRUIT FULLY FUNNY GENRE GHOST GIANT GIVEN GLASS GLOBE GLORY GLOVE GRACE GRADE GRAIN GRAND GRANT GRAPE GRASP GRASS GRAVE GREAT GREEN GREET GRIEF GROSS GROUP GUARD GUESS GUEST GUIDE GUILT HABIT HAPPY HARSH HEART HEAVY HELLO HENCE HONEY HONOR HORSE HOTEL HOUSE HUMAN HUMOR HURRY IDEAL IMAGE IMPLY INDEX INNER INPUT IRONY ISSUE JEANS JOINT JUDGE JUICE JUROR KNEEL KNIFE KNOCK KNOWN LABEL LABOR LARGE LASER LATER LAUGH LAYER LEARN LEAST LEAVE LEGAL LEMON LEVEL LIGHT LIMIT LIVER LOBBY LOCAL LOGIC LOOSE LOVER LOWER LOYAL LUCKY LUNCH MAGIC MAJOR MAKER MARCH MARRY MATCH MAYBE MAYOR MEANS MEDAL MEDIA MERIT METAL METER MIDST MIGHT MINOR MINUS MIXED MODEL MONEY MONTH MORAL MOTOR MOUNT MOUSE MOUTH MOVIE MUSIC NAKED NASTY NAVAL NERVE NEVER NEWLY NIGHT NOISE NORTH NOVEL NURSE OCCUR OCEAN OFFER OFTEN ONION OPERA ORBIT ORDER ORGAN OTHER OUGHT OUTER OWNER PAINT PANEL PANIC PANTS PAPER PARTY PASTA PATCH PAUSE PEACE PHASE PHONE PHOTO PIANO PIECE PILOT PITCH PIZZA PLACE PLAIN PLANE PLANT PLATE PLEAD POINT PORCH POUND POWER PRESS PRICE PRIDE PRIME PRINT PRIOR PRIZE PROOF PROUD PROVE PULSE PUNCH PURSE QUEEN QUEST QUICK QUIET QUITE QUOTE RADAR RADIO RAISE RALLY RANCH RANGE RAPID RATIO REACH REACT READY REALM REBEL REFER RELAX REPLY RIDER RIDGE RIFLE RIGHT RISKY RIVAL RIVER ROBOT ROUGH ROUND ROUTE ROYAL RUMOR RURAL SADLY SALAD SALES SAUCE SCALE SCARE SCARY SCENE SCENT SCOPE SCORE SCREW SEIZE SENSE SERVE SEVEN SHADE SHAKE SHALL SHAME SHAPE SHARE SHARK SHARP SHEEP SHEER SHEET SHELF SHELL SHIFT SHINE SHIRT SHOCK SHOOT SHORE SHORT SHOUT SHOVE SHRUG SIGHT SILLY SINCE SIXTH SKILL SKIRT SKULL SLASH SLAVE SLEEP SLICE SLIDE SLOPE SMALL SMART SMELL SMILE SMOKE SNAKE SNEAK SOLAR SOLID SOLVE SORRY SOUND SOUTH SPACE SPARE SPARK SPEAK SPEED SPELL SPEND SPILL SPINE SPITE SPLIT SPOON SPORT SPRAY SQUAD STACK STAFF STAGE STAIR STAKE STAND STARE START STATE STEAK STEAL STEAM STEEL STEEP STEER STICK STIFF STILL STOCK STONE STORE STORM STORY STOVE STRAW STRIP STUDY STUFF STYLE SUGAR SUITE SUNNY SUPER SWEAR SWEAT SWEEP SWEET SWELL SWING SWORD TABLE TALLY TASTE TEACH TERMS THANK THEIR THEME THERE THESE THICK THIGH THING THINK THIRD THOSE THREE THROW THUMB TIGHT TIRED TITLE TODAY TOOTH TOPIC TOTAL TOUCH TOUGH TOWEL TOWER TOXIC TRACE TRACK TRADE TRAIL TRAIN TRAIT TRASH TREAT TREND TRIAL TRIBE TRICK TROOP TRUCK TRULY TRUNK TRUST TRUTH TUMOR TWICE TWIST UNCLE UNDER UNION UNITE UNITY UNTIL UPPER UPSET URBAN USUAL UTTER VAGUE VALID VALUE VIDEO VIRUS VISIT VITAL VOCAL VOICE VOTER WAGON WAIST WASTE WATCH WATER WEAVE WEIGH WEIRD WHALE WHEAT WHEEL WHERE WHICH WHILE WHITE WHOLE WHOSE WIDOW WOMAN WORKS WORLD WORRY WORTH WOULD WOUND WRIST WRITE WRONG YIELD YOUNG YOURS YOUTH'''.upper().split()
  9.  
  10. def get_word():
  11.     return random.choice(words)
  12.  
  13. root = Tk()
  14. root.geometry("336x420+5+5")
  15.  
  16. GREEN = "#007d21"
  17. YELLOW = "#e2e600"
  18. BLACK = "#000000"
  19. WHITE = "#FFFFFF"
  20. RED = "#8b0000"
  21.  
  22. root.config(bg='grey30')
  23.  
  24. def to_uppercase(*args):
  25.     var.set(var.get().upper().strip()[:5])
  26.  
  27. def reset():
  28.     global word
  29.     global guessnum
  30.     guessnum = 0
  31.     word = get_word()
  32.  
  33. def init_board():
  34.     for i in range(5):
  35.         for j in range(1,6):
  36.             label = Label(root, bg='grey30', font=("Arial", 29), width=2, borderwidth=2, relief=GROOVE)
  37.             label.grid(row=j, column=i, pady=5)
  38.  
  39. top_frame = Frame(root)
  40. top_frame.grid(row=0, column=0, padx=8, pady=5, columnspan=5)
  41. var = StringVar(top_frame)
  42. wordInput = Entry(top_frame, font=("Arial", 25), textvariable=var, width=12, justify='center')
  43. wordInput.grid(row=0, column=0, columnspan=4, sticky=NSEW)
  44. var.trace_add('write', to_uppercase)
  45.  
  46. def getGuess():
  47.     global word
  48.     global guessnum
  49.        
  50.     guess = var.get().upper()
  51.        
  52.     guessnum += 1
  53.  
  54.     for i in range(5):
  55.         label = Label(root, bg='grey20', font=("Arial", 29), width=2)
  56.         label.grid(row=guessnum, column=i, pady=5)
  57.  
  58.     if len(guess) == 5:
  59.         if guess in words:
  60.             if word == guess:  # CORRECT
  61.                 for i, letter in enumerate(guess):
  62.                     label = Label(root, text=letter.upper(), font=("Arial", 29), width=2)
  63.                     label.grid(row=guessnum, column=i, pady=5)
  64.  
  65.                     label.config(bg=GREEN, fg=BLACK)
  66.                    
  67.                 messagebox.showinfo("CORRECT!", f"THE WORD WAS {word}")
  68.                 reset()
  69.                
  70.             else:  # INCORRECT
  71.                 for i, letter in enumerate(guess):
  72.  
  73.                     label = Label(root, text=letter.upper(), font=("Arial", 29), width=2)
  74.                     label.grid(row=guessnum, column=i, pady=5)
  75.  
  76.                     if letter == word[i]: # if they get the letter right
  77.                         label.config(bg=GREEN, fg=BLACK)
  78.  
  79.                     elif letter in word and not letter == word[i]: # if the letter is in the word, but not in the right spot
  80.                         label.config(bg=YELLOW, fg=BLACK)
  81.                    
  82.                     elif letter not in word:
  83.                         label.config(bg=BLACK, fg=WHITE)
  84.                        
  85.         else:
  86.             messagebox.showerror("SORRY...", "NOT A VALID ENTRY IN THIS WORDLE VERSION")
  87.  
  88.     else:
  89.         messagebox.showerror("INVALID ENTRY", "PLEASE USE 5 CHARACTERS IN YOUR GUESS")
  90.    
  91.     if guessnum > 4 and word != guess:
  92.         for i, letter in enumerate(word):
  93.  
  94.             label = Label(root, text=letter.upper(), font=("Arial", 29), width=2)
  95.             label.grid(row=5, column=i, pady=5)
  96.  
  97.             label.config(bg=RED, fg=WHITE)
  98.         messagebox.showerror("YOU LOSE!", f"THE WORD WAS {word}")
  99.         reset()
  100.    
  101.     wordInput.focus_force()
  102.     var.set('')
  103.     if not guessnum:
  104.         init_board()
  105. 0
  106.  
  107. guessnum = 0
  108. reset()
  109. init_board()
  110.  
  111. wordGuessButton = Button(top_frame, text="GUESS", font=("Arial", 17), bg=GREEN, fg=WHITE, command=getGuess)
  112. wordGuessButton.grid(row=0, column=4)
  113.  
  114. root.bind('<Return>',  lambda self: getGuess())
  115.  
  116.  
  117. wordInput.focus_force()
  118.  
  119. root.mainloop()
Add Comment
Please, Sign In to add comment