Seite 1 von 6

Bejeweled 2

Verfasst: 14.02.2009 14:31
von Moskito
Hallo Leute

Per Zufall bin ich auf das kurzweilige Spielchen "Bejeweled 2" gestossen.
Als ich nach einer Stunde immer noch am spielen war, fragte ich mich,
liegt es an der Musik oder der Spielidee ? Irgendwie gefällt mir dieses
Bejeweled. Allerdings fielen mir sofort einige Verbesserungen ein, die
ich mir wünschen würde, gern einmal zu spielen.
Beispielsweise ein grösseres Spielfeldraster und dementsprechend mehr
unterschiedliche Diamanten die das abräumen somit erschweren. Auch die
Möglichkeit auch auf den "diagonalen" Positionen punkten zu können, wäre
eine Überlegung wert.

Meine Recherche im Internet förderte allerdinge keine wirklich brauchbare
Alternative zu Tage, daher beschloss ich vor 3 Tagen, es selbst einmal
mit Purebasic zu probieren.

Im Prinzip funktioniert alles auch schon ganz prima. Zugegeben, die von
mir (hastig) erstellte Grafik ist mit der von Bejeweled nicht zu vergleichen.
Aber darum geht es in dieser Phase ja auch nicht.

Ich bin nun an dem Punkt angekommen, wo ich meine Routinen verbessern möchte.
Deshalb wüsste ich gern, wie ihr folgende diverse Probleme lösen würdet und
würde sie vielleicht übernehmen, da ich ja gerne dazulernen möchte.

1) Das Raster bzw. Spielfeld (8x8 Diamanten). Zwei nebeneinanderliegende bzw
übereinanderliegende (aber nicht diagonal) können vertauscht werden und falls
die neue Anordnung mindestens 3 gleichfarbige Diamanten ergibt, erhält man
dafür eine entsprechende Punktzahl. Die gleichfarbigen Diamanten verschwinden
sodann, die darüber liegenden rutschen nach und die oben entstandene Lücke
wird mit neuen Diamanten aufgefüllt. Wie würdet ihr das realisieren ?

2) Ich vermisse einen ganz bestimmten Befehl bei den Soundfunktionen von PB.
Nennen wir ihn mal "is_playing" . Wie kann ich konkret feststellen das der
Sound 1 oder 2 noch abgespielt wird? Wenn man eine Hintergrundmusik abspielt
ist die ja nach etwa 3 Minuten zuende. Dann sollte der nächste Song abgespielt
werden. Gut, man könnte einen Timer verwenden, aber das finde ich nicht gerade
sehr elegant. Auf dem AMIGA war das natürlich überhaupt kein Problem. Daher
glaube ich, auf dem PC ist das genauso machbar. Aber wie?

Bin schon sehr gespannt auf eure Antworten.


Bis denne

Thomas

Verfasst: 14.02.2009 14:37
von Kaeru Gaman

Re: Bejeweled 2

Verfasst: 14.02.2009 16:01
von LCD
Moskito hat geschrieben: 1) Das Raster bzw. Spielfeld (8x8 Diamanten). Zwei nebeneinanderliegende bzw
übereinanderliegende (aber nicht diagonal) können vertauscht werden und falls
die neue Anordnung mindestens 3 gleichfarbige Diamanten ergibt, erhält man
dafür eine entsprechende Punktzahl. Die gleichfarbigen Diamanten verschwinden
sodann, die darüber liegenden rutschen nach und die oben entstandene Lücke
wird mit neuen Diamanten aufgefüllt. Wie würdet ihr das realisieren ?
Yeah! Habe das Game mal auf meinem Sinclair Spectrum gespielt, macht wirklich süchtig: http://www.worldofspectrum.org/infoseek ... id=0018058 und wenn es eine 8-Bit maschine schafft, dann wird eine 32 Bit Maschine damit wohl wenig Probleme haben. Wozu man da 14 MB braucht, weiß ich nicht.

Hi, meine Lösung wäre es mehrere Felder zu definieren, wo zuerst 5, dann 4 und dann 3 gleiche Felder nacheinander geprüft werden. bei 8x8 würde das Feld für drei Steine so aussehen:
00111100
00111100
22333322
22333322
22333322
22333322
00111100
00111100
Die bedeutung der Ziffern:
0 von dieser Position ausgehend wird nicht gesucht
1 von dieser Position ausgehend wird nur waagrecht nach 3 gleichen Steinen gesucht wenn einer der Steine links oder rechts gleich wie der aktuelle ist.
2 dasselbe, aber senkrecht
3 waagrecht+senkrecht+diagonal.
Im übrigen könntest du die Suchrichtungen auch binär kodieren, was bei 5 Steinen und einem so kleinen Feld eher notwendig ist, und eventuell sogar schneller sein könnte.
Das löschen der Steine und nachrücken sollte dann aber wirklich kein Problem sein. Du könntest sogar die Gravitationsrichtung ändern, so dass die Steine z.B. von unten nach oben fallen.

Edit: Die Version in Kaerus link ist sch... Angeblich darf man 60 Minuten frei spielen, aber bei mir kam schon nach 6 Minuten die Meldung dass die Zeit abgelaufen ist. Möglicherweise weil mir der Kaspersky immer was vom Prozessinvader vorgejault hat...

Verfasst: 14.02.2009 18:00
von DrShrek

Re: Bejeweled 2

Verfasst: 14.02.2009 23:07
von Bisonte
LCD hat geschrieben: Edit: Die Version in Kaerus link ist sch... Angeblich darf man 60 Minuten frei spielen, aber bei mir kam schon nach 6 Minuten die Meldung dass die Zeit abgelaufen ist. Möglicherweise weil mir der Kaspersky immer was vom Prozessinvader vorgejault hat...
/OT
und da grade unser Forenclown so lustige Dinge Aussagen drauf hat kann ich ihn mal hierhin verweisen ;)

Auf der Website zum Download steht...
Ich will das Spiel Bejeweled 2 Deluxe herunterladen und spielen, aber der PC, den ich verwende, verfügt nicht über eine Internet-Verbindung.
OT/

Verfasst: 16.02.2009 00:47
von KeyKon
2) -> Ich würde Hintergrundmusik einfach mit den Movie-Befehlen abspielen...

Verfasst: 16.02.2009 20:00
von Moskito
Prima, danke sehr für eure Tipps und Ratschläge.
Meine 80er-Jahre programmierkenntnisse haben sich dann ja mal wieder ausgezahlt, weiss
auch nicht wieso ich immer erst glaube, Anno 2009 müsste man sowas doch ganz anders
programmieren wie in den "guten alten Zeiten" damals.

Das Sound-problem hat sich auch mittlerweile erledigt. Auf die Idee mit den Movie-Befehlen
wäre ich von alleine nie gekommen, denke ich dabei doch an das abspielen von Videos und
nicht von Musik. Wieder was dazu gelernt.

Da ich am eigentlichen Grundgerüst meines Projektes somit nichts wesentliches ändern musste,
hatte ich am Wochenende ausgiebig Zeit fürs testen, was sehr viel Spass gemacht hat.
Ich dachte nach ein oder zwei Stunden würde mir die Lust an diesem kurzweiligen Spielchen
sicher vergehen, aber Pustekuchen.

Mittlerweile weicht der Spielablauf meines Projektes doch schon etwas von Bejeweled ab,
denn ich habe 2 Änderungen am Sonntag Nachmittag eingebaut, die das Spiel meiner Meinung
nach noch viel interessanter machen.

1) Ich wollte so etwas wie einen Dynamischen Schwierigkeitsgrad realisieren, da das
Original mit seinem 8 x 8 Raster und 7 verschiedenen Diamanten das ganze Spiel über
immer gleich leicht bzw. schwer ist. Herausgekommen ist dabei nun folgendes:
Das Spiel startet auf einem 16 x 16 Raster, ebenfalls mit 7 verschiedenen Steinen.
Dieser Level 1 ist sehr einfach, da auf dem doppelt so grossen Spielraster natürlich
viel häufiger passende Steine zusammengefügt werden können. So ist es nicht ungewöhnlich
das man sehr schnell 1000 Punkte erreicht. Nun befinden wir uns in Level 2 und es geht
mit 8 verschiedenen Steinen weiter. Ab 2000 Punkten sind wir dann in Level 3 und es sind
9 verschiedene Steine. Im Level 4, bei 3000 dann 10 verschiedene Steine und so weiter.

2a) Der Spieler sollte im Verlauf des Spieles immer mehr unter (Zeit)Druck gesetzt werden,
ohne dabei bis zu einem normalen oder höheren Level davon sehr beeinträchtigt zu werden.
Meine Realisation: Ab der 99ten Spiel-Sekunde wird ein Timer aktiviert, der, je nachdem
in welchem Level man sich befindet, Punkte abzieht. Bei 0 Punkten ist das Spiel beendet.
Die recht leicht zu bekommenden Punkte der ersten Levels werden quasi auf einem Zeitkonto
verbucht und sorgen für einen anfangs sehr entspannten Spielverlauf. Da man sich in der
Regel nach 99 Sekunden noch im Level 1 befindet, wird somit pro Sekunde lediglich 1 Punkt
abgezogen. Im Level 2 sind es dann 2 Punkte pro Sekunde, dann 3,4,5,6 und so weiter.
Ab Level 5 etwa, schaue ich dann doch schon hin und wieder etwas hecktisch auf meine Punkte.

2b) Punkteverteilung: Mit dem ansteigenden Schwierigkeitsgrad sollten auch die Punkte, die
man für die nun immer schwieriger zu erhaltenden Muster erhält, entsprechend belohnt werden.
3 Steine Horizontal oder Vertikal geben zum Beispiel 10 Punkte. Diagonal gibt's 15.
4 und mehr geben auch mehr Punkte, sind aber schwieriger zusammenzufügen. Zusätzlich dazu,
gibt es einen Bonus der mit dem Schwierigkeitsgrad bzw. Level ansteigt. Einige Beispiele;
3 gelbe Steine horz. Level 1 = 10 Punkte + 1 Bonus-Punkt (Level*Level) (1*1)
3 blaue Steine vert. Level 3 = 10 Punkte + 9 Bonus-Punkte (Level*Level)(3*3)
4 grüne Steine horz. Level 5 = 50 Punkte + 50 Bonus-Punkte (Level*Level)*2 (5*5)*2
5 rote Steine vert. Level 5 = 100 Punkte + 75 Bonus-Punkte (Level*Level)*3 (5*5)*3


Was haltet ihr davon?

Bei mir läuft das Programm sowohl auf Notebook wie auf normalem PC ein wenig unterschiedlich
schnell ab, oder ich habe Mist in der FPS-Routine gemacht. Ich dache der Befehl SetFrameRate
(60) würde das synchronisieren. Falls jemand Lust hat eine grafisch und akustisch noch sehr
bescheidene Version auszuprobieren, kann dies hier herunterladen (knapp 8 MB);

http://home.arcor.de/schreibgeist/99seconds.zip

Nun werde ich mir in den kommenden Tagen die Grafik und den Sound vornehmen,
hoffentlich kriege ich was gescheites zustande mit Malprogramm und Sequenzer.


bis denne
Thomas

Verfasst: 16.02.2009 22:28
von LCD
Schon mal sehr gut, aber bitte nicht so viele Grün-Steine. Es gibt Menschen die Grünblind sind (ich gehöre, wie es der Zufall so will, auch dazu). Die Ziffern sind sehr klein, zu klein...
Pause-Funktion wäre nett.

Verfasst: 16.02.2009 23:18
von ZeHa
Rot-Grün-blind sind sogar fast 10% aller Männer. Von daher sollte man sowas wirklich im Hinterkopf behalten.

Verfasst: 16.02.2009 23:34
von cxAlex
ZeHa hat geschrieben:Rot-Grün-blind sind sogar fast 10% aller Männer. Von daher sollte man sowas wirklich im Hinterkopf behalten.
+1, ich machs Rot-Grün-Blind freundlich damit ichs auch spielen kann