color fix

main
Justus Jan Nico Wolff 2024-05-10 21:18:14 +02:00
parent 69213f5d8b
commit 3e81542b0e
2 changed files with 34 additions and 21 deletions

View File

@ -1,9 +1,6 @@
import tkinter as tk import tkinter as tk
import string import string
import random import random
from colorama import Fore, Back, Style
from colorama import just_fix_windows_console
just_fix_windows_console()
class stdrend: class stdrend:
def __init__(self, size): def __init__(self, size):
@ -17,9 +14,18 @@ class stdrend:
self._win.update() self._win.update()
self._grid[f"{x}:{y}"] = temp self._grid[f"{x}:{y}"] = temp
def pix(self, x, y, text): def coltohex(self, target):
colors = []
for i in target:
colors.append(("0"*(2-len(hex(i)[2:])))+hex(i)[2:])
out = ""
for i in colors:
out = out + i
return "#"+out
def pix(self, x, y, text, bcolor, fcolor):
if f"{x}:{y}" in self._grid: if f"{x}:{y}" in self._grid:
self._grid[f"{x}:{y}"].config(text=text) self._grid[f"{x}:{y}"].config(text=text, bg=self.coltohex(bcolor), fg=self.coltohex(fcolor))
self._win.update() self._win.update()
class vector2: class vector2:
@ -28,27 +34,21 @@ class vector2:
self.y = y self.y = y
def __add__(self, v): def __add__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x+v.x, self.y+v.y) return vector2(self.x+v.x, self.y+v.y)
def __sub__(self, v): def __sub__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x-v.x, self.y-v.y) return vector2(self.x-v.x, self.y-v.y)
def __mul__(self, v): def __mul__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x*v.x, self.y*v.y) return vector2(self.x*v.x, self.y*v.y)
def __iadd__(self, v): def __iadd__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x+v.x, self.y+v.y) return vector2(self.x+v.x, self.y+v.y)
def __isub__(self, v): def __isub__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x-v.x, self.y-v.y) return vector2(self.x-v.x, self.y-v.y)
def __imul__(self, v): def __imul__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x*v.x, self.y*v.y) return vector2(self.x*v.x, self.y*v.y)
class NULL: class NULL:
@ -64,11 +64,6 @@ class enum:
def getposssel(self): def getposssel(self):
return list(self._sel.keys()) return list(self._sel.keys())
_fcolors = {"norm": Fore.RESET, "red": Fore.RED, "green": Fore.GREEN, "blue": Fore.BLUE, "white": Fore.WHITE, "cyan": Fore.CYAN, "black": Fore.BLACK, "magenta": Fore.MAGENTA, "yellow": Fore.YELLOW}
_bcolors = {"norm": Back.RESET, "red": Back.RED, "green": Back.GREEN, "blue": Back.BLUE, "white": Back.WHITE, "cyan": Back.CYAN, "black": Back.BLACK, "magenta": Back.MAGENTA, "yellow": Back.YELLOW}
backcolors = enum(_bcolors)
forecolors = enum(_fcolors)
cammode = enum({"editable": 0, "follow": 1}) cammode = enum({"editable": 0, "follow": 1})
class obj: class obj:
@ -84,8 +79,8 @@ class obj:
self.collide = True self.collide = True
self.touch = True self.touch = True
self.anchored = False self.anchored = False
self.bcolor = backcolors.norm self.bcolor = (255, 255, 255)
self.fcolor = forecolors.norm self.fcolor = (0, 0, 0)
class camera(obj): class camera(obj):
def __init__(self): def __init__(self):
@ -101,11 +96,12 @@ class camera(obj):
self.position = self.subject.position self.position = self.subject.position
class game: class game:
def __init__(self, size=[20, 20], renderer=stdrend): def __init__(self, size=[10, 10], renderer=stdrend):
if renderer == None: raise TypeError("Renderer class needed!") if renderer == None: raise TypeError("Renderer class needed!")
self._size = size self._size = size
self._renderer = renderer(size) self._renderer = renderer(size)
self._objects = {} self._objects = {}
self.camera = camera()
def addobj(self, obj): def addobj(self, obj):
id = "" id = ""
@ -121,14 +117,23 @@ class game:
def removeobjbyid(self, id): def removeobjbyid(self, id):
self._objects.pop(id).ID = NULL() self._objects.pop(id).ID = NULL()
def between(self, min, max, target):
if min < target < max: return True
return False
def render(self): def render(self):
for i in self._objects: for i in list(self._objects.values()):
pos = i.position + self.camera.position
if not self.between(-1, self._size[0], pos.x) or not self.between(-1, self._size[1], pos.y): continue
self._renderer.pix(pos.x, pos.y, i.char, i.bcolor, i.fcolor)
if __name__ == "__main__": if __name__ == "__main__":
testgame = game() testgame = game()
object = obj() object = obj()
object.char = "#"
testgame.addobj(object) testgame.addobj(object)
testgame.render()
print(object.ID) print(object.ID)
input("enter to exit")

View File

@ -1,9 +1,11 @@
import mtTkinter as tk import mtTkinter as tk
from tkinter import ttk as tkk
import PCPL import PCPL
import langsys import langsys
import time import time
import subprocess import subprocess
import sys import sys
import hashengine
global LH global LH
LH = langsys.langhandler() LH = langsys.langhandler()
@ -22,6 +24,12 @@ def selectlang(new):
def GUIinit(): def GUIinit():
global container global container
container = tk.Tk() container = tk.Tk()
#tree init
objtree = tkk.Treeview(container)
objtree.grid()
#menu init
menu = tk.Menu(container) menu = tk.Menu(container)
container.config(menu=menu) container.config(menu=menu)
filemenu = tk.Menu(menu) filemenu = tk.Menu(menu)