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 string
import random
from colorama import Fore, Back, Style
from colorama import just_fix_windows_console
just_fix_windows_console()
class stdrend:
def __init__(self, size):
@ -17,9 +14,18 @@ class stdrend:
self._win.update()
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:
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()
class vector2:
@ -28,27 +34,21 @@ class vector2:
self.y = y
def __add__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x+v.x, self.y+v.y)
def __sub__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x-v.x, self.y-v.y)
def __mul__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x*v.x, self.y*v.y)
def __iadd__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x+v.x, self.y+v.y)
def __isub__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x-v.x, self.y-v.y)
def __imul__(self, v):
if not type(v) != vector2: raise ValueError("Must be vector2!")
return vector2(self.x*v.x, self.y*v.y)
class NULL:
@ -64,11 +64,6 @@ class enum:
def getposssel(self):
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})
class obj:
@ -84,8 +79,8 @@ class obj:
self.collide = True
self.touch = True
self.anchored = False
self.bcolor = backcolors.norm
self.fcolor = forecolors.norm
self.bcolor = (255, 255, 255)
self.fcolor = (0, 0, 0)
class camera(obj):
def __init__(self):
@ -101,11 +96,12 @@ class camera(obj):
self.position = self.subject.position
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!")
self._size = size
self._renderer = renderer(size)
self._objects = {}
self.camera = camera()
def addobj(self, obj):
id = ""
@ -121,14 +117,23 @@ class game:
def removeobjbyid(self, id):
self._objects.pop(id).ID = NULL()
def between(self, min, max, target):
if min < target < max: return True
return False
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__":
testgame = game()
object = obj()
object.char = "#"
testgame.addobj(object)
testgame.render()
print(object.ID)
input("enter to exit")

View File

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