Nan

Een eerstejaars project voor de Hogeschool Utrecht. Een Python-gebaseerd platform voor mini-games, inclusief user management en scoresystemen.

Project Overzicht

Python 3 JSON Data Storage CLI Architecture

Nan is een modulaire command-line applicatie die verschillende mini-games (zoals Galgje en Guesser) host. Het systeem bevat een robuuste login- en accountcreatie module die gebruik maakt van JSON-bestanden voor persistente dataopslag.

Geleerde Vaardigheden

Python 3 Data Handling Logic Design

Tijdens dit eerstejaars project aan de HU heb ik de fundamenten van Python onder de knie gekregen. Ik heb geleerd hoe ik gestructureerde code schrijf, hoe ik omga met externe data via JSON, en hoe ik complexe game-logica kan implementeren in een CLI-omgeving.

User Management

De kern van de applicatie is het account-systeem. Dit systeem valideert inloggegevens en maakt automatisch nieuwe accounts aan als de gebruiker nog niet bestaat.

def user_login_create_json(user_name, user_password):
    file_path = 'account.json'

    with open(file_path, 'r+') as json_file:
        data = json.load(json_file)
        accounts = data["accountDetails"]

        for account in accounts:
            if account["username"] == user_name and account["password"] == user_password:
                print("User found logging in")
                choose_game(True, user_name)
                return

        print("User not found creating account")

        new_entry = {
            "username": user_name,
            "password": user_password
        }

        accounts.append(new_entry)
        # ... persistent storage logic

Number Guesser Game

De Guesser game implementeert verschillende moeilijkheidsgraden, scoresystemen en feedback-algoritmes om de speler te adviseren over hun niveau.

def calculate_score(difficulty_level, user_tries):
    score = (user_max_tries(difficulty_level) - user_tries) * difficulty_level
    print("Your score is: " + str(score))

def calculate_difficulty(user_score):
    low_score = 5
    normal_score = 12

    if user_score < low_score:
        return print("Try a lower difficulty")
    elif low_score <= user_score <= normal_score:
        return print("Keep this difficulty")
    else:
        return print("Advies: je kunt een hogere moeilijkheidsgraad aan!")