From 10e996d8b88f6cce7ae8d63b0029de83ad29de71 Mon Sep 17 00:00:00 2001 From: Justyna Att Ilczuk Date: Sat, 10 Nov 2012 17:19:47 +0100 Subject: [PATCH] Some gui and aiming stuff in python. --- Lasers_und_stuff/.project | 17 +++ Lasers_und_stuff/.pydevproject | 8 ++ Lasers_und_stuff/main.py | 195 +++++++++++++++++++++++++++++++++ 3 files changed, 220 insertions(+) create mode 100644 Lasers_und_stuff/.project create mode 100644 Lasers_und_stuff/.pydevproject create mode 100644 Lasers_und_stuff/main.py diff --git a/Lasers_und_stuff/.project b/Lasers_und_stuff/.project new file mode 100644 index 0000000..f1968da --- /dev/null +++ b/Lasers_und_stuff/.project @@ -0,0 +1,17 @@ + + + Lasers_und_stuff + + + + + + org.python.pydev.PyDevBuilder + + + + + + org.python.pydev.pythonNature + + diff --git a/Lasers_und_stuff/.pydevproject b/Lasers_und_stuff/.pydevproject new file mode 100644 index 0000000..7c73a66 --- /dev/null +++ b/Lasers_und_stuff/.pydevproject @@ -0,0 +1,8 @@ + + + +/Lasers_und_stuff + +python 2.7 +python2 + diff --git a/Lasers_und_stuff/main.py b/Lasers_und_stuff/main.py new file mode 100644 index 0000000..71825e9 --- /dev/null +++ b/Lasers_und_stuff/main.py @@ -0,0 +1,195 @@ +''' +Created on Nov 10, 2012 + +@author: attero +''' + + +import random, pygame, sys +#import time +from pygame.locals import * +from math import fabs +from math import ceil +#import and init pygame +pygame.init() + +def main(): + #create the screen + window = pygame.display.set_mode((640, 480)) + + + #draw a line + pygame.draw.line(window, (255, 255, 255), (0,0), (300, 50)) + + #draw it to the screen + + + GRAY = ( 182, 182, 182) + VIOLET = (150, 100, 190) + RED = (150, 0, 0) + GREEN = (0, 150, 0) + BLUE = (0, 0, 150) + VERYLIGHT = (210, 210, 210) + BACKGROUND_COLOR = GREEN + + colors = [GRAY, VIOLET, RED, GREEN, BLUE, VERYLIGHT] + + window.fill(BACKGROUND_COLOR) + + mouseClicked = False + pygame.display.flip() + cannon = CannonController() + + + screen = Screen(window, colors) + screen.draw_surface(cannon) + + gunpoint = Gunpoint((5, 4), (200, 4), (5, 210)) + coords = gunpoint.aim((0,0)) + #input handling ( code): + while True: + screen.draw_surface(cannon) + + mouseClicked = False + + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + sys.exit(0) + elif event.type == KEYUP and event.key == K_SPACE: + + if cannon.fired: + cannon.fired = False + else: + cannon.fired = True + elif event.type == KEYUP and event.key == K_RIGHT: + cannon.move_right(2) + elif event.type == KEYUP and event.key == K_LEFT: + cannon.move_left(2) + elif event.type == KEYUP and event.key == K_UP: + cannon.move_up(2) + elif event.type == KEYUP and event.key == K_DOWN: + cannon.move_down(2) + elif event.type == KEYUP and event.key == K_l: + if cannon.laser: + cannon.disable_laser() + if "Laser enabled" in screen.communicates : + screen.communicates.remove("Laser enabled") + screen.communicates.append("Laser disabled") + else: + cannon.enable_laser() + if "Laser disabled" in screen.communicates : + screen.communicates.remove("Laser disabled") + screen.communicates.append("Laser enabled") + + elif event.type == MOUSEBUTTONUP: + print "mouse button up" + mouseClicked = True + screen.change_color() + + + + if mouseClicked : + print("Mouse was clicked!") + coords = [gunpoint.aim((x/10.0,x/10.0)) for x in range(0,11)] + samples = [(x/10.0,x/10.0) for x in range(0, 11)] + print samples + print coords + + + +class Screen: + + def __init__(self, window, colors): + self.communicates = [] + self.communicates.append("Press space to fire!") + self.communicates.append("Use arrows to adjust position") + self.communicates.append("Press L to enable laser") + self.window = window + self.colors = colors + self.color = random.choice(self.colors) + + def change_color(self): + self.color = random.choice(self.colors) + + def draw_surface(self, cannon): + self.window.fill(self.color) + for i, text in enumerate(self.communicates): + self.print_text(text, 20, 20 + i*20, (0, 0, 0), 20, self.window) + + if cannon.fired: + self.print_text("Fired!", 20, 100, (150, 20, 40), 40, self.window) + + self.print_text(cannon.get_data_to_send().__str__(), 20, 300, (0, 0, 0), 30, self.window) + pygame.display.flip() + + def print_text(self, text,xx,yy,color,text_size, screen): + font = pygame.font.SysFont("Courier New",text_size) + ren = font.render(text,1,color) + screen.blit(ren, (xx,yy)) + + +class CannonController : + def __init__(self): + print("cannon controller started") + self.position = [0, 0] + self.fired = False + self.laser = False + + def fire(self): + self.fired = True + + def enable_laser(self): + self.laser = True + + def disable_laser(self): + self.laser = False + + def move_left(self, change): + self.position[0] -= change + def move_right(self, change): + self.position[0] += change + def move_up(self, change): + self.position[1] += change + def move_down(self, change): + self.position[1] -= change + def check_validity_of_data(self): + if(fabs(self.position[0]) > 255): + return False + if (fabs(self.position[1]) > 255): + return False + return True + + def get_data_to_send(self): + # ('a' - os X, 'b' - os Y, 'c' - Strzal, 'd' - laser) + if self.check_validity_of_data(): + data = [] + data.extend(self.position) + if(self.fired): + data.append(255) + else: + data.append(0) + + if(self.laser): + data.append(255) + else: + data.append(0) + + return data + else: + return [0, 0, 0, 0] + +class Gunpoint : + def __init__(self, point1, point2, point3): + self.vertical_angle = point3[1] - point1[1] + self.horizontal_angle = point2[0] - point1[0] + self.beginnig_horizontal = point1[0] + self.beginnig_vertical = point1[1] + + def aim(self, point): + horizontal = ceil(self.beginnig_horizontal + self.horizontal_angle*point[0]) + vertical = ceil(self.beginnig_vertical + self.vertical_angle*point[1]) + return [horizontal, vertical] + +if __name__ == '__main__': + main() \ No newline at end of file