Files
DiscordBot/Experimental/calc_xp.py
T

63 lines
1.8 KiB
Python
Executable File

import random
class User:
def __init__(self, xp_formula, level_formula):
self.level = 1
self.xp = 0
self.xp_to_next_level = xp_formula(
self.level
) # XP needed to reach the next level
self.xp_formula = xp_formula
self.level_formula = level_formula
def earn_xp(self, amount):
self.xp += amount
print(f"You earned {amount} XP! Total XP: {self.xp}")
# Check for level up
while self.xp >= self.xp_to_next_level:
self.level_up()
def level_up(self):
self.xp -= self.xp_to_next_level
self.level += 1
self.xp_to_next_level = self.xp_formula(
self.level
) # Calculate next level requirement
print(
f"Congratulations! You've reached Level {self.level}! XP to next level: {self.xp_to_next_level}"
)
def simulate_xp_gain(user, num_messages, xp_per_message):
for _ in range(num_messages):
user.earn_xp(xp_per_message())
def main():
# Define your formulas here
def xp_formula(level):
return int(100 * (1.5 ** (level - 1))) # Example: 100, 150, 225, 338, ...
def random_xp_per_message():
return random.randint(1, 5) # Random XP between 1 and 10
user = User(xp_formula, random_xp_per_message)
while True:
num_messages = input("Enter the number of messages (or 'quit' to exit): ")
if num_messages.lower() == "quit":
break
if num_messages.isdigit():
num_messages = int(num_messages)
simulate_xp_gain(user, num_messages, random_xp_per_message)
else:
print("Please enter a valid number.")
if __name__ == "__main__":
main()