forked from virtualeiro/pygame-imfvj2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaula1_4.py
106 lines (82 loc) · 3.28 KB
/
aula1_4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import pygame
import numpy
from pygame.locals import *
from pygame.math import Vector2
class Character:
def __init__(self, position, speed, velocity, size):
self.position = Vector2(position)
self.size=size
self.velocity=velocity
self.speed = speed
def draw (self, screen):
pygame.draw.circle(screen, (255,0,0), self.position, self.size, 1)
def move(self):
self.position=self.position+self.velocity
class Target:
def __init__(self, position, size):
self.position=Vector2(position)
self.size=size
def setPosition(self, newPosition):
self.position=newPosition
def draw(self, screen):
pygame.draw.circle(screen, (0,0,255), self.position, self.size, 1)
def main():
# Initialize pygame, with the default parameters
pygame.init()
# Define the size/resolution of our window
res_x = 640
res_y = 480
# Create a window and a display surface
screen = pygame.display.set_mode((res_x, res_y))
pos_init=[100,100]
pos_target=[600,300]
vel=[0,0]
speed=0.1
dude = Character( pos_init, speed, vel, 15)
target = Target( pos_target, 5)
# Game loop, runs forever
while (True):
# Process OS events
for event in pygame.event.get():
# Checks if the user closed the window
if (event.type == pygame.QUIT):
# Exits the application immediately
return
elif event.type == pygame.MOUSEBUTTONDOWN:
target.setPosition(pygame.mouse.get_pos())
elif (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_ESCAPE):
return
elif (event.key == pygame.K_UP):
dude.speed+=0.01
elif (event.key == pygame.K_DOWN):
dude.speed-=0.01
# Clears the screen
screen.fill((0,0,0))
#Draw path in Grey
pygame.draw.line(screen,(125,125,125),dude.position, target.position,1)
#Draw target in Blue
#direcaoTarget=numpy.subtract(target.position, dude.position)
direcaoTarget=Vector2(target.position) - Vector2(dude.position)
pygame.draw.line(screen, (0,0,255), [0,0], direcaoTarget, 1)
#Draw normalized in green
normalized=direcaoTarget.normalize()
velocityNormalized=normalized*dude.speed
pygame.draw.line(screen, (0,255,0), dude.position,
(Vector2(dude.position)+
Vector2(velocityNormalized)*dude.speed*1000), 4)
dude.velocity=velocityNormalized
dude.move()
dude.draw(screen)
target.draw(screen)
#print("Velocity" + velocityNormalized)
#print("Speed" + speed)
myfont = pygame.font.SysFont("monospace", 15)
WHITE = (255, 255, 255)
label = myfont.render("Up/DOWN - accelerate/decellerate " + str(dude.speed), 1, WHITE)
screen.blit(label, (10, 400))
label1 = myfont.render("Mouse - changes target location", 1, WHITE)
screen.blit(label1, (10, 415))
# Swaps the back and front buffer, effectively displaying what we rendered
pygame.display.flip()
main()