INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Spiel erstellen (Tetris)



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.03.2016, 22:38
Beitrag #1

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



Spiel erstellen (Tetris)
Wir haben in der Schule die Aufgabe bekommen, ein Spiel zu erstellen und ich hab mich für Tetris entschieden. Bin da aktuell etwas am verzweifeln und das eigtl ziemlich am Anfang.

Ich will die Randomshapes die ich erstelle drehen wenn ich die "nach oben" Taste drücke also 90° 180° 270° 360°. Funktioniert so halbwegs auch schon, allerdings nur 90°. Ich muss iwie die Tastenbetätigung zählen (bis 4) und den Wert speichern. Aktuell springt das gedrehte Array beim loslassen der Taste immer wieder in den Ursprung zurück.

Hoffe ihr versteht was ich mein und könnt mir helfen. Und gibt es ne möglichkeit, dass ich die Farbe von den Arrays noch random wechseln kann?


Angehängte Datei(en)
9.0 .vi  TETRIS.vi (Größe: 12,88 KB / Downloads: 210)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.03.2016, 08:26 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2016 08:29 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spiel erstellen (Tetris)
Hallo dauce,

Zitat:Ich will die Randomshapes die ich erstelle drehen wenn ich die "nach oben" Taste drücke also 90° 180° 270° 360°. Funktioniert so halbwegs auch schon, allerdings nur 90°.
So weit, so gut…

Zitat:Ich muss iwie die Tastenbetätigung zählen (bis 4) und den Wert speichern. Aktuell springt das gedrehte Array beim loslassen der Taste immer wieder in den Ursprung zurück.
Du musst keine Tastendrücke zählen: du musst dir nur das gedrehte Objekt merken!
Und wie merkt man sich in Schleifen Werte so, dass sie in der nächsten Iteration zur Verfügung stehen?

Zitat:Und gibt es ne möglichkeit, dass ich die Farbe von den Arrays noch random wechseln kann?
Nein.
In einem Array haben alle Elemente die exakt selben Eigenschaften und unterscheidenn sich nur im Wert!

Vorschlag:
   
Tipps:
- Nimm einen Intensitygraph.
- Erstelle eine Statemachine. (Oder verwende einen QueueDrivenMessageHandler (QDMH).)
- Die Eventstruktur ist sehr hilfreich, um Tastendrücke auszuwerten.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2016, 13:22
Beitrag #3

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



RE: Spiel erstellen (Tetris)
(11.03.2016 08:26 )GerdW schrieb:  
Zitat:Ich muss iwie die Tastenbetätigung zählen (bis 4) und den Wert speichern. Aktuell springt das gedrehte Array beim loslassen der Taste immer wieder in den Ursprung zurück.
Du musst keine Tastendrücke zählen: du musst dir nur das gedrehte Objekt merken!
Und wie merkt man sich in Schleifen Werte so, dass sie in der nächsten Iteration zur Verfügung stehen?

Wahrscheinlich mit nem Schieberegister.. ich hab glaub ich schon alle Möglichkeiten durch.. Confused


(11.03.2016 08:26 )GerdW schrieb:  Vorschlag:

Tipps:
- Nimm einen Intensitygraph.
- Erstelle eine Statemachine. (Oder verwende einen QueueDrivenMessageHandler (QDMH).)
- Die Eventstruktur ist sehr hilfreich, um Tastendrücke auszuwerten.

Danke für die Tipps, aber davon hab ich noch weniger Ahnung als von den Arrays.. Kenn Labview erst n halbes Jahr und wir haben auch nur so die ganzen "Standardsachen" kurz angesprochen..

Das wird ein Spaß Bahn
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2016, 13:34 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2016 13:35 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spiel erstellen (Tetris)
Hallo dauce,

Zitat:Wahrscheinlich mit nem Schieberegister..
Korrekt…

Zitat:Das wird ein Spaß
Ich habe den QueueDriven-Ansatz gewählt:
   
Die obere Schleife arbeitet die Befehle ab, die die untere erzeugt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2016, 14:00
Beitrag #5

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



RE: Spiel erstellen (Tetris)
Ok, krass. Sieht ziemlich kompakt aus, davon bin ich noch Lichtjahre entfernt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2016, 20:55 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2016 20:56 von dauce.)
Beitrag #6

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



RE: Spiel erstellen (Tetris)
Jetzt zeigts mir das gedrehte Array zwar an, allerdings nur 90°. Wie krieg ich es hin, dass die For-Schleife immer bei Tastendruck mit dem alten Wert(Array) ausgeführt wird? Ich komm nicht drauf. Huh


Angehängte Datei(en)
9.0 .vi  TETRIS.vi (Größe: 13,57 KB / Downloads: 159)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.03.2016, 19:38 (Dieser Beitrag wurde zuletzt bearbeitet: 13.03.2016 19:40 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spiel erstellen (Tetris)
Hallo dauce,

Zitat:Wie krieg ich es hin, dass die For-Schleife immer bei Tastendruck mit dem alten Wert(Array) ausgeführt wird? Ich komm nicht drauf.
Habe ich doch oben schon gesagt: du musst dir den letzten Zustand deines Arrays merken!
Und wie merkt man sich Daten, um sie in der nächsten Iteration wieder zur Verfügung zu haben? Das weißt du doch auch schon: mit einem Schieberegister!

- Was soll überhaupt das Ausführen der (äußeren) FOR-Loop entweder einmal oder Null-mal? Wenn man Code anhand einer Bedingung ausführen will, nimmt man eine Case-Struktur!!! Warum sind diese Konstanten als DBL hinterlegt statt als I32?
- Was soll diese Abfrage von "i" innerhalb der äußeren FOR-Loop? Entweder die Loop wird null-mal durchgeführt und der Vergleich findet NIE statt - oder die Loop wird genau einmal ausgeführt und "i" ist dann NULL und die innere FOR-Loop wird ZWEImal durchlaufen…
- Wozu überhaupt "i" auf ">=0" testen? Wenn dieser Code überhaupt ausgeführt wird, dann ist "i" IMMER größer/gleich NULL!
- Was willst du mit der Case-Struktur innerhalb der inneren FOR-Loop erreichen? Was willst du mit dem nichtinitialisierten Schieberegister hier erreichen?
(Bis auf das nichtinitialisierte Schieberegister haben die anderen Dinge NICHTS mit LabVIEW an sich zu tun, das ist einfach nur unsinnig geplanter Code…)

Beispiel zu deinem VI:
   
Ich würde eine Event-Struktur statt der Tastaturabfrage-Funktionen verwenden…
In die Schleife gehört noch eine Wartezeit. Es sollte einen Stopp-Button geben…

Ernst gemeinter Tipp: Vor dem eigentlichen Programmieren zeichnet man sich einen PAP auf ein Blatt Papier!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2016, 10:12
Beitrag #8

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



RE: Spiel erstellen (Tetris)
(13.03.2016 19:38 )GerdW schrieb:  Beispiel zu deinem VI:

Ich würde eine Event-Struktur statt der Tastaturabfrage-Funktionen verwenden…
In die Schleife gehört noch eine Wartezeit. Es sollte einen Stopp-Button geben…

Ernst gemeinter Tipp: Vor dem eigentlichen Programmieren zeichnet man sich einen PAP auf ein Blatt Papier!

und das lässt sich so einmal komplett rumdrehen? also 90° 180° 270°?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2016, 10:22
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.427
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Spiel erstellen (Tetris)
Hallo dauce,

Zitat:und das lässt sich so einmal komplett rumdrehen? also 90° 180° 270°?
Wenn man die richtige Operation zum Drehen verwendet: Ja.
Mit dem aktuell enthaltenen Transpose2DArray wird natürlich nur an der Hauptdiagonalen gespiegelt…

Wenn dir aber nicht klar sein sollte, wie man ein Array drehen kann, dann kann ich dir dieses Community-Beispiel bei NI empfehlen. Christian (Altenbach) ist ein sehr guter LabVIEW-Programmierer…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2016, 19:46
Beitrag #10

dauce Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Oct 2015

15,0
2015
kA



RE: Spiel erstellen (Tetris)
Habs jetzt so gelöst, funktioniert. So, und jetzt das ganze in n neues Array bringen und das ganze von oben nach unten laufen lassen. Hmm


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Wink Roulette Spiel erstellen girlthatneedshelp 1 2.867 30.11.2018 10:21
Letzter Beitrag: GerdW

Gehe zu: