Laden...

Invaders Spielfigur Stoppen

Erstellt von Petra1971 vor 2 Jahren Letzter Beitrag vor 2 Jahren 387 Views
P
Petra1971 Themenstarter:in
5 Beiträge seit 2017
vor 2 Jahren
Invaders Spielfigur Stoppen

Hi ich hoffe ich bin jetzt im richtigen Forumsteil 😁

Ich hab ein youtubetutorial für SpaceInvaders durchprogrammiert.

Problem ist folgendes ... meine Spielfigur fährt links und rechts über den Rand hinaus, und wird auch ausserhalb des Spielfeldes erschossen

Das sind die Steuerungen von der Figur. Wie kann ich sie stoppen? ich weiss wie ich die gegner umleiten kann, aber die fliegen ja von selber.
Mal bitte wer den Knopf in meinem Hirn auflöse!!


  private void KeyIsDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
            {
                GoLeft = true;
            }
            if (e.KeyCode == Keys.Right)
            {
                GoRight = true;
            }

 [color][b]hier käme dann m.E rein, wenn du am linken Rand bist stoppe. wenn du am rechten rand bist stoppe.[/b] [/color]

        }

        private void KeyIsUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
            {
                GoLeft = false;
            }
            if (e.KeyCode == Keys.Right)
            {
                GoRight = false;

U
69 Beiträge seit 2019
vor 2 Jahren

Welches Tutorial hast du denn benutzt?
Als erste Treffer finde ich welche von mooict.
Da gibt es auch einen Link zu einem schriftlichen Tutorial. Bspw.
Dort wird die Begrenzung nach Rechts/Links durch die gameEngine begrenzt. In den Handlern für KeyIsUp/KeyIsDown werden tatsächlich nur die Variablen gesetzt.


            if (goLeft && Canvas.GetLeft(player1) > 0)
            {
                Canvas.SetLeft(player1, Canvas.GetLeft(player1) - 10);
            }

“Knowledge cannot replace friendship. I'd rather be an idiot than lose you.”

  • Patrick to Spongebob
3.825 Beiträge seit 2006
vor 2 Jahren

Das Stoppen der Spielfigur machst Du nicht in der Verarbeitung der Tasteneingaben, sondern in der Bewegung.

Es kann ja sein dass er sich 10 Mal nach rechts bewegen kann und beim 11. Mal an eine Wand stößt.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

P
Petra1971 Themenstarter:in
5 Beiträge seit 2017
vor 2 Jahren
mooict

ja. es war das tutorial von mooict genauer gesagt dieses https://www.mooict.com/c-tutorial-create-a-full-space-invaders-game-using-visual-studio/

bei der schriftlichen Anleitung ist aber nur ein kleiner teil herausgegriffen. Danke für den Tipp erstmal

lg Petra

U
69 Beiträge seit 2019
vor 2 Jahren

Wenn du das Tutorial verwendet hast, dann wirst du auch irgendwo die Methode mainGameTimerEvent oder timer1_Tick haben.
Das könntest du dann in etwa so anpassen (feintuning noch nötig!)


            if (goLeft)
            {
                if (player.Bounds.Left >= playerSpeed)
                    player.Left -= playerSpeed;
            }

            if (goRight)
            {
                if (player.Bounds.Right + playerSpeed <= Bounds.Width)
                    player.Left += playerSpeed;
            }

“Knowledge cannot replace friendship. I'd rather be an idiot than lose you.”

  • Patrick to Spongebob