Problem beim Pacman programmieren (for&foreach-Schleife mit PictureBoxen)



  • Hallo,
    Ich möchte im Moment Pacman programmieren und habe ein Problem damit.
    Mein Problem ist, dass ich gerne das Futter für Pacman immer durch eine for-Schleife laufen lassen will und bei dem Futter wo er gerade ist soll Visible auf false gesetzt werden.

    Leider komme ich mit dieser for-schleife nicht weiter:

    for (int index = 1; index < 80; index++)
                {
                    if (panel1.Bounds == pictureBox[index].Bounds && pictureBox[index].Visible == true)
                    {
                        pictureBox[index].Visible = false;
                        punkte += 10;
                        label1.Text = Convert.ToString(punkte);
                    }
                }
    

    Natürlich könnte man auch alles selber schreiben, aber dies wäre bei 80 bis 100 Futter Punkten jedesmal eine IF-Abfrage und würde sehr unsauber aussehen.

    Hat mir vielleicht jemand einen Tip?
    Ich hab schon danach gegoogelt bin aber nicht auf eine passende Seite gekommen.



  • Trenne die Spiellogik konsequent von der Darstellung, dann erledigen sich die Probleme von selbst.
    Irgendwelche Controls in die Logik einzubeziehen ist ein furchtbar schlechter Programmentwurf.

    Also: Wirf den Müll weg und fange nochmal neu an. Nur mit der Logik. Und zwar in der Form, dass sie sowohl auf der Console als auch in Winforms funktionieren würde. Danach bastelst Du mit ein paar Zeilen die GUI zusammen.



  • Ok. Dank dieser Antwort weiß ich nun endgültig dass ich im falschen Forum bin und hier wahllos mit Antworten rumgeworfen wird ohne überhaupt konkrett auf die Frage einzugehen.



  • Verwende bei Schleifen, welche Arrays durchlaufen bei der Iterationsvariabel immer den Wert 0 bei der Initialisierung, da dies dem ersten Index im Array entspricht.

    for(int i = 0; i < 100; i++){}
    

    Könntest du denn auch näher erklären, warum deine Schleife so denn nicht korrekt ist? Fehlermeldung oder Fehlverhalten?


Log in to reply