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()