diff --git a/main.py b/main.py new file mode 100644 index 0000000..44b6f24 --- /dev/null +++ b/main.py @@ -0,0 +1,133 @@ +class game(): + def __init__(self): + self.osmodule = __import__("os") + self.size = self.osmodule.get_terminal_size() + self.map = {} + for i in range(self.size.lines): + for f in range(self.size.columns): + self.map["{}:{}".format(i, f)] = " " + + self.objects = [] + + def update(self): + for i in self.objects: + self.map["{}:{}".format(round(i.y), round(i.x))] = " " + + for i in self.objects: + i.x -= i.xvelocity + i.y -= i.yvelocity + + + + if round(i.y) == self.size.lines or i.y > self.size.lines: + i.y += i.yvelocity + i.yvelocity = 0 + elif round(i.y) <= 0: + i.y += i.yvelocity + i.yvelocity = 0 + else: + if "{}:{}".format(round(i.y+1), round(i.x)) in self.map: + if self.map["{}:{}".format(round(i.y+1), round(i.x))] != " ": + i.y += i.yvelocity + i.yvelocity = 0 + else: + i.yvelocity -= i.gravity + + if round(i.x) == self.size.columns or i.x > self.size.columns: + i.x += i.xvelocity + i.xvelocity = 0 + elif round(i.x) <= 0: + i.x += i.xvelocity + i.xvelocity = 0 + + if i.xvelocity != 0: + if i.xvelocity >= i.antixforce: + if i.xvelocity > 0: + i.xvelocity -= i.antixforce + elif i.xvelocity < 0: + i.xvelocity += i.antixforce + else: + i.xvelocity = 0 + + for i in self.objects: + self.map["{}:{}".format(round(i.y), round(i.x))] = i.character + self.osmodule.system('cls' if self.osmodule.name == 'nt' else 'clear') + for i in range(self.size.lines): + self.temp = "" + for f in range(self.size.columns): + self.temp = self.temp + self.map["{}:{}".format(i, f)] + print(self.temp) + + def addobj(self, obj): + try: + obj.checkifobj + except AttributeError: + raise TypeError("given object is not an object") + + if not 0 <= obj.x <= self.size.columns: + raise ValueError("given object is out of bounds") + if not 0 <= obj.y <= self.size.lines: + raise ValueError("given object is out of bounds") + + self.objects.append(obj) + +class object(): + def __init__(self, character, gravity=0.1, x=0, y=0, antixforce=0.1): + self.character = character + self.gravity = gravity + self.x = x + self.y = y + self.antixforce = antixforce + self.xvelocity = 0 + self.yvelocity = 0 + self.checkifobj = None + + +if __name__ == "__main__": + print("this is a demo program for the hashengine") + print("use w, a, s, d to control the hashtag. the 2 is an ai that follows you. q will exit the demo") + input("enter to continue") + import time + import ctypes + import os + + def isAdmin(): + try: + is_admin = (os.getuid() == 0) + except AttributeError: + is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0 + return is_admin + if not isAdmin(): + print("error: must run as administrator to run demo") + exit() + import keyboard + gameclass = game() + box = object("#", y=10, gravity=0.1, antixforce=1) + ai = object("2", y=10, x=10, gravity=0) + gameclass.addobj(box) + gameclass.addobj(ai) + while True: + if box.x > ai.x: + ai.xvelocity = -0.3 + elif box.x < ai.x: + ai.xvelocity = 0.3 + + if box.y > ai.y: + ai.yvelocity = -0.3 + elif box.y < ai.y: + ai.yvelocity = 0.3 + + if keyboard.is_pressed("d"): + box.xvelocity -= 1 + elif keyboard.is_pressed("a"): + box.xvelocity += 1 + elif keyboard.is_pressed("w"): + box.yvelocity += 1 + elif keyboard.is_pressed("s"): + box.yvelocity -= 1 + elif keyboard.is_pressed("q"): + exit() + gameclass.update() + print(box.yvelocity) + print(box.xvelocity) + time.sleep(0.05)