Jamster3000 / Son-of-Hammond

Apache License 2.0
1 stars 0 forks source link

[test] Map rendering #7

Open Jamster3000 opened 4 months ago

Jamster3000 commented 4 months ago

Create a test for generating the starting map.

At the start of the game there will be the following things that should be on the map

The map will not use a 2D matrix such as this.

# 0 = grass ground texture
# 1 = fence
# 2 = house
# 3 = NPC/tutorial guy
# 4 = player position
homestead = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1],
    [1, 0, 0, 0, 3, 0, 0, 4, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]

I've decided because this will constatly be updated and often and having the same things mulitple times but have different traits to the object could be an issue, not to mention overlays aren't so easy in this way.

class NPC:
    def __init__(self, x, y, npc_type):
        self.x = x
        self.y = y
        self.type = npc_type
        self.active = True  # Example state for activity or interaction

    def move(self, new_x, new_y):
        self.x = new_x
        self.y = new_y

# Example NPCs
npcs = [
    NPC(3, 4, 1),  # Example NPC at position (3, 4) with type 1
    NPC(6, 2, 2),  # Example NPC at position (6, 2) with type 2
    NPC(10, 5, 3)  # Example NPC at position (10, 5) with type 3
]

# Updating NPC positions or states
npcs[0].move(4, 4)  # Move first NPC to (4, 4)

# Rendering or interacting with NPCs
for npc in npcs:
    if npc.active:
        # Render or interact with NPC based on its type and position
        print(f"NPC Type {npc.type} at ({npc.x}, {npc.y})")

This is an example of a more object-oriented approach. Where the position of everything isn't directly kept in memory and can be updated and moved about much easier.

test code will need to be produced for this to ensure it functions as expected. Impliment the player movement test into this code.