DEV Community

Mike Kameta
Mike Kameta

Posted on • Edited on

100 Days of Code: The Complete Python Pro Bootcamp for 2022 - Day 14 (HigherLower Game)

  • The main objective for day 14 was to learn how to look at a given project (HigherLower Game), reverse engineer and then create individual tasks to produce a similar game using instagram followers for the data (in a dictionary format). Just like any other project, 'The objective' then split into smaller tasks.

The individual tasks were but not limited to:

  • Generate a random account from the game data.

  • Format account data into printable format.

  • Ask user for a guess.

  • Check if user is correct.

  • Get follower count.

  • If Statement

  • Feedback.

  • Score Keeping.

  • Make game repeatable.

  • Make B become the next A.

  • Add art.

  • Clear screen between rounds.

I also added a little more to kind of make it look prettier lol.

Since the day 1 start, all coding has been done with replit from https://replit.com. From Day 15 forwards we will start using Pycharm for our coding environment.

HigherLower Game Project

- import emojis from https://unicode.org/emoji/charts/emoji-list.html
import random
from replit import clear
from art import logo, hl, vs
import emoji
print(logo)

- Welcome data, what is your name? greet the player use an emoji

print("Welcome to the HigherLower Game. This game is based off the original which is hosted at http://www.higherlowergame.com/. ")

user_name = input("What is your name? ")
computer_response = print(emoji.emojize(f"Welcome {user_name.capitalize()}, 'Lets Play' :grinning_face: "))

def get_random_account():
  """Get random account details from game_data dictionary"""
  from game_data import data
  return random.choice(data)

def format_data(account):
  """Format account into printable format: name, description and country"""
  name = account["name"]
  description = account["description"]
  country = account["country"]
  #print(f'{name}: {account["follower_count"]}')
  return f"{name}, a {description}, from {country}"

def check_answer(guess, a_followers, b_followers):
  """Checks followers against user's guess 
  and returns True if they got it right.
  Or False if they got it wrong.""" 
  if a_followers > b_followers:
    return guess == "a"
  else:
    return guess == "b"

def game():
  print(hl)
  score = 0
  game_should_continue = True
  account_a = get_random_account()
  account_b = get_random_account()

  while game_should_continue:
    #account_a = account_b
    account_a = get_random_account()
    account_b = get_random_account()

    while account_a == account_b:
      account_b = get_random_account()

    print(f"Compare A: {format_data(account_a)}.")
    print(vs)
    print(f"Against B: {format_data(account_b)}.")

    guess = input("Who has more followers? Type 'A' or 'B': ").lower()
    a_follower_count = account_a["follower_count"]
    b_follower_count = account_b["follower_count"]
    is_correct = check_answer(guess, a_follower_count, b_follower_count)

    clear()
    print(hl)
    if is_correct:
      score += 1
      print(f"You're right! Current score: {score}.")
    else:
      game_should_continue = False
      print(f"Sorry, that's wrong. Final score: {score}")

game()
Enter fullscreen mode Exit fullscreen mode

Top comments (0)