{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02701d19",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Welcome to Hangman!\n",
      "Try to guess the word.\n",
      "_____\n",
      "Guess a letter: MM NN SS\n",
      "Please enter a single letter.\n",
      "Guess a letter: S\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "            |\n",
      "            |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Guess a letter: M\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "    |       |\n",
      "            |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Guess a letter: MM\n",
      "Please enter a single letter.\n",
      "Guess a letter: W\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "   /|       |\n",
      "            |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Guess a letter: O\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "   /|\\      |\n",
      "            |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Guess a letter: Y\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "   /|\\      |\n",
      "   /        |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Guess a letter: Z\n",
      "\n",
      "     _______\n",
      "    |       |\n",
      "    O       |\n",
      "   /|\\      |\n",
      "   / \\      |\n",
      "            |\n",
      "   _________| \n",
      "    \n",
      "_____\n",
      "Sorry, you've run out of guesses. The word was: grape\n"
     ]
    }
   ],
   "source": [
    "# Hangman Game (No GUI)\n",
    "\n",
    "import random\n",
    "\n",
    "# List of words to choose from\n",
    "word_list = [\"apple\", \"banana\", \"orange\", \"grape\", \"kiwi\", \"mango\", \"peach\", \"pear\"]\n",
    "\n",
    "# Hangman ASCII art\n",
    "hangman_stages = [\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "            |\n",
    "            |\n",
    "            |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "            |\n",
    "            |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "    |       |\n",
    "            |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "   /|       |\n",
    "            |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "   /|\\\\      |\n",
    "            |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "   /|\\\\      |\n",
    "   /        |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\",\n",
    "    \"\"\"\n",
    "     _______\n",
    "    |       |\n",
    "    O       |\n",
    "   /|\\\\      |\n",
    "   / \\\\      |\n",
    "            |\n",
    "   _________| \n",
    "    \"\"\"\n",
    "]\n",
    "\n",
    "def choose_word():\n",
    "    return random.choice(word_list)\n",
    "\n",
    "def display_word(word, guessed_letters):\n",
    "    display = \"\"\n",
    "    for letter in word:\n",
    "        if letter in guessed_letters:\n",
    "            display += letter\n",
    "        else:\n",
    "            display += \"_\"\n",
    "    return display\n",
    "\n",
    "def play_hangman():\n",
    "    word_to_guess = choose_word()\n",
    "    guessed_letters = []\n",
    "    incorrect_guesses = 0\n",
    "\n",
    "    print(\"Welcome to Hangman!\")\n",
    "    print(\"Try to guess the word.\")\n",
    "    print(display_word(word_to_guess, guessed_letters))\n",
    "\n",
    "    while incorrect_guesses < len(hangman_stages) - 1:\n",
    "        guess = input(\"Guess a letter: \").lower()\n",
    "\n",
    "        if guess in guessed_letters:\n",
    "            print(\"You've already guessed that letter.\")\n",
    "            continue\n",
    "        elif len(guess) != 1 or not guess.isalpha():\n",
    "            print(\"Please enter a single letter.\")\n",
    "            continue\n",
    "\n",
    "        guessed_letters.append(guess)\n",
    "\n",
    "        if guess not in word_to_guess:\n",
    "            incorrect_guesses += 1\n",
    "            print(hangman_stages[incorrect_guesses])\n",
    "        else:\n",
    "            print(\"Correct!\")\n",
    "\n",
    "        word_display = display_word(word_to_guess, guessed_letters)\n",
    "        print(word_display)\n",
    "\n",
    "        if \"_\" not in word_display:\n",
    "            print(\"Congratulations! You guessed the word:\", word_to_guess)\n",
    "            break\n",
    "\n",
    "    if incorrect_guesses == len(hangman_stages) - 1:\n",
    "        print(\"Sorry, you've run out of guesses. The word was:\", word_to_guess)\n",
    "\n",
    "    play_again = input(\"Do you want to play again? (yes/no): \").lower()\n",
    "    if play_again == \"yes\":\n",
    "        play_hangman()\n",
    "    else:\n",
    "        print(\"Thanks for playing!\")\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    play_hangman()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ccc4e36b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
