Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FLO2

Treue Seele

  • »FLO2« ist der Autor dieses Themas

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

21

31.07.2009, 15:52

Des ist jetzt ein bischen stark OT.
Trotzdem Danke!
Bei einem enum mit Namen kann dann nur die Werte in den geschweiften Klammern der "Konstante" zuweißen.
EDIT: Da war wer schneller :)
Pi mal Daumen = 18.84955592

FLO2

Treue Seele

  • »FLO2« ist der Autor dieses Themas

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

22

31.07.2009, 21:59

Sorry für den doppel Post!
Mir ist gerade nicht klar was die Funktion GetPosition bewirkt.
Kann ich mit ihr die Teilsteine benutzen, aber wie?

Und muss die Funktion ReiheLösen nicht die Positionen als Parameter übergeben bekommen? Und auch die Memberfunktionen der Klasse?

Edit:
Für was benötige ich eig. Direction.
Ich entschede mich einfach dafür das sich das Objekt immer nach rechts dreht?
Pi mal Daumen = 18.84955592

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

23

01.08.2009, 16:21

mit getposition holst du dir die position eines teilblocks. du bekommst als
rückgabewert eine positions-struktur mit x und y werten. wofür man das
braucht weißt du bestimmt :)

alle funktionen sollten zugriff auf das spielfeldarray haben.

und in jedem normalem tetris kann man die steine aucvh nach links drehen :D
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

FLO2

Treue Seele

  • »FLO2« ist der Autor dieses Themas

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

24

01.08.2009, 20:44

Zitat von »"Gotbread"«

und in jedem normalem tetris kann man die steine aucvh nach links drehen :D

Mit ner extra Taste? Ist mir noch nicht aufgefallen. :?
Pi mal Daumen = 18.84955592

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

25

01.08.2009, 21:21

versuchs mal mit der links pfeiltaste :D
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

FLO2

Treue Seele

  • »FLO2« ist der Autor dieses Themas

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

26

01.08.2009, 21:47

Dann bewegt er es dahin, dreht es aber nicht :o
Pi mal Daumen = 18.84955592

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

27

02.08.2009, 00:04

upsa hast recht :( mei fehler
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

FLO2

Treue Seele

  • »FLO2« ist der Autor dieses Themas

Beiträge: 221

Beruf: Schüler

  • Private Nachricht senden

28

04.08.2009, 13:57

Hi
(Weiß net ob das noch hier hingehört)
So jetzt bin ich fertig mit coden!
Nachdem ich die 81 Fehler behoben habe ;) macht das Programm nicht was es soll. Ich hoffe der Code ist noch ungefähr in Gotbreads Sinne. Ich suche den Fehler schon länger, finde ihn aber nicht.

Code: http://www.pasteall.org/6954/cpp

Vielleicht liegt es an der Warnung:

Quellcode

1
2
3
4
5
6
warning C4996: 'kbhit': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _kbhit. See online help for details.
1>        C:\Programme\Microsoft Visual Studio 9.0\VC\include\conio.h(147): Siehe Deklaration von 'kbhit'
1>.\Tetris.cpp(499) : warning C4996: 'kbhit': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _kbhit. See online help for details.
1>        C:\Programme\Microsoft Visual Studio 9.0\VC\include\conio.h(147): Siehe Deklaration von 'kbhit'
1>.\Tetris.cpp(501) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1>        C:\Programme\Microsoft Visual Studio 9.0\VC\include\conio.h(145): Siehe Deklaration von 'getch'


So sieht die Ausgabe aus:

(Link)


Ich weiß nicht wie dieses komische Objekt an den oberen Bildschirmrand kommt :?
Eig. sollten die Objekte einfach von oben nach unten runter rattern, wenn links gedrückt wird nach links etc.
Es lässt sich leider nicht einmal steuern!

Danke im Voraus
Pi mal Daumen = 18.84955592

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

29

04.08.2009, 22:01

Die Warnung weißt dich nur darauf hin, dass die Funktion veraltet ist und vllt in neueren Compilerversionen nicht mehr unterstützt wird. Sie sollte eig. nichts mit dem Problem zu tun haben.
Übrigens: Befolge doch einfach mal den Rat in der Warnung("See online help for details. ")
=> http://msdn.microsoft.com/de-de/library/…28VS.80%29.aspx

Warum rufst du in der main 2x die Funktion Steuerung auf?

Ich hab mir mal deinen Code kopiert. Debuggen hat ergeben, dass sich der Code in der Funktion Spielfeld in einer Endlosschleife aufhängt. Die Variable full ist bei jedem Durchlauf true. Wenn ich den Teil zum Testen auf volle Reihen entferne, dann ist zwar diese Endloschleife beseitigt, aber das Ergebnis ist das gleiche. Der Fehler muss woanders liegen.

EDIT: CanFall in der main liefert jedes mal false zurück.
Signaturen werden überbewertet

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

30

05.08.2009, 13:03

Noch ein paar allg. Anmerkungen zu deinem Code:
1. Da dein Array mit den Steinen global ist, wird er vor dem Aufruf der main iniitalisiert. Deshalb solltest du besser srand im Konstruktor Der Klasse Stein aufrufen, wenn du willst, dass auch der erste Stein zufällig ist.
2. Warum erstellst du für die Steine einen Array mit 500 Elementen? so viele passen doch sowieso nicht in das Spielfeld
3. Warum verwendest du überhabt einen Array für die Steine? Wenn ein stein ganz herunter gefallen ist, ist er doch kein ganzer Stein mehr, denn er kann ja durch volle Reihen auch nur teilweise zerstört werden. Prinzipiell reicht es, immer nur mit einem einzigen Stein-Objekt zu arbeiten, das den aktuell steuerbaren fallenden Stein repräsentiert.
4. Warum machst du die Steine (bzw. den Stein wenn du meinen vorhergehenden Rat befolgst) global?
5. wenn du nur mit einem Stein-Objekt arbeitest sparst du dir auch die Variable Zähler
6. ist dein Code verdammt langsam und das Ergebnis flackert schrecklich.
7. Zu Kommentaren: du solltest dir eine bessere Art angewöhnen deinen Code zu kommentieren. Die meisten deiner Kommentare (z.B. "Das ist die main Funktion") sind völlig nutzlos, da man das auch im Code auf den ersten Blick erkennt, während andererseits wichtige Funktionen (wie z.B. der Konstruktor der Klasse Stein) keinerlei Kommentare enthalten, welche die Vorgehensweise beschreiben
8. Ist es nicht sehr hilfreich den kompletten Code in eine Datei zu pressen.

Ich schlage vor, dass du das Tetris noch einmal gründlich planst und komplett neu entwickelst und dabei u.a. die oben genannten Gesichtspunkte berücksichtigst. Du wirst sehen, dass du nach ausführlicher Planung, mit gut Durchdachtem Code und mit ausführlichen Kommentaren gleich viel schneller und viel weiter vorankommst.
Zur Planung reicht es prinzipiell schon, wenn du dir einen Schreibblock vornimmst und aufschreibst, wie du das ganze entwickeln willst, dann überlegst du dir welche Klassen und Funktionen du benötigst, und planst, wie diese aufgebaut sind. All das schreibst du dir erst einmal auf und dann fängst du erst mit dem programmieren an. Du wirst sehen: Das geht viel leichter und schneller als einfach drauflos zu programmieren. Beim Programmieren werden dir neue Ideen kommen, wie du das ganze verbessern kannst. Diese planst du am besten auch ausführlich und setzt sie dann um. Das bedeutet nämlich Anwendungsentwicklung: Eine Endlosschleife von Planung/Design, Programmierung und Tests.

gl&hf
Signaturen werden überbewertet

Werbeanzeige