First Steps

Wie im letzten Post angekündigt kommt jetzt das erste update zu meinem kleinen 2d spiel. Über das Wochenende habe ich die grundlegende Bases für das Projekt geschaffen.

Die Basis ist jedoch noch nicht voll ausgereift. Gerade wenn es um die Ränder des “Spielfeldes” geht muss noch ein Limit eingeführt werden.

Alles in allem Steht jetzt nicht mehr viel im weg um voran zu kommen mit dem Projekt. Die ziele der nächsten Woche sind die Erstellung von Rand Parametern und das erstellen von ersten Objekten und auch Gegnern im spiel. Wenn ich schnell voran komme sind auch schon erste Charaktere und Map “Designs” in Planung doch wie gesagt liegt auf diesen Designs nicht der Fokus.

import tkinter as tk

class MoveCharacter(tk.Canvas):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)

        self.dx = 0
        self.dy = 0

        # Create the box (character)
        self.box = self.create_rectangle(50, 50, 60, 60, fill="black")

        # Set update interval in milliseconds
        self.dt = 100
        self.tick()

    # Movement handler that gets called every dt milliseconds
    def tick(self):
        self.move(self.box, self.dx, self.dy)

        # Reset the movement after each tick
        self.dx = 0
        self.dy = 0

        # Repeatedly call tick method to continue the movement loop
        self.after(self.dt, self.tick)

    # Method to change direction of movement
    def change_heading(self, dx, dy):
        self.dx = dx
        self.dy = dy


def main():
    # Create the main window
    root = tk.Tk()
    root.title("2D Game")
    root.geometry("1080x720")
    root.configure(bg="black")

    # Create the MoveCharacter canvas (size 900x900)
    character_canvas = MoveCharacter(root, width=900, height=900, bg="lightblue")
    character_canvas.pack()

    # Define movement step size
    ds = 100  # Smaller step for smoother movement

    # Bind key presses for movement
    root.bind("<KeyPress-a>", lambda _: character_canvas.change_heading(-ds, 0))  # Move left
    root.bind("<KeyPress-d>", lambda _: character_canvas.change_heading(ds, 0))   # Move right
    root.bind("<KeyPress-w>", lambda _: character_canvas.change_heading(0, -ds))  # Move up
    root.bind("<KeyPress-s>", lambda _: character_canvas.change_heading(0, ds))   # Move down

    # Start the main loop
    root.mainloop()

# Run the program
main()

Leave a Reply

Your email address will not be published. Required fields are marked *