diff --git a/hashengine.py b/hashengine.py index 70ac123..737ea24 100644 --- a/hashengine.py +++ b/hashengine.py @@ -9,6 +9,7 @@ import time import threading import pickle from pathfinding import pathfinding +from keyboard import keyboard #import itertools #import multiprocessing @@ -56,6 +57,7 @@ class game: self._threads = [] self._root = obj() self._scripts = [] + self._keyboard = keyboard(self._canvas) """self._workers = [] self._processes = 2 # total number of processes. for i in range(self._processes): @@ -224,6 +226,11 @@ class game: TLB.current += 1 TLB.render() + def isdown(self, key): + temp = self._keyboard.getkeys() + if key in temp: + return temp[key] + def loadgame(self, target): print("loading objects...") self._root = pickle.loads(target["obj"]) @@ -249,8 +256,36 @@ class game: TLB = loadbar(20, 0) self.readdobj(self._root.children, TLB) + def APIGEN(self): + API = {} + API["HASHGAME"] = self + API["vector2"] = vector2 + API["color3"] = color3 + API["event"] = event + API["NULL"] = NULL + API["obj"] = obj + API["SOUND"] = self._handler + + return API + + def rungame(self): + # yields forever + print("preparing scripts") + for i in self._scripts: + self._threads.append(threading.Thread(target=lambda i: exec(i, self.APIGEN()))) + print("starting scripts") + for i in self._threads: + i.start() + print("starting loop") + while True: + took = self.updallobjpositions() + self.render() + took = 0.1-took + if took > 0: + time.sleep(took) + if not "__CMD__" in globals(): - """from PIL import Image + from PIL import Image from tkinter import filedialog root = tk.Tk() canvas = tk.Canvas(root) @@ -275,8 +310,8 @@ if not "__CMD__" in globals(): temp.render() root.update() print() - input("press enter to exit.")""" - root = tk.Tk() + input("press enter to exit.") + """root = tk.Tk() canvas = tk.Canvas(root) canvas.grid() temp = game(canvas) @@ -311,5 +346,5 @@ if not "__CMD__" in globals(): tempobjlist.append(tempobj) temp.render() root.update() - input("press enter to exit.") + input("press enter to exit.")""" diff --git a/keyboard.py b/keyboard.py new file mode 100644 index 0000000..fb62a3f --- /dev/null +++ b/keyboard.py @@ -0,0 +1,22 @@ +import string +class keyboard: + def __init__(self, canvas): + tkeys = list(string.ascii_letters) + self._keys = {} + for i in tkeys: + self._keys[i] = False + canvas.bind("", self.keypupd) + canvas.bind("", self.keydupd) + + def keypupd(self, event): + event = event.char + if event in self._keys: + self._keys[event] = True + + def keydupd(self, event): + event = event.char + if event in self._keys: + self._keys[event] = False + + def getkeys(self): + return self._keys \ No newline at end of file