self.invincibility_frames = self.invincibility_time
def follow_target(self, node, follow_range=100000, stop_dist=115):
+ return
# if stop_dist is None:
# stop_dist = max(self.height, self.width) * 1.5
if area.is_colliding(thing):
area.signal(thing)
if collision_rect.colliderect(thing.get_collision_rect()):
- if vel.y > 0:
+ if vel.y >= 0:
pos.y = thing.position.y - self.height
vel.y = min(vel.y, 0)
self.on_ground = True
self.coyote_time = datetime.utcnow()
elif vel.y < 0:
pos.y = thing.position.y + thing.height
- # vel.y = max(vel.y, 0)
- # collision_rect = self.get_collision_rect(pos)
+ vel.y = max(vel.y, 0)
+ collision_rect = self.get_collision_rect(pos)
return pos, vel
def get_collision_rect(self, pos=None):
class Enemy(Actor):
- width, height = 50, 100
speed = Actor.speed * 0.5
# jump_strength = Actor.jump_strength * 0.5
colour = (235, 64, 52)
self.weapon = Melee(self.position, (-Melee.width / 2 + 7, Melee.height / 2 + self.height / 3 - 8),
(-5, Melee.height), self.width, -1, -10)
+ self.buffer = []
+
def update(self, delta, target=None):
super().update(delta)
if not self.attacked and target is not None and self.dizzy_time == 0:
def draw(self, surf):
self.weapon.draw(surf)
super(Enemy, self).draw(surf)
+
+ # for b in self.buffer:
+ # pg.draw.rect(surf,(0,0,255),b,3)
+ # self.buffer.append(get_display_rect(self.get_collision_rect()))
# pg.draw.rect(surf, (0, 255, 0), get_display_rect(self.get_collision_rect()), 2)
class Game:
def __init__(self, level):
- self.collision_layer = {"none": set(), "world": set(), "player": set(), "enemy": set(), "pet": set()}
+ self.collision_layer = {"none": set(), "world": set(), "player": set(), "enemy": set(), "pet": set(), "body":set()}
# self.load_world(level)
self.world = World(self.collision_layer)
enemy_positions, player_position, self.portal_position = self.world.load_world(level)
+
self.player = Player(player_position, self.collision_layer["player"],
[self.collision_layer["enemy"], self.collision_layer["world"]],
- [self.collision_layer["enemy"]])
+ [self.collision_layer["enemy"], self.collision_layer["body"]])
# self.pet = Pet(center, self.collision_layer["pet"], [self.collision_layer["world"]])
self.enemies = [Enemy(pos, self.collision_layer["enemy"],
[self.collision_layer["player"], self.collision_layer["world"]]) for pos in
enemy.update(delta, self.player)
if enemy.dead:
self.enemies[i] = PhysicsBody(enemy.position, enemy.velocity, enemy.width, enemy.height, enemy.colour,
- enemy.collision_layer, enemy.collision_mask)
+ self.collision_layer["body"], [self.collision_layer["world"], self.collision_layer["body"]])
self.collision_layer["enemy"].remove(enemy)
- self.collision_layer["enemy"].add(self.enemies[i])
+ self.collision_layer["body"].add(self.enemies[i])
self.world.update(delta)
self.fade = self.Transition.fade
# self.pet.update(delta, self.player, self.camera_pos)
def draw(self, surf):
- screen.fill((0, 191, 255))
+ # screen.fill((0, 191, 255))
# screen.fill((0, 191, 255))
# screen.fill((255,255,255))
-world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world
-850.0,250.0|800.0,250.0|750.0,250.0|950.0,200.0|900.0,200.0|850.0,200.0|800.0,200.0|750.0,200.0|1000.0,200.0|1050.0,200.0|1100.0,200.0|1150.0,200.0|500.0,500.0|1050.0,500.0|1350.0,400.0|1350.0,450.0|1350.0,500.0|1350.0,350.0|1400.0,350.0|1400.0,300.0|1450.0,300.0|1500.0,300.0|1550.0,300.0|1600.0,300.0|1600.0,350.0|1550.0,350.0|1350.0,300.0|1600.0,400.0|1600.0,450.0|1600.0,500.0|1600.0,650.0|1250.0,650.0|1200.0,650.0|1150.0,650.0|400.0,650.0|350.0,650.0|300.0,650.0|300.0,700.0|350.0,700.0|400.0,700.0|1150.0,700.0|1200.0,700.0|1300.0,650.0|1350.0,650.0|1400.0,650.0|1450.0,650.0|1500.0,650.0|1550.0,650.0|1250.0,700.0|1300.0,700.0|1350.0,700.0|1400.0,700.0|1450.0,700.0|1500.0,700.0|1550.0,700.0|1600.0,700.0|750.0,450.0|1300.0,550.0|1250.0,550.0|1200.0,550.0|1150.0,550.0|1100.0,550.0|1050.0,550.0|1000.0,550.0|950.0,550.0|900.0,550.0|850.0,550.0|800.0,550.0|750.0,550.0|700.0,550.0|650.0,550.0|600.0,550.0|550.0,550.0|500.0,550.0|300.0,550.0|1350.0,550.0|1400.0,550.0|1450.0,550.0|1500.0,550.0|1550.0,550.0|1500.0,450.0|1600.0,600.0|1550.0,600.0|1500.0,600.0|1450.0,600.0|1400.0,600.0|1350.0,600.0|1300.0,600.0|1250.0,600.0|1200.0,600.0|1150.0,600.0|1050.0,600.0|1000.0,600.0|950.0,600.0|900.0,600.0|850.0,600.0|800.0,600.0|750.0,600.0|700.0,600.0|650.0,600.0|600.0,600.0|550.0,600.0|500.0,600.0|300.0,600.0|350.0,600.0|400.0,600.0|450.0,600.0|450.0,550.0|400.0,550.0|350.0,550.0|1600.0,550.0|1100.0,600.0|1100.0,650.0|1100.0,700.0|1050.0,700.0|1050.0,650.0|1000.0,650.0|1000.0,700.0|950.0,700.0|950.0,650.0|900.0,650.0|850.0,650.0|800.0,650.0|750.0,650.0|900.0,700.0|850.0,700.0|800.0,700.0|750.0,700.0|700.0,700.0|700.0,650.0|650.0,650.0|600.0,650.0|550.0,650.0|500.0,650.0|450.0,650.0|450.0,700.0|500.0,700.0|550.0,700.0|600.0,700.0|650.0,700.0|2000.0,500.0|2000.0,450.0|1900.0,500.0|1950.0,500.0|1950.0,450.0|1900.0,450.0
-SAND|SAND|SAND|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|PORTAL|INTERDIMENSIONALPOWDER|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|PLAYER|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|ENEMY|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|CORNERGRASS|CORNERGRASS|CORNERGRASS|CORNERGRASS|CORNERGRASS|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|CORNERDIRT|CORNERGRASS|DIRT|DIRT|GRASS|GRASS
+none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world
+1350.0,300.0|1400.0,300.0|1450.0,300.0|1500.0,300.0|1550.0,300.0|1600.0,300.0|1550.0,350.0|1600.0,350.0|1600.0,400.0|1600.0,450.0|1400.0,350.0|1350.0,350.0|1350.0,400.0|1350.0,450.0|750.0,400.0|1500.0,400.0|850.0,250.0|800.0,250.0|750.0,250.0|950.0,150.0|900.0,150.0|850.0,150.0|800.0,150.0|750.0,150.0|1000.0,150.0|1050.0,150.0|1100.0,150.0|1150.0,150.0|1600.0,600.0|1250.0,600.0|1200.0,600.0|1150.0,600.0|400.0,600.0|350.0,600.0|300.0,600.0|300.0,650.0|350.0,650.0|400.0,650.0|1150.0,650.0|1200.0,650.0|1300.0,600.0|1350.0,600.0|1400.0,600.0|1450.0,600.0|1500.0,600.0|1550.0,600.0|1250.0,650.0|1300.0,650.0|1350.0,650.0|1400.0,650.0|1450.0,650.0|1500.0,650.0|1550.0,650.0|1600.0,650.0|1300.0,500.0|1250.0,500.0|1200.0,500.0|1150.0,500.0|1100.0,500.0|1050.0,500.0|1000.0,500.0|950.0,500.0|900.0,500.0|850.0,500.0|800.0,500.0|750.0,500.0|700.0,500.0|650.0,500.0|600.0,500.0|550.0,500.0|500.0,500.0|300.0,500.0|1350.0,500.0|1400.0,500.0|1450.0,500.0|1500.0,500.0|1550.0,500.0|1600.0,550.0|1550.0,550.0|1500.0,550.0|1450.0,550.0|1400.0,550.0|1350.0,550.0|1300.0,550.0|1250.0,550.0|1200.0,550.0|1150.0,550.0|1050.0,550.0|1000.0,550.0|950.0,550.0|900.0,550.0|850.0,550.0|800.0,550.0|750.0,550.0|700.0,550.0|650.0,550.0|600.0,550.0|550.0,550.0|500.0,550.0|300.0,550.0|350.0,550.0|400.0,550.0|450.0,550.0|450.0,500.0|400.0,500.0|350.0,500.0|1600.0,500.0|1100.0,550.0|1100.0,600.0|1100.0,650.0|1050.0,650.0|1050.0,600.0|1000.0,600.0|1000.0,650.0|950.0,650.0|950.0,600.0|900.0,600.0|850.0,600.0|800.0,600.0|750.0,600.0|900.0,650.0|850.0,650.0|800.0,650.0|750.0,650.0|700.0,650.0|700.0,600.0|650.0,600.0|600.0,600.0|550.0,600.0|500.0,600.0|450.0,600.0|450.0,650.0|500.0,650.0|550.0,650.0|600.0,650.0|650.0,650.0|2000.0,500.0|2000.0,450.0|1900.0,500.0|1950.0,500.0|1950.0,450.0|1900.0,450.0|1200.0,150.0|1250.0,150.0|1300.0,150.0|1350.0,150.0|1400.0,150.0|1450.0,150.0|1500.0,150.0|1550.0,150.0|1600.0,150.0
+STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|STONEBRICK|PLAYER|ENEMY|SAND|SAND|SAND|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|CORNERGRASS|CORNERGRASS|CORNERGRASS|CORNERGRASS|CORNERGRASS|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|CORNERDIRT|CORNERGRASS|DIRT|DIRT|GRASS|GRASS|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER
--- /dev/null
+none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world
+1250.0,750.0|1200.0,750.0|1350.0,750.0|1350.0,700.0|1450.0,750.0|1450.0,700.0|1450.0,650.0|1450.0,600.0|1450.0,550.0|1250.0,700.0|50.0,800.0|100.0,800.0|150.0,800.0|200.0,800.0|250.0,800.0|300.0,800.0|350.0,800.0|400.0,800.0|450.0,800.0|500.0,800.0|550.0,800.0|600.0,800.0|650.0,800.0|700.0,800.0|750.0,800.0|800.0,800.0|850.0,800.0|900.0,800.0|950.0,800.0|1000.0,800.0|1050.0,800.0|1100.0,800.0|1150.0,800.0|1200.0,800.0|1250.0,800.0|1300.0,800.0|1350.0,800.0|1400.0,800.0|1450.0,800.0|1500.0,800.0|1550.0,800.0|1600.0,800.0|1650.0,800.0|1700.0,800.0|1750.0,800.0|1800.0,800.0|1850.0,800.0|1900.0,800.0|1950.0,800.0|2000.0,800.0|2050.0,800.0|2100.0,800.0|2150.0,850.0|2100.0,850.0|2050.0,850.0|2000.0,850.0|1950.0,850.0|1900.0,850.0|1850.0,850.0|1800.0,850.0|1750.0,850.0|1700.0,850.0|1650.0,850.0|1600.0,850.0|1550.0,850.0|1500.0,850.0|1450.0,850.0|1400.0,850.0|1350.0,850.0|1300.0,850.0|1250.0,850.0|1200.0,850.0|1150.0,850.0|1100.0,850.0|1050.0,850.0|1000.0,850.0|950.0,850.0|900.0,850.0|850.0,850.0|800.0,850.0|750.0,850.0|700.0,850.0|650.0,850.0|600.0,850.0|550.0,850.0|500.0,850.0|450.0,850.0|400.0,850.0|350.0,850.0|300.0,850.0|250.0,850.0|200.0,850.0|150.0,850.0|100.0,850.0|50.0,850.0|0.0,850.0|0.0,800.0|0.0,750.0|0.0,700.0|0.0,650.0|0.0,600.0|0.0,550.0|0.0,400.0|0.0,350.0|0.0,300.0|0.0,250.0|0.0,200.0|0.0,150.0|0.0,100.0|0.0,50.0|0.0,0.0|2200.0,850.0|2200.0,800.0|2200.0,750.0|2200.0,700.0|2200.0,650.0|2200.0,600.0|2150.0,400.0|2200.0,200.0|2200.0,150.0|2200.0,100.0|2200.0,50.0|2200.0,0.0|2150.0,0.0|2150.0,50.0|2150.0,100.0|2150.0,150.0|2150.0,200.0|2150.0,250.0|2150.0,350.0|2150.0,300.0|2200.0,250.0|2200.0,300.0|2200.0,350.0|2200.0,400.0|2200.0,550.0|2150.0,550.0|2150.0,600.0|2150.0,650.0|2150.0,700.0|2150.0,750.0|2150.0,800.0|300.0,600.0|0.0,450.0|2200.0,450.0|2150.0,450.0|2150.0,500.0|2200.0,500.0|0.0,500.0|1900.0,550.0|1900.0,600.0|1900.0,650.0|1900.0,700.0|1900.0,750.0|2050.0,700.0
+GOLDCOIN|BRONZECOIN|PEDESTAL|INTERDIMENSIONALPOWDER|PILLAR_|PILLAR_|PILLAR_|PILLAR_|PILLAR_|SILVERCOIN|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLAYER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|ENEMY
+
+
+
+
+
+
+
+
+
+
+
+
# thing.position.x = pos.x + self.width
# elif vel.x < 0:
# thing.position.x = pos.x - thing.width
- if vel.x > 0:
+ if vel.x >= 0:
pos.x = thing.position.x - self.width
- # vel.x = min(vel.x, 0)
+ vel.x = min(vel.x, 0)
elif vel.x < 0:
pos.x = thing.position.x + thing.width
- # vel.x = max(vel.x, 0)
+ vel.x = max(vel.x, 0)
collision_rect = self.get_collision_rect(pos)
self.on_ground = False
if thing == self:
continue
if collision_rect.colliderect(thing.get_collision_rect()):
- if vel.y > 0:
+ if vel.y >= 0:
pos.y = thing.position.y - self.height
vel.y = min(vel.y, 0)
self.on_ground = True
elif vel.y < 0:
pos.y = thing.position.y + thing.height
- # vel.y = max(vel.y, 0)
+ vel.y = max(vel.y, 0)
# collision_rect = self.get_collision_rect(pos)
return pos, vel
get_display_rect(self.get_collision_rect()).topleft + pg.Vector2(0, 55) +
self.display_offsets["weapon"])
surf.blit(self.display, get_display_rect(self.get_collision_rect()).topleft + self.display_offsets["player"])
+ # print(self, self.position)
# super().draw(surf)
# print(self.position, self.velocity, get_display_rect(self.get_collision_rect()).topleft, Setup.camera_offset)
# pg.draw.rect(surf, self.colour, get_display_rect(self.get_collision_rect()), border_radius=8)
case 4:
scene = Game(4)
case 5:
- scene = Game(7)
+ scene = Game(5)
old_level = level
if level <= 1: