From 87e8f203961dcda40e8f280bbb67a2ee4002bff9 Mon Sep 17 00:00:00 2001 From: KansaiGaijin <83641841+KansaiGaijin@users.noreply.github.com> Date: Thu, 26 Jun 2025 19:27:02 +1200 Subject: [PATCH] Delete Kanjin-PygameGUI --- Kanjin-PygameGUI | 485 ----------------------------------------------- 1 file changed, 485 deletions(-) delete mode 100644 Kanjin-PygameGUI diff --git a/Kanjin-PygameGUI b/Kanjin-PygameGUI deleted file mode 100644 index 13f3c2d..0000000 --- a/Kanjin-PygameGUI +++ /dev/null @@ -1,485 +0,0 @@ -import pygame -import pygame_gui -from enum import Enum, auto -from random import randint -from functions import * - - -class Player: - """Character Creation""" - - # Default Character - def __init__(self, name, gender, age, race, job): - # Personality - self.name = name - self.gender = gender - self.age = age - self.race = race - self.job = job - # Health - self.currentHP = 100 - self.maxHP = 100 - # Levels - self.level = 1 - self.exp = 0 - self.maxEXP = 100 - # Magic - self.spells_known = [] - self.spells_ready = [] - # Equipment - self.weapon = rock - self.armor = tornRags - # Defence - self.ac = 0 - self.elemental_resistance = {DamageType.FIRE: False, DamageType.WATER: False, DamageType.LIGHTNING: False} - self.physical_resistance = {DamageType.SLASHING: False, DamageType.CRUSHING: False, DamageType.PIERCING: False} - # Ability Scores - self.stats = {"Strength": 0, - "Dexterity": 0, - "Constitution": 0, - "Intelligence": 0, - "Wisdom": 0, - "Charisma": 0} - # Ability Modifiers - self.mods = {"Strength": 0, - "Dexterity": 0, - "Constitution": 0, - "Intelligence": 0, - "Wisdom": 0, - "Charisma": 0} - # Held items - self.inventory = {rock: {"Count": 1, - "object": Weapon, - "equipped": True - }, - tornRags: {"Count": 1, - "object": Armor, - "equipped": True - }, - GP1: {"Count": 10, - "object": Money, - "equipped": False - }, - } - - # @property - # def dexMod(self): - # return self.mods["Dexterity"] - - def getModifier(self): - self.mods["Strength"] = -5 + self.stats["Strength"] // 2 - self.mods["Dexterity"] = -5 + self.stats["Dexterity"] // 2 - self.mods["Constitution"] = -5 + self.stats["Constitution"] // 2 - self.mods["Intelligence"] = -5 + self.stats["Intelligence"] // 2 - self.mods["Wisdom"] = -5 + self.stats["Wisdom"] // 2 - self.mods["Charisma"] = -5 + self.stats["Charisma"] // 2 - - def set_stats(self): - if self.race == "elf": - self.stats["Dexterity"] += 2 - self.stats["Intelligence"] += 2 - elif self.race == "human": - self.stats["Strength"] += 2 - self.stats["Constitution"] += 2 - elif self.race == "dwarf": - self.stats["Constitution"] += 2 - self.stats["Strength"] += 2 - elif self.job == "warrior": - self.stats["Strength"] += 2 - self.stats["Constitution"] += 1 - elif self.job == "ranger": - self.stats["Dexterity"] += 2 - self.stats["Charisma"] += 1 - elif self.job == "mage": - self.stats["Intelligence"] += 2 - self.stats["Charisma"] += 1 - - def introduce(self): - typingPrint("Adjusting for your race and class bonuses." + "\n", time) - time.sleep(1) - typingPrint(f'Welcome {self.name}, to Kanjin: An RPG Text Adventure.\n', time) - - def current_stats(self): - """Prints a display of the user's current statistics.""" - print("Your current stats are:") - print(f'Hit Points: {self.currentHP}/{self.maxHP}') - print(f'Strength: {self.stats["Strength"]}') - print(f'Dexterity: {self.stats["Dexterity"]}') - print(f'Constitution: {self.stats["Constitution"]}') - print(f'Intelligence: {self.stats["Intelligence"]}') - print(f'Charisma: {self.stats["Charisma"]}') - - def current_equip(self): - """Prints a list of items currently equipped.""" - typingPrint(f"You have equipped:
{self.armor.name}
" - f" {self.armor.description}" - f"
{self.weapon.name}
" - f" {self.weapon.description}
>", time) - - def new_char(self): - """Outputs final stats, armour, and inventory""" - typingPrint("We will now generate random stats for your character.
", time) - self.introduce() - print(' ') - time.sleep(2) - self.rollStats() - self.set_stats() - print(' ') - self.getModifier() - self.current_stats() - print(' ') - time.sleep(2) - self.current_equip() - print(' ') - current_inventory() - print(' ') - - def rollStats(self): - """Rolls stats 4d6kh3""" - # Roll stats - typingPrint("Rolling for Strength...\n", time) - self.dice_rolls("Strength") - typingPrint(f'Strength: {self.stats["Strength"]}\n', time) - time.sleep(1) - typingPrint("Rolling for Dexterity...\n", time) - self.dice_rolls("Dexterity") - typingPrint(f'Dexterity: {self.stats["Dexterity"]}\n', time) - time.sleep(1) - typingPrint("Rolling for Constitution...\n", time) - self.dice_rolls("Constitution") - typingPrint(f'Constitution: {self.stats["Constitution"]}\n', time) - time.sleep(1) - typingPrint("Rolling for Intelligence...\n", time) - self.dice_rolls("Intelligence") - typingPrint(f'Intelligence: {self.stats["Intelligence"]}\n', time) - time.sleep(1) - typingPrint("Rolling for Wisdom...\n", time) - self.dice_rolls("Wisdom") - typingPrint(f'Wisdom: {self.stats["Wisdom"]}\n', time) - time.sleep(1) - typingPrint("Rolling for Charisma...\n", time) - self.dice_rolls("Charisma") - typingPrint(f'Charisma: {self.stats["Charisma"]}\n', time) - time.sleep(1) - - def health_check(self): - """Print out current/max HP""" - print(f'You have {self.currentHP}/{self.maxHP} HP.') - - def take_damage(self, DMGtype, size): - """Define the damage type and dice size""" - damage = randint(1, size) - if DMGtype in self.elemental_resistance or DMGtype in self.physical_resistance: - damage //= 2 - self.currentHP -= damage - return damage - - def dice_rolls(self, attribute): - """Rolling 4d6 to get stats for PC""" - rolls = [] - # roll 4d6 - for roll in range(4): - r = randint(1, 6) - rolls.append(r) - # Drop the lowest number - del rolls[rolls.index(min(rolls))] - self.stats[attribute] += sum(rolls) - return attribute - - -# Inventory list -def current_inventory(): - """Prints a list of items in your backpack that aren't equipped to your person.""" - typingPrint(f'In your rucksack you have:\n', time) - for item_key, item_value in user.inventory.items(): - for key, value in item_value.items(): - if key == "equipped" and value == False: - typingPrint(f'{item_key.name}\n' - f' {item_key.description}\n', time) - - -def helpMenu(): - helpmenu = "This is the help menu" - return helpmenu - - -# Equipment list -# def equipment(): - -# elif event.type == pygame_gui.UI_TEXT_ENTRY_FINISHED: -# a = userTextEntry.get_text() -# if a == "armor": -# return (f"
You currently have equipped:
{user.armor}
" -# f"Would you like to equip something new? Y/N") -# -# elif a == "weapons": -# return (f"
You currently have equipped:
{user.weapon}
" -# f"Would you like to equip something new? Y/N") - - -def equipped(): - """Print currently equipped, print a list of held armor pieces, - if input matches a held item, replace equipped condition""" - - text = f"You currently have equipped: {user.armor}\n Would you like to equip something new? Y/N" - if event.type == pygame_gui.UI_BUTTON_PRESSED: - if event.ui_element == helpButton: - for item_key, item_value in user.inventory.items(): - # item_info = dict - for key, value in item_value.items(): - # Leather armor[items], "object"[key], Armor[value] - if key == "object" and value == Armor: - armor_list = "\n", item_key - return armor_list - else: - else_comment = "I'm sorry, I didn't understand that.\nWould you like to equip something new? Y/N" - return else_comment - return text - - -class DamageType(Enum): - SLASHING = auto() - CRUSHING = auto() - PIERCING = auto() - FIRE = auto() - WATER = auto() - LIGHTNING = auto() - - -class DamageMod(Enum): - STRENGTH = auto() - DEXTERITY = auto() - CONSTITUTION = auto() - INTELLIGENCE = auto() - WISDOM = auto() - CHARISMA = auto() - - -class Item: - """The base class for all items""" - - def __init__(self, name, description, value, magical): - self.name = name - self.description = description - self.value = value - self.magical = magical - - def __repr__(self): - return f"{self.name}
=====
{self.description}
Value: {self.value}
" - - -class Money(Item): - """The currency item used in the world of Kanjin""" - - def __init__(self, name, amt, magical): - self.name = name - self.amt = amt - self.magical = magical - super().__init__(name=self.name, - description=f"A small round coin made of {self.name.lower()} " - f"with the imperial city logo stamped on the face.", - value=self.amt, - magical=self.magical) - - -class Weapon(Item): - """The base class for all weapons""" - - def __init__(self, name, description, value, damage1H, damage2H, dmgType, dmgMod, vers, thrown, magical): - self.damage1H = damage1H - self.damage2H = damage2H - self.dmgType = dmgType - self.dmgMod = dmgMod - self.vers = vers - self.thrown = thrown - super().__init__(name, description, value, magical) - - def __repr__(self): - return f"{self.name}
=====
{self.description}
Value: {self.value}" \ - f"
Damage: One Handed - {self.damage1H}" \ - f"
Damage: Two Handed - {self.damage2H}
" \ - f"Damage Type: {self.dmgType}
Magical: {self.magical}.
" - - -class Armor(Item): - """The base class for all armor""" - - def __init__(self, name, description, value, grade, ac, disadvantage, dmgRes, magical): - self.grade = grade - self.ac = ac - self.stealthDis = disadvantage - self.dmgRes = dmgRes - super().__init__(name, description, value, magical) - - def __repr__(self): - if self.stealthDis: - return f"{self.name}
=====
{self.description}
Value: {self.value}
" \ - f"AC: {self.ac}
Magical: {self.magical}" - elif not self.stealthDis: - return f"{self.name}
=====
{self.description}
Value: {self.value}
" \ - f"AC: {self.ac}
Disadvantage on Stealth checks: {self.stealthDis}
Magical: {self.magical}" - - -# Different types of coins -GP1 = Money("Gold", 1, False) -SP1 = Money("Silver", 1, False) -CP1 = Money("Copper", 1, False) - -rock = Weapon( - name="Rock", - description="A fist-sized rock, suitable for bludgeoning.", - value="No value", - damage1H=randint(1, 6), - damage2H=0, - dmgType=DamageType.CRUSHING, - dmgMod=DamageMod.STRENGTH, - vers=False, - thrown=True, - magical=False -) -tornRags = Armor( - name="Torn Rags", - description="A ripped and worn-out outfit.", - value=0, - grade="Light", - ac=0, - disadvantage=True, - dmgRes="None", - magical=False -) - -user = Player("Jamie", "Male", 29, "Elf", "Mage") -pygame.init() - -# Create a screen -screen = pygame.display.set_mode((1240, 720)) -screen.fill("black") - -# Set title and Icon -pygame.display.set_caption('Kanjin: An RPG Text Adventure') -icon = pygame.image.load("icon.png").convert_alpha() -pygame.display.set_icon(icon) - -# ((size), "theme.json") -manager = pygame_gui.UIManager((1200, 720)) -manager.set_visual_debug_mode(False) - -# Set surface elements -# relative_rect = pygame.Rect((top left position)(UIButton size)) -userInputButton = pygame_gui.elements.UIButton(relative_rect=pygame.Rect((708, 642), (115, 33)), - text='Send', - manager=manager, - object_id="#userInputButton") - -inventoryButton = pygame_gui.elements.UIButton(relative_rect=pygame.Rect((1085, 20), (107, 100)), - text='Inventory', - manager=manager, - object_id="#inventoryButton") - -equipmentButton = pygame_gui.elements.UIButton(relative_rect=pygame.Rect((1085, 150), (107, 100)), - text='Equipment', - manager=manager, - object_id="#equipmentButton") - -helpButton = pygame_gui.elements.UIButton(relative_rect=pygame.Rect((1085, 280), (107, 100)), - text='Help', - manager=manager, - object_id="#helpButton") - -sceneImage_surface = pygame.Surface((1003, 242)) -sceneImage_surface.fill((34, 40, 45)) -sceneImage_image = pygame_gui.elements.UIImage(relative_rect=pygame.Rect((20, 20), (1003, 242)), - image_surface=icon, - manager=manager, - object_id="#sceneImage") - -userTextEntry_surface = pygame.Surface((645, 33)) -userTextEntry = pygame_gui.elements.UITextEntryLine(pygame.Rect((20, 642), (645, 33)), - manager=manager, - object_id="#player_input") -sceneText_surface = pygame.Surface((1003, 325)) -sceneText = pygame_gui.elements.UITextBox("Test", - pygame.Rect((20, 282), (803, 325)), - manager=manager, - object_id="#scene_text") -# Typewriter Text -sceneText.set_active_effect(pygame_gui.TEXT_EFFECT_TYPING_APPEAR, - params={'time_per_letter': 0.001, - 'time_per_letter_deviation': 0.0003} - - ) - -# Set FPS -clock = pygame.time.Clock() - -# Engine loop -equipmentButtonPressed = False -while True: - selection = "Not selected" - time_delta = clock.tick(60) / 1000.0 - for event in pygame.event.get(): - - if event.type == pygame.QUIT: - quit() - - if event.type == pygame_gui.UI_BUTTON_PRESSED: - if event.ui_element == userInputButton: - sceneText.append_html_text("
" + userTextEntry.get_text()) - userTextEntry.set_text("") - - if event.type == pygame_gui.UI_TEXT_ENTRY_FINISHED: - if not equipmentButtonPressed: - if userTextEntry.get_text().lower() == "clear": - sceneText = pygame_gui.elements.UITextBox("", - pygame.Rect((20, 282), (803, 325)), - manager=manager, - object_id="#scene_text") - userTextEntry.set_text("") - else: - selection = "text" - print("selection " + selection) - print(f"equip button pressed: {equipmentButtonPressed}") - sceneText.append_html_text("
" + userTextEntry.get_text()) - userTextEntry.set_text("") - - if event.type == pygame_gui.UI_TEXT_ENTRY_FINISHED: - if equipmentButtonPressed: - if userTextEntry.get_text().lower() == "armor": - selection = "armor" - sceneText.append_html_text("

" + f"You currently have equipped:
" - f"{user.armor}
" - f"Would you like to equip something new? Y/N") - userTextEntry.set_text("") - # equipmentButtonPressed = False - - elif userTextEntry.get_text().lower() == "weapons": - sceneText.append_html_text(f"
You currently have equipped:
{user.weapon}
" - f"Would you like to equip something new? Y/N") - userTextEntry.set_text("") - equipmentButtonPressed = False - - else: - sceneText.append_html_text(f"
Sorry, I didn't understand that. Try again.") - userTextEntry.set_text("") - - if event.type == pygame_gui.UI_BUTTON_PRESSED: - if event.ui_element == equipmentButton: - print("pressed button") - print(f"equip button pressed: {equipmentButtonPressed}") - equipmentButtonPressed = True - sceneText.append_html_text("
" + f"You currently have equipped: {user.armor}
" - f"Type 'armor' or 'weapons' to change equipment. ") - print("code executed") - print(f"equip button pressed: {equipmentButtonPressed}") - - manager.process_events(event) - - manager.update(time_delta) - - # Blit - screen.blit(sceneText_surface, (20, 282)) - screen.blit(userTextEntry_surface, (20, 642)) - screen.blit(sceneImage_surface, (20, 20)) - - manager.draw_ui(screen) - pygame.display.update()