Frage

Ich arbeite also an einem Tetris-Spiel als Schulprojekt in C. Ich habe ein kleines Problem mit der folgenden Situation. In Tetris, wenn man eine horizontale Zeile abschließt, sollte die Zeile gelöscht werden, und alles über der Reihe sollte einen Ort hinunterziehen. Das seltsame Ding an meinem Code ist, dass der Block, wenn ich einen Block in der linken Seite oder das Zentrum des Boards platziere, der Block bleibtDa sollte es sein.Wenn ich jedoch einen Block auf der rechten Seite des Boards lege, wird es sofort gelöscht. Ich lege meinen Quellcode unten, damit Sie sehen können, worüber ich spreche.

Funktionsprüfung (int ycheckup, int yp)

generasacodicetagpre.

Main:

generasacodicetagpre.

War es hilfreich?

Lösung

Ich bin nicht sicher, warum Sie CheckFory () geteilt haben, die nicht mit der Logik des Löschen einer Zeile zusammenhängt.Ein paar Kommentare würden nicht weh tun, daher würden wir leicht wissen, welchen Teil den Block runterbezieht, und was zum Reinigen einer Zeile ist, sobald das Stück in seiner endgültigen Position ist.

Ich sehe, was in der IF-Anweisung ein Fehler ist, der nach einer vollen Reihe sucht - es hängt von x ab, aber es ist in einem Schleifen inkrementiert x.Es erscheint mir, dass der Überprüfen nur ordnungsgemäß auf der ersten Schleife arbeitet und danach in die nächste Zeile der Blöcke gelesen wird.Ein Block, der auf der rechten Seite angeordnet ist, führt also einen Vergleich auf diesem Block und die verbleibenden 3-Prüfungen sind gegen Blöcke in der nächsten Zeile.

Ich denke, Sie haben eine fehlerhafte Endstrebe, und die erste For-X-Schleife im mittleren Abschnitt sollte einfach die eine Zeile sein, die eine Schattenkopie der aktuellen Zeile erstellt (bei Bedarf nach unten).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top