Einzelnen Beitrag anzeigen

Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Tetris rotation

  Alt 3. Mär 2011, 10:31
Hallo,

hab das ganze jetzt mal für den ' ---- '-Stein angepasst.
Nur ein Problem besteht jetzt noch, wenn ich öfters hintereinander nach rechts drehe Bewegt der Spielstein sich nach rechts.
Bei der Linksdrehung bleibt alles okay.

Hier mal die jetzige Methode:
Code:
public override void rotate(RotateDirection rotDir)
        { 
            Point AB;
            int Dimension = 5;

            Mittelpunkt = (Fields[2].X > Fields[1].X || Fields[2].Y > Fields[1].Y) ? Fields[2] : Fields[1];

            bool[] fieldIsRefreshed = {false,false,false,false};
            for (int i = Mittelpunkt.X - 2; i < Mittelpunkt.X - 2 + Dimension - 1; i++)
            {
                for (int j = Mittelpunkt.Y - 2; j < Mittelpunkt.Y - 2 + Dimension - 1; j++)
                {
                    for (int k = 0; k < Fields.Length ; k++)
                    {
                        if (!fieldIsRefreshed[k])
                        {
                            if (i == Fields[k].X && j == Fields[k].Y)
                            {
                                AB = new Point(i - Mittelpunkt.X, j - Mittelpunkt.Y);
                                AB = (rotDir == RotateDirection.Right) ? AB = new Point(-AB.Y, AB.X) : new Point(AB.Y, -AB.X);
                                Fields[k] = new Point(AB.X + Mittelpunkt.X, AB.Y + Mittelpunkt.Y);
                                fieldIsRefreshed[k] = true;
                            }
                        }
                    }
                }
            }
        }
Jetzt nur noch verallgemeinern für die anderen Spielsteine und dann sollte es klappen
Delphi programming is awesome.
  Mit Zitat antworten Zitat