Pygame Vampire Survivors?

Hallo ich programmiere gerade ein Spiel in Pygame das dem Spiel Vampire Survivors ähnelt ich habe aktuell das problem das Problem das wenn der spieler auf die Gegner hinzu läuft die Gegener nach hinten verschoben werden staat nach vorn weil.

Also aktuell wenn ich stehe laufen die Gegner auf mich zu.

Und wenn ich von den Gegnern weg laufe werden sie aus dem Screen geschoben.

Aber wenn ich auf sie zu laufe werden sie auch aus dem Screen geschoben.

Obwohl sie dann normal laufen sollen als ob der spieler steth hier der wichtige code:   def update(self, dt, player, screen_width, screen_height):

    if not self.collided_with_enemy and self.is_visible:

      dx = player.x - self.x

      dy = player.y - self.y

      distance = max(1, pygame.math.Vector2(dx, dy).length())

      direction = pygame.math.Vector2(-dx / distance, -dy / distance)

      player_rect = pygame.Rect(player.x, player.y, player.hitbox_width, player.hitbox_height)

      enemy_rect = pygame.Rect(self.x, self.y, self.hitbox_width, self.hitbox_height)

      if player_rect.colliderect(enemy_rect):

        player.handle_collision()

        self.speed = 0

        return

      if dx != 0 and dy != 0:

        dx = 0

        dy = 0

      speed_multiplier = self.speed * dt

      if player.is_moving:

        speed_multiplier *= 0.5

      # Anpassung der Bewegungsrichtung basierend auf dem Spielerstatus

      if player.is_moving:

        self.x -= direction.x * speed_multiplier

        self.y -= direction.y * speed_multiplier

      else:

        self.x += direction.x * speed_multiplier

        self.y += direction.y * speed_multiplier

      self.x = max(-self.hitbox_width, min(self.x, screen_width))

      self.y = max(-self.hitbox_height, min(self.y, screen_height))

      self.animation_timer += dt

      if self.animation_timer >= self.animation_speed:

        self.animation_timer = 0

        self.current_frame = (self.current_frame + 1) % self.animation_frames

      # Anpassung der Geschwindigkeit basierend auf der Bewegungsrichtung des Spielers

      player_direction = pygame.math.Vector2(player.x - self.x, player.y - self.y)

      player_distance = max(1, player_direction.length())

      player_direction = player_direction.normalize()

      dot_product = player_direction.dot(direction)

      if dot_product > 0.5:

        # Spieler bewegt sich dem Gegner entgegen

        self.speed = self.original_speed + 100

      else:

        # Spieler bewegt sich vom Gegner weg

        self.speed = self.original_speed - 100

    else:

      self.x += self.direction * self.speed * dt

      self.collided_with_enemy = False

    for enemy in enemies:

      if check_enemy_collision(player, enemy):

        break

Java, JavaScript, Minecraft, C Sharp, Programmiersprache, Python, Python 3, Unity, Pygame
C# Versuch zwei?

Guten Morgen,

ich bin gerade dabei mit dem Programmieren bei C# Anzufangen und bräuchte mal ein wenig Hilfe. Ich habe bis jetzt diesen Code:

using System;
namespace roboter
{
  class Program
  {
    static void Main(string[] args)
    {
      string antwort;
      bool antwortOk;
      string antwortRobo;
      bool antwortOkRobo;
      {
        do
        {
          Console.WriteLine("Guten Tag Herr Baumann, möchten sie meinen Roboter starten? [Ja|Nein]");
          antwort = Console.ReadLine();
          antwortOk = antwort.ToLower() == "ja" || antwort.ToLower() == "nein";
          if (!antwortOk)                                              //Nur die Frage, ob man es starten will
          {
            Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
          }
        } while (!antwortOk);
        do
        {
          Console.WriteLine("Ist die Wand schon da?");
          antwortRobo = Console.ReadLine();
          antwortOkRobo = antwortRobo.ToLower() == "ja" || antwortRobo.ToLower() == "nein";
          if (!antwortOkRobo)                                              //Nur die Frage, ob man es starten will
          {
            Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
          }
          Console.WriteLine("Schritt");
        } while (!antwortOkRobo);
        Console.WriteLine("Drehung");
         
        do
        {
          Console.WriteLine("Möchten Sie eine weitere Aufgabe Berechnen? [Ja|Nein]");
          antwort = Console.ReadLine();
          antwortOk = antwort.ToLower() == "ja" || antwort.ToLower() == "nein";
          if (!antwortOk)
          {                                                    //Nur Frage, ob man ihn nochmal starten soll
            Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
          }
        } while (!antwortOk);
      } while (antwort.ToLower() == "ja") ;
      Console.WriteLine("Bis zum nächsten Mal!");
      Console.ReadKey();
    }
  }
}

Ich würde gerne, dass er nur den Schritt macht, wenn man nein sagt. Und wenn man ja sagt, soll er sich nur drehen und keinen Schritt machen, wie kann ich das am besten umsetzen?

C Sharp, Visual Studio

Meistgelesene Beiträge zum Thema C Sharp