|
|
|
@ -7,6 +7,8 @@ import pygame
|
|
|
|
|
from time import time
|
|
|
|
|
from math import atan, degrees,radians, cos, sin
|
|
|
|
|
|
|
|
|
|
from utils import *
|
|
|
|
|
|
|
|
|
|
img_path = 'asset/'
|
|
|
|
|
|
|
|
|
|
max_fire_rate = 10 # in fires per seconds
|
|
|
|
@ -75,17 +77,27 @@ class Carte():
|
|
|
|
|
self.back = pygame.image.load('maps/'+mapname+'_back.png').convert()
|
|
|
|
|
self.wall = pygame.image.load('maps/'+mapname+'_wall.png').convert_alpha()
|
|
|
|
|
self.mask = pygame.mask.from_surface(self.wall)
|
|
|
|
|
self.carte, self.player_start_pos = map_generator(5)
|
|
|
|
|
|
|
|
|
|
def draw(self,surface,camera):
|
|
|
|
|
offsetx,offsety = camera.get_offset()
|
|
|
|
|
surface.blit(self.back,(self.posx-offsetx,self.posy-offsety))
|
|
|
|
|
surface.blit(self.wall,(self.posx-offsetx,self.posy-offsety))
|
|
|
|
|
for room in self.carte:
|
|
|
|
|
print(room)
|
|
|
|
|
surface.blit(room[0],(room[2][0]-offsetx,room[2][1]-offsety))
|
|
|
|
|
#surface.blit(self.back,(self.posx-offsetx,self.posy-offsety))
|
|
|
|
|
#surface.blit(self.wall,(self.posx-offsetx,self.posy-offsety))
|
|
|
|
|
|
|
|
|
|
def collision(self,player):
|
|
|
|
|
for room in self.carte:
|
|
|
|
|
if room[1].overlap(player.mask, (player.posx-player.player_rect.center[0]-room[2][0],player.posy-player.player_rect.center[1]-room[2][1])):
|
|
|
|
|
return True
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Camera():
|
|
|
|
|
def __init__(self,start_posx,start_posy,screen_width,screen_height,box_ratio):
|
|
|
|
|
self.posx = start_posx
|
|
|
|
|
self.posy = start_posy
|
|
|
|
|
def __init__(self,start_pos,screen_width,screen_height,box_ratio):
|
|
|
|
|
self.posx = start_pos[0]
|
|
|
|
|
self.posy = start_pos[1]
|
|
|
|
|
self.screen_height = screen_height
|
|
|
|
|
self.screen_width = screen_width
|
|
|
|
|
self.box_ratio = box_ratio
|
|
|
|
@ -104,10 +116,10 @@ class Camera():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Player():
|
|
|
|
|
def __init__(self,name,posx,posy,center_screen,key_up,key_down,key_left,key_right,key_fire,texture,texture_canon,texture_proj):
|
|
|
|
|
def __init__(self,name,start_pos,center_screen,key_up,key_down,key_left,key_right,key_fire,texture,texture_canon,texture_proj):
|
|
|
|
|
self.name = name
|
|
|
|
|
self.posx = posx
|
|
|
|
|
self.posy = posy
|
|
|
|
|
self.posx = start_pos[0]
|
|
|
|
|
self.posy = start_pos[1]
|
|
|
|
|
self.speed = [0,0]
|
|
|
|
|
|
|
|
|
|
self.key_up = key_up
|
|
|
|
@ -174,7 +186,7 @@ class Player():
|
|
|
|
|
# X AXIS
|
|
|
|
|
temp_pos = self.posx
|
|
|
|
|
self.posx = self.posx+self.speed[0]
|
|
|
|
|
if carte.mask.overlap(self.mask, (self.posx-self.player_rect.center[0],self.posy-self.player_rect.center[1])):
|
|
|
|
|
if carte.collision(self):
|
|
|
|
|
self.posx = temp_pos
|
|
|
|
|
self.speed[0] = 0
|
|
|
|
|
|
|
|
|
@ -187,7 +199,7 @@ class Player():
|
|
|
|
|
# Y AXIS
|
|
|
|
|
temp_pos = self.posy
|
|
|
|
|
self.posy = self.posy+self.speed[1]
|
|
|
|
|
if carte.mask.overlap(self.mask, (self.posx-self.player_rect.center[0],self.posy-self.player_rect.center[1])):
|
|
|
|
|
if carte.collision(self):
|
|
|
|
|
self.posy = temp_pos
|
|
|
|
|
self.speed[1] = 0
|
|
|
|
|
|
|
|
|
@ -203,7 +215,7 @@ class Player():
|
|
|
|
|
# X AXIS
|
|
|
|
|
temp_pos = self.posx
|
|
|
|
|
self.posx = self.posx+self.speed[0]
|
|
|
|
|
if carte.mask.overlap(self.mask, (self.posx-self.player_rect.center[0],self.posy-self.player_rect.center[1])):
|
|
|
|
|
if carte.collision(self):
|
|
|
|
|
self.posx = temp_pos
|
|
|
|
|
self.speed[0] = 0
|
|
|
|
|
# If the player really move, camera follow
|
|
|
|
@ -213,7 +225,7 @@ class Player():
|
|
|
|
|
# Y AXIS
|
|
|
|
|
temp_pos = self.posy
|
|
|
|
|
self.posy = self.posy+self.speed[1]
|
|
|
|
|
if carte.mask.overlap(self.mask, (self.posx-self.player_rect.center[0],self.posy-self.player_rect.center[1])):
|
|
|
|
|
if carte.collision(self):
|
|
|
|
|
self.posy = temp_pos
|
|
|
|
|
self.speed[1] = 0
|
|
|
|
|
# If the player really move, camera follow
|
|
|
|
|