finished core system for now

This commit is contained in:
Justus Jan Nico Wolff 2024-07-07 12:27:18 +02:00
parent 1b1c170d6b
commit d48cd8ee91
2 changed files with 61 additions and 4 deletions

View file

@ -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.")"""

22
keyboard.py Normal file
View file

@ -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("<KeyPress>", self.keypupd)
canvas.bind("<KeyRelease>", 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