def update(self, dt): super(Player, self).update(dt) pressed = pygame.key.get_pressed() if pressed[K_r]: self.pos = Vec2d(0, 0) return # set speeds based on input if pressed[pygame.K_LEFT]: self.rot_speed = -4 elif pressed[pygame.K_RIGHT]: self.rot_speed = 4 else: self.rot_speed = 0 if pressed[pygame.K_UP]: self.speed = 100 elif pressed[pygame.K_DOWN]: self.speed = -100 else: self.speed = 0 # update rotation self.facing += self.rot_speed * dt # update velocity self.velocity = Vec2d(0, self.speed * dt) self.velocity.angle = self.facing # update position self.pos += self.velocity
def update(self, delta_time): super(Hunter, self).update(delta_time) self.facing += self.rot_speed*delta_time self.velo = Vec2d(0,self.speed * delta_time) self.velo.angle = self.facing self.pos = self.pos + self.velo
def __init__(self, damage, speed, position, color, width, height): super().__init__() self.image = pygame.Surface([width, height]) self.image.fill(WHITE) self.image.set_colorkey(WHITE) self.damage = damage self.speed = Vec2d(speed) self.position = Vec2d(position) self.color = color self.width = width self.height = height pygame.draw.rect(self.image, color, [0, 0, width, height]) self.rect = self.image.get_rect() self.rect.center = self.position
def __init__(self, pos=Vec2d(0, 0), facing=0, speed=0, rot_speed=0): self.pos = pos self.facing = facing self.speed = speed self.rot_speed = rot_speed self.r, self.g, self.b = 255, 0, 0 self.colliding = False
def __init__(self, x, y, length, num_points) -> None: self.pos = Vec2d(x, y) self.length = length self.num_points = num_points self.color = [0, 200 + randint(-50, 50), 0] self.__angles = [0 for _ in range(self.num_points)] self.__points = [] self.generate_points()
def generate_points(self): current_point = self.pos.copy() self.__points = [current_point] prev_angle = 0 dy = self.calculate_points_seperation() for angle in self.__angles: new_point = Vec2d.from_angle(radians(angle + prev_angle + 90)) new_point.mult(dy, -dy) new_point.add(current_point) self.__points.append(new_point) current_point = new_point.copy() prev_angle += angle
def avoid(self, avoidables): for pos, size in avoidables: pos = Vec2d(pos) i = 0 for point in self.__points: if i == 0: i += 1 continue if point.dist(pos) < size**2: avoid_angle = pos.get_heading_angle() point_angle = point.get_heading_angle() d_angle = avoid_angle - point_angle self.__angles[i - 1] += d_angle i += 1
def __init__(self, picture, health, position=(500, 500), direction=1): super().__init__() self.image = pygame.transform.scale(picture, (111, 162)) self.image.fill(WHITE) self.image.set_colorkey(WHITE) self.picture = picture self.health = health self.position = Vec2d(position) self.direction = direction """ Directions: - Up: 1 - Left: 2 - Down: 3 - Right: 4 """ self.rect = self.image.get_rect()
def __init__(self, x, y, radius, color): self.pos = Vec2d(x, y) self.radius = radius self.speed = Vec2d(0, 0) self.color = color
def __init__(self): super(Hunter, self).__init__(pos = Vec2d(random.randint(-200,200),random.randint(-200,200)), speed = random.randint(30, 70), rot_speed = random.uniform(-1,1))
def moveDown(self, yspeed): self.direction = 3 tempMovement = (0, yspeed) movement = Vec2d(tempMovement) self.position = self.position.__add__(movement)
def moveUp(self, yspeed): self.direction = 1 tempMovement = (0, -yspeed) movement = Vec2d(tempMovement) self.position = self.position.__add__(movement)
def moveLeft(self, xspeed): self.direction = 2 tempMovement = (-xspeed, 0) movement = Vec2d(tempMovement) self.position = self.position.__add__(movement)
HORISONTAL_TO_GOAL = 160 PENTALTY_HORISONTAL = 160 PENTALTY_VERTICAL = 400 GOAL = 80 GOAL_H = 20 # Player Variables PLAYER_RADIUS = 10 PLAYER_SPEED = 2 PLAYER_MAXSPEED = 2 BALL_MAXSPEED = 10 VIEW_DISTANCE = 1000 SHOOT_DISTANCE = 300 PLAYER_DISTANCE = 5 #Team RED = 1 BLUE = 2 # Default pos KEEPER_RED_POS = Vec2d(DISTANCE_FROM_SCREEN, SCREEN_Y / 2) RED_PLAYER2 = Vec2d(SCREEN_X / 2 - 400, SCREEN_Y / 2 - 100) RED_PLAYER3 = Vec2d(SCREEN_X / 2 - 400, SCREEN_Y / 2 + 100) RED_PLAYER4 = Vec2d(SCREEN_X / 2 - 200, SCREEN_Y / 2) KEEPER_BLUE_POS = Vec2d(SCREEN_X - DISTANCE_FROM_SCREEN, SCREEN_Y / 2) BLUE_PLAYER2 = Vec2d(SCREEN_X / 2 + 400, SCREEN_Y / 2 - 100) BLUE_PLAYER3 = Vec2d(SCREEN_X / 2 + 400, SCREEN_Y / 2 + 100) BLUE_PLAYER4 = Vec2d(SCREEN_X / 2 + 200, SCREEN_Y / 2) BALL_POS = Vec2d(SCREEN_X / 2, SCREEN_Y / 2)
def __init__(self, x, y): self._pos = Vec2d(x, y) self.direction = None self.length = None self.w = None self.l = None
def moveRight(self, xspeed): self.direction = 4 tempMovement = (xspeed, 0) movement = Vec2d(tempMovement) self.position = self.position.__add__(movement)
def pos(self): return Vec2d(self._pos.x, self._pos.y + (self.length / 2))
#endregion def generate_grass(amount): dx = size[0] / amount grass = [] for x in range(amount): g = Grass(x * dx, 600, 300 + randint(-100, 100), 6) grass.append(g) return grass grass = generate_grass(200) wind = (Vec2d(-100, size[1] * 0.6), 100) take_screen_shots = True frame_index = 0 key_lock = False while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() frame_start_time = time() screen.fill([200, 200, 250]) mouse_pos = pygame.mouse.get_pos() mouse_press = pygame.mouse.get_pressed()