ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4435020
Jetzt (Chat):
7 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Tetris-Clone" von Jörg (Jake)


Hier seht ihr drei Screenshots aus meinem Tetrisklon. Es handelt sich um eine Win32-Konsolonanwendung, die ich lediglich geschrieben habe, um mich mit Multithreading vertraut zu machen. Folglich befinden sich Grafik, Input und Sound (über PC-Speaker) jeweils in einem eigenen Thread.

Die Grafikausgabe wurde über die in deklarierten Funktionen WriteConsoleOutputCharacter() und WriteConsoleOutputAttribute() realisiert, der PC-Speaker wird über die Funktion Beep() angesprochen.

Zu den vielfältigen Features des Spiels sind noch folgende zu zählen:
- Highscores werden verschlüsselt gespeichert, um Cheating vorzubeugen
- Der Spieler kann zwischen 10 Geschwindigkeitsstufen wählen

Zu den einzelnen Screenshots muss ich wohl nicht viel sagen:
oben links: Hauptmenü
oben rechts: eine typische Tetris-Szene
unten: Highscoreliste (mit meinen legendären Leistungen :D )

Ihr könnt euch das Programm inklusive Quellcode auf meiner Homepage http://www.messiahzone.de herunterladen (Downloads->Tetris - Der Klon). Ich muss jedoch anmerken, dass der Code etwas unübersichtlich erscheint, deshalb habe ich für alle, die sich diesen antun möchten, ein kleines UML-Diagramm vorbereitet, das dem Download ebenfalls beiliegt bzw. auf meiner Seite einsehbar ist. Bitte auch die readme.txt beachten.

Als Betriebssystem empfehle ich übrigens Windows 2000 oder XP und schaltet die Konsole am besten in den Fullscreenmodus, um in den vollen Spielgenuss zu kommen. Wer unter Win 98 spielt, sollte die Konsole vorher auf 50 Zeilen Höhe stellen, damit die Zeichen nicht so verzerrt sind.

Gruß,
Jörg

Meine Homepages:
www.messiahzone.de
www.airlane.de.vu






Von Patrick am 15.04.2003, 09:03:22 Uhr
Hi,

sieht sehr interessant aus :)

Kleiner Tipp in Richtug Perfektion:
Saug dir mal den GCC oder BCC55, die haben in der conio.h funktionen wie gotoxy(); und setcolor(); und macht nebenbei DOS-Programme (GCC Rocks);)

Dann könnte man dein Game auch mal unter Linux und DOS zoggen :) Da Linux ja grad sehr gut im kommen ist, sollte man sich das mal durch den Kopf gehen lassen ;)

Aber ich muss sagen sieht sehr toll aus ;)

Von ChrisM am 15.04.2003, 12:58:05 Uhr
@Patrick: Nein, unter DOS wird das Spiel nie, nie, nie laufen, denn DOS unterstützt weder Multitasking noch WinAPI-Funktionen. :)

Und gotoxy() gibts mit einem kleinen Trick auch unter Visual C++ ;)

ChrisM

Von Patrick am 15.04.2003, 13:19:49 Uhr
@ChrisM:
Drum sagte ich ja er solle den GCC benutzen und die WinAPI Funktionen durch die im GCC oder BCC55 ersetzen ;)

Von Psycho am 15.04.2003, 15:15:50 Uhr
irgendwie ne ganz komische verschlüsselung...

also irgendwie scheints ne "kontrollzahl" zu geben (oder mehrere??)

kleiner tipp: 2a++ und 2e++ ^^

Von Jake am 15.04.2003, 16:52:12 Uhr
@ChrisM und Patrick:
Gute Idee, das Programm Platformunabhängig zu machen, aber wie gesagt hab ich das nur gemacht, um bißchen Multithrading zu lernen, weshalb ich das wohl nicht mehr ändern werde.
Jedoch: Ihr habt ja den Quellcode, also tut euch keinen Zwang an :D

@Psycho:
Hmmmmm...
Kontrollzahl stimmt, den Rest kann ich nicht bestätigen :D

Von Psycho am 15.04.2003, 17:37:51 Uhr
ich meinte nur, wenn man die bytes an den offsets 2A und 2E um jeweils einen erhöht, hat man 65000 punkte mehr

Von Jake am 15.04.2003, 17:46:25 Uhr
Oh, achso :0
Dann muss ich mir wohl noch ne bessere Verschlüsselungsmethode ausdenken :)

Von Psycho am 15.04.2003, 18:27:02 Uhr
jo, aber die verschlüsselungsroutine ist nicht schlecht!
ich meine, ich bin zwar kein cracker, oder sonst irgendwie guter disassembler etc, aber trotzdem, hat schon einige zeit gedauert (naja gut soviel nun auch nicht) und ich hab ka warum ich das nicht um 2 erhöhen kann :(

Von GodThatFailed am 16.04.2003, 13:13:46 Uhr
Hehe, hab vor einer Woche auch mal nen Tetris-Clone geschrieben und den dann TC genannt ;-) Ist aber eine DX9 Anwendung und nicht multithreaded. Mich würd mal interessieren wielange du ungefähr für die Spiellogik gebraucht hast. Hab selber fast 2 Tage drangesessen.

Von Jake am 16.04.2003, 15:00:40 Uhr
Für die Spiellogik hab ich nicht allzu lange gebraucht, das einzige, wo ich ein bißchen länger überlegen musste, war das Rotieren der Steine.
Alles in Allem hab ich für das Spiel vier Werktage gebraucht.

Von thomy am 16.04.2003, 21:00:47 Uhr
Wie hast du denn das mit dem "Steine rotieren" gemacht? Ich habs bei meinem Tetris-Clone mit einem umständlichen Makro gelöst.

Von Jake am 17.04.2003, 10:33:27 Uhr
Zum Rotieren hab ich die Steine einmal diagonal und einmal vertikal gespiegelt (siehe CTetrisBlock::Rotate() in "ThreadGame.cpp" Zeile 517).
Wie hast du das denn gemacht?

Von GodThatFailed am 17.04.2003, 16:00:00 Uhr
Meine rotate() Methode ist etwas kürzer, kannst dir mal anschauen wenn du willst( http://home.arcor.de/vogt-peter/download/ ). Hängt aber auch davon ab wie du die Steine representierst.

Von Jake am 19.04.2003, 18:39:10 Uhr
Ich muss zugeben, dein Code ist etwas übersichtlicher :D
Aber ich finde nirgends das "umständliche Makro", was meintest du damit?