diff --git a/Dots/dots.py b/Dots/dots.py new file mode 100644 index 0000000..ffd9d49 --- /dev/null +++ b/Dots/dots.py @@ -0,0 +1,120 @@ +import tkinter +import threading +import time + +class CanvasGame: + def managementthread(self): + while True: + w = self.pressed_dict.get('w', False) + s = self.pressed_dict.get('s', False) + a = self.pressed_dict.get('a', False) + d = self.pressed_dict.get('d', False) + if w: + self.velocity_y -= self.velocity_speedup + if s: + self.velocity_y += self.velocity_speedup + + if a: + self.velocity_x -= self.velocity_speedup + if d: + self.velocity_x += self.velocity_speedup + + if not any(movement for movement in [w,a,s,d]): + nondirectional = abs(self.velocity_x) + abs(self.velocity_y) + nondirectional /= 2 + if nondirectional < self.velocity_minimum: + self.velocity_x = 0 + self.velocity_y = 0 + else: + if self.velocity_x != 0: + self.velocity_x *= self.velocity_slowdown + if self.velocity_y != 0: + self.velocity_y *= self.velocity_slowdown + + + + self.velocity_x = self.numbercap(self.velocity_x, self.velocity_maximum) + self.velocity_y = self.numbercap(self.velocity_y, self.velocity_maximum) + + self.player_x += self.velocity_x + self.player_y += self.velocity_y + + x = self.x_camera + self.player_x + y = self.y_camera + self.player_y + xdiff = x - self.gamewidthcenter + ydiff = y - self.gameheightcenter + if xdiff > self.camera_distance: + self.x_camera -= abs(xdiff / self.camera_distance) + elif xdiff < -self.camera_distance: + self.x_camera += abs(xdiff / self.camera_distance) + + if ydiff > self.camera_distance: + self.y_camera -= abs(ydiff / self.camera_distance) + elif ydiff < -self.camera_distance: + self.y_camera += abs(ydiff / self.camera_distance) + + #print(self.player_x, x) + + self.canvas.coords(self.player, x-self.player_radius, y-self.player_radius, + x+self.player_radius, y+self.player_radius) + + time.sleep(0.017) + + def numbercap(self, i, cap): + if i > cap: + i = cap + elif i < -cap: + i = -cap + return i + + def pushkey(self, event): + #print(event.char, "Down") + self.pressed_dict[event.char] = True + def releasekey(self, event): + #print(event.char, "Up") + self.pressed_dict[event.char] = False + + def __init__(self): + self.t = tkinter.Tk() + self.pressed_dict = {} + + self.gamewidth = 640 + self.gameheight = 480 + self.gamewidthcenter = self.gamewidth / 2 + self.gameheightcenter = self.gameheight / 2 + self.canvas = tkinter.Canvas(self.t, width=self.gamewidth, height=self.gameheight) + self.x_camera = (self.gamewidth / 2) + self.y_camera = (self.gameheight / 2) + + x = 0 + y = 0 + self.player_x = x + self.player_y = y + self.player_radius = 3 + self.player = self.canvas.create_oval(x-self.player_radius, y-self.player_radius, + x+self.player_radius, y+self.player_radius, + fill="#ff0") + self.camera = self.canvas.create_oval(self.x_camera, self.y_camera, self.x_camera, self.y_camera) + self.camera_distance = 20 + self.playerthread = threading.Thread(name="Playerthread", target=self.managementthread) + self.playerthread.daemon = True + self.velocity_x = 0 + self.velocity_y = 0 + self.velocity_maximum = 4 + self.velocity_minimum = 0.2 + self.velocity_slowdown = 0.95 + self.velocity_speedup = 0.6 + + self.entities = [] + + self.canvas.bind("", self.pushkey) + self.canvas.bind("", self.releasekey) + self.canvas.focus_set() + + self.playerthread.start() + + self.canvas.pack() + + self.t.mainloop() + +c = CanvasGame() diff --git a/Pixelify/README.md b/Pixelify/README.md new file mode 100644 index 0000000..4646d1d --- /dev/null +++ b/Pixelify/README.md @@ -0,0 +1,43 @@ +Pixelify +======== + +Takes an image, or a folder full of images, and produces pixelated versions of each image according to an "objective". That is, how the image would look if it was forced to fit into an *objective x objective* frame. But, the actual output file will be the same dimensions as the original, simply pixelated. + +Examples: + + You are in a folder called C:\pics where there are 2 images: 1.png, 2.png + + Path to image or directory + > 1.png + Pixel Objective + > 32 + + A folder called "pixel" is created, and 1_32.png is inside. + + ____________ + + Path to image or directory + > 1.png + Pixel Objective + > 32, 64, 128 + + 1_32.png, 1_64.png, and 1_128.png have been created + + ___________ + + Path to image or directory + > + Pixel Objective + > 32 + + Path was left completely blank (no spaces or anything), so it uses the current folder. + 1_32.png and 2_32.png have been created. + + ____________ + + Path to image or directory + > C:\otherfolder + Pixel Objective + > 24 + + C:\otherfolder\pixel\ is now full of 24-objective images. diff --git a/Pixelify/examples/Kurtjmac.jpg b/Pixelify/examples/Kurtjmac.jpg new file mode 100644 index 0000000..6a129d3 Binary files /dev/null and b/Pixelify/examples/Kurtjmac.jpg differ diff --git a/Pixelify/examples/NeilDeGrasseTyson.png b/Pixelify/examples/NeilDeGrasseTyson.png new file mode 100644 index 0000000..6443284 Binary files /dev/null and b/Pixelify/examples/NeilDeGrasseTyson.png differ diff --git a/Pixelify/examples/pixel/Kurtjmac_128.jpg b/Pixelify/examples/pixel/Kurtjmac_128.jpg new file mode 100644 index 0000000..ced0cf4 Binary files /dev/null and b/Pixelify/examples/pixel/Kurtjmac_128.jpg differ diff --git a/Pixelify/examples/pixel/Kurtjmac_32.jpg b/Pixelify/examples/pixel/Kurtjmac_32.jpg new file mode 100644 index 0000000..e8ff1c3 Binary files /dev/null and b/Pixelify/examples/pixel/Kurtjmac_32.jpg differ diff --git a/Pixelify/examples/pixel/Kurtjmac_64.jpg b/Pixelify/examples/pixel/Kurtjmac_64.jpg new file mode 100644 index 0000000..fb940ba Binary files /dev/null and b/Pixelify/examples/pixel/Kurtjmac_64.jpg differ diff --git a/Pixelify/examples/pixel/NeilDeGrasseTyson_128.png b/Pixelify/examples/pixel/NeilDeGrasseTyson_128.png new file mode 100644 index 0000000..3b1a812 Binary files /dev/null and b/Pixelify/examples/pixel/NeilDeGrasseTyson_128.png differ diff --git a/Pixelify/examples/pixel/NeilDeGrasseTyson_32.png b/Pixelify/examples/pixel/NeilDeGrasseTyson_32.png new file mode 100644 index 0000000..1184a5a Binary files /dev/null and b/Pixelify/examples/pixel/NeilDeGrasseTyson_32.png differ diff --git a/Pixelify/examples/pixel/NeilDeGrasseTyson_64.png b/Pixelify/examples/pixel/NeilDeGrasseTyson_64.png new file mode 100644 index 0000000..fe958c0 Binary files /dev/null and b/Pixelify/examples/pixel/NeilDeGrasseTyson_64.png differ diff --git a/Pixelify/pixelify.py b/Pixelify/pixelify.py new file mode 100644 index 0000000..53eb94d --- /dev/null +++ b/Pixelify/pixelify.py @@ -0,0 +1,60 @@ +from PIL import Image +import os + +def boot(): + path = input("Path to image or directory\n> ") + if path == '': + path = os.getcwd() + objectives = input("Pixel Objective\n> ") + objectives = objectives.replace(' ', '') + objectives = [int(x) for x in objectives.split(',')] + pixelify(path, objectives) + +def pixelify(path, objectives=[32], subfolder="pixel"): + if '.' in path: + name = path.split('/')[-1] + path = '/'.join(path.split('/')[:-1]) + images = [name] + else: + images = os.listdir(path) + if path[-1] in ['/', '\\']: + path = path[:-1] + + done = False + while not done: + done = True + for name in images: + ext = name.lower()[-4:] + if ext != '.png' and ext != '.jpg': + done = False + images.remove(name) + if name != subfolder: + print('Unlisted "%s": not .jpg or .png' % name) + break + + newdir = path +'/' + subfolder + '/' + if not os.path.exists(newdir): + print('Creating directory: ' + newdir) + os.makedirs(newdir) + + for name in images: + filepath = path + '/' + name + image = Image.open(filepath) + + for objective in objectives: + print("Working: " + name, objective) + image_width = image.size[0] + image_height = image.size[1] + ratio = objective / max([image_width, image_height]) + new_width = image_width * ratio + new_height = image_height * ratio + nimage = image.resize((round(new_width), round(new_height)), 1) + nimage = nimage.resize((image_width, image_height), 0) + + parts = name.split('.') + newpath = newdir + parts[0] + '_' + str(objective) + '.' + parts[1] + nimage.save(newpath) + + + +boot() \ No newline at end of file