Some gui and aiming stuff in python.
commit
10e996d8b8
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>Lasers_und_stuff</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.python.pydev.PyDevBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.python.pydev.pythonNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?eclipse-pydev version="1.0"?><pydev_project>
|
||||||
|
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
|
||||||
|
<path>/Lasers_und_stuff</path>
|
||||||
|
</pydev_pathproperty>
|
||||||
|
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
|
||||||
|
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python2</pydev_property>
|
||||||
|
</pydev_project>
|
|
@ -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()
|
Loading…
Reference in New Issue