Add set_content and some other functionalities

This commit is contained in:
emil
2024-10-14 09:32:04 +03:00
parent 6a115874cf
commit a24c87f85c
+42 -19
View File
@@ -24,7 +24,6 @@ class Vector2:
def __floordiv__(self, other):
return Vector2(self.x // other, self.y // other)
def magnitude(self):
return (self.x**2 + self.y**2)**0.5
def to_array(vector):
@@ -32,6 +31,9 @@ class Vector2:
def normalize(self):
length = self.magnitude()
return Vector2(self.x / length, self.y / length)
def set_from_tuple(self,tup):
self.x = tup[0]
self.y = tup[1]
@@ -39,15 +41,24 @@ class Vector2:
#ENTITIES
class Entity:
position = Vector2(0,0)
coordinates = Vector2(0,0) ##PIXELS
position = Vector2(0,0) ##CELLS
name = ""
def __init__(self, initial_position, name):
self.position = initial_position
def __init__(self, initial_position:tuple, name):
self.position.set_from_tuple(initial_position)
#self.set_cell(initial_position[0], initial_position[1])
self.coordinates = map.cell_grid[initial_position[0]][initial_position[1]].coordinates
map.cell_grid[initial_position[0]][initial_position[1]].set_content(self)
self.name = name
def draw(self):
def set_cell(self, x, y):
map.get_cell(self.position.x,self.position.y).set_content(None)
self.position.set_from_tuple((x,y))
self.coordinates = map.cell_grid[x][y].coordinates
map.cell_grid[x][y].set_content(self)
def draw(self, color):
font = pg.font.Font(None, 32)
text = font.render(self.name, True, (0, 255, 255))
screen.blit(text, (self.position + Vector2(0, 0)).to_array())
text = font.render(self.name, True, color)
screen.blit(text, (self.coordinates + Vector2(0, 0)).to_array())
class Actor(Entity):
perception_radius = 0
@@ -94,31 +105,37 @@ class Cell:
position = Vector2(0,0)
size = 50
piece = pg.Rect(0, 0, size, size)
content = None
def __init__(self, coordinates):
self.coordinates = coordinates
self.position = coordinates // self.size
self.piece = pg.Rect(self.coordinates.x, self.coordinates.y, self.size, self.size)
def draw(self):
pg.draw.rect(screen, (255, 255, 255), self.piece)
def set_content(self, content):
self.content = content
class Map:
cellSize = CELLSIZE
cell_Grid = []
cell_grid = []
margin = 5
dimension = Vector2(8,8)
offset = Vector2(50, 50)
def __init__(self):
def __init__(self, dimension:tuple):
self.dimension.set_from_tuple(dimension)
for x in range(self.dimension.x):
col = []
for y in range(self.dimension.y):
col.append(Cell(Vector2(self.offset.x + x * (self.cellSize + self.margin), self.offset.y + y * (self.cellSize + self.margin))))
self.cell_Grid.append(col)
cell = Cell(Vector2(self.offset.x + x * (self.cellSize + self.margin), self.offset.y + y * (self.cellSize + self.margin)))
cell.position = Vector2(x,y)
col.append(cell)
self.cell_grid.append(col)
def get_cell(self, x, y):
return self.cell_grid[x][y]
def draw(self):
for y in range(self.dimension.y):
for x in range(self.dimension.x):
print(self.cell_Grid[x][y].coordinates.y)
self.cell_Grid[x][y].draw()
self.cell_grid[x][y].draw()
@@ -127,10 +144,15 @@ screen = pg.display.set_mode([512,512])
pg.display.set_caption("Matrix Universe")
cell = Cell(coordinates=Vector2(50,50))
map = Map()
map = Map((8, 8))
neo = Neo((0,0), 1, (0,0))
neo.set_cell(4,5)
#smith = Smith((0,0),2)
print(map.get_cell(4,5).content.name)
print(map.get_cell(0,0).content)
neo = Neo(map.cell_Grid[0][0].coordinates, 1, Vector2(0,0))
neo.position = map.cell_Grid[1][0].coordinates
running = True
while (running):
@@ -139,5 +161,6 @@ while (running):
running = False
screen.fill('BLACK')
map.draw()
neo.draw()
neo.draw("blue")
#smith.draw("red")
pg.display.update()