Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mini Spiel: Hex (https://www.delphipraxis.net/83310-mini-spiel-hex.html)

Antigo 30. Dez 2006 21:17


Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hi,

heute gibt es ein kleines Spiel von mir. Nichts aufwendiges, weder grafisch aufwendig, noch besonders schwierig zu programmieren. Trotzdem hat mich das Programm weitergebracht, da ich jetzt weiss, wie ich Sechsecke konstruiere ( :D ) und wie ich feststelle ob es einen Weg durch ein Labyrint gibt (Stichwort Tiefensuche, danke Daniel :) ), da ich ja irgendwie festellen musste ob ein Spieler nun auch gewonnen hat. Jetzt zum eigentlichen Spiel:

Aleitung
--------
Hex ist ein Spiel für zwei Personen, das auf einem n x n Feld gespielt wird. Das Ziel des Spiels ist eine Verbindung zwischen den beiden Seiten des Spielfeldes zu schaffen, die in der jeweiligen Spielerfarbe gefärbt sind. Dazu legen die beiden Spieler abwechselnd einen Spielstein Ihrer Farbe auf ein beliebiges leeres Feld.

Zur Anschauun ein 4 x 4 er Feld:
[Anhang: eins.jpg]

Und so siehts aus, wenn jemand gewonnen hat:
[Anhang: zwei.hpg]



Das Spiel liegt als ausführbare exe vor, und wurde bisher unter WinXP getestet.

Viel Spass damit ;)


edit:
Update No 1:
- *fixed* Gewinnerkennung (einmal stack leeren vergessen ;) )
- *added* XPManifest

Update No 2:
- *fixed* debugg Meldungen entfernt :oops:

Update No 3:
- *fixed* Fenster Position: poScreenCenter

Update No 4:
- *fixed* Farbe des blauen Spielers: clbackground -> $00A56E3A

Update No 5:
- *fixed* Buttons->Mainmenü
- Source offengelegt

Corpsman 30. Dez 2006 21:42

Re: Mini Spiel: Hex
 
Das Game wollte ich die Tage auch schon ein Paar mal Proggen.

Als Brett spiel heist es Übrigens Bridge it.

Ein bsichen Komisch ist das ich erst auf neues Spiel Klicken muste um eine Größere Map zu bekommen.

INteressant wird es aber glaubig erst mit einem Computergegner ;)

igel457 30. Dez 2006 21:42

Re: Mini Spiel: Hex
 
Läuft wunderbar und ist wirklich nett! Erinnernt nur ein wenig an Tic-Tac-Toe oder 4-Gewinnt. Schön wäre nur noch ein Computergegner und das XP-Manifest. :thumb:

Antigo 30. Dez 2006 21:57

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Corpsman
Das Game wollte ich die Tage auch schon ein Paar mal Proggen.

Rückst du evtl den Source Raus, so das mann dan schaun kann ob man die Oberfläche evtl ein bischen aufbohren kann.

Bzw würde ich gerne Probieren wie das mit Extra Großen und Extra Kleinen Maps geht.

Ich könnte mal überlegen den Source rauszurücken, allerdings ist der erstens nicht sehr aufgeräumt und zweitens, nicht komplett sauber programmiert. Ist mir eigentlich zu peinlich sowas zu zeigen.

Konkret zu den großen und kleinen Maps:
Naja ich gucke mir halt die Zahl n (Anzahl der Felder in einer Richtung) und die Asumaße meiner Paintbox an und berechne dadurch:
feldbreite:=height div n;


Zitat:

Zitat von igel457
Läuft wunderbar und ist wirklich nett! Erinnernt nur ein wenig an Tic-Tac-Toe oder 4-Gewinnt. Schön wäre nur noch ein Computergegner und das XP-Manifest. :thumb:

danke. Zum Thema Computer Gegner: naja viel mehr als ein setzefeld(random(n)) würde ich wohl auf anhieb nicht hinbekommen ^^ Es gibt ja auch Gewinnstrategien, bei denen der Anfangende immer gewinnt. DIe müsste ich erstmal herausfinden und implementieren.
Aber falls jemand einen Ansatz hat iwe man so eine KI schreibt, könnte ich mich mal versuchen.

Zum XP Manifest, meinst du damit, das das Programm so aussehen soll, wie der Standard XP Theme? Oder das er sich automatisch an Skins anpassen soll? Naja erstens weiss ich nicht wie man das macht (aber das könnte man sich ja aneignen) und zweitens halte ich eh nicht sonderlich viel vom "Windows Skinnen".

igel457 30. Dez 2006 22:01

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Antigo
Zum XP Manifest, meinst du damit, das das Programm so aussehen soll, wie der Standart XP Theme? Oder das er sich automatisch an Skins anpassen soll? Naja erstens weiss ich nicht wie man das macht (aber das könnte man sich ja aneignen) und zweitens halte ich eh nicht sonderlich viel vom "Windows Skinnen".

Ab Delphi 7 gibt es eine Komponente "TXPManifest", die du einfach auf das Formular ziehst und schon passt sich dein Programm an den eingestellten Skin an. Wenn du die Skins bei dir im Windows deaktiviert hast ist es auch in deinem Programm deaktiviert, aber alle die die Skins ganz brauchbar finden freuen sich. :-)

dino 30. Dez 2006 22:34

Re: Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 1)
na das verstehe ich nicht:

[siehe Bild]

[edit=sakura] Bild ist doch im Anhang... Mfg, sakura[/edit]

Daniel G 30. Dez 2006 22:39

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Antigo
Naja erstens weiss ich nicht wie man das macht (aber das könnte man sich ja aneignen) und zweitens halte ich eh nicht sonderlich viel vom "Windows Skinnen".

Wenn deine Kunden davon aber viel halten, dann musst du das akzeptieren. Packe das TXPManifest auf dein Formular, und dein Program passt sich an das jew. Theme an. Software, die das nicht macht, wird von vielen als "veraltet" angesehen. :wink:

dino 30. Dez 2006 22:47

Re: Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 1)
noch ein beispiel:

[edit=Sharky]Auch dieses Bild habe ich in den Anhang gehängt. Mfg, Sharky[/edit]

Antigo 30. Dez 2006 22:53

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Daniel G
Zitat:

Zitat von Antigo
Naja erstens weiss ich nicht wie man das macht (aber das könnte man sich ja aneignen) und zweitens halte ich eh nicht sonderlich viel vom "Windows Skinnen".

Wenn deine Kunden davon aber viel halten, dann musst du das akzeptieren. Packe das TXPManifest auf dein Formular, und dein Program passt sich an das jew. Theme an. Software, die das nicht macht, wird von vielen als "veraltet" angesehen. :wink:

ok wird gemacht :)

@dino, danke für die hinweise, mal gucken ob ich das reproduzieren und beheben kann.


edit: So, da war tatsächlich ein grober Fehler in der Gewinnerkennung. Jetzt sollte alles passen.
Das XP Manifest ist jetzt auch mit drin :)

jmit 31. Dez 2006 13:03

Re: Mini Spiel: Hex
 
Hallo,

nicht schlecht gemacht, aber es kommen beim Spiel manchmal so komische Meldungen, wo fast gar nichts in der MessageBox enthalten ist (zB. 2 0)
Auch ist nicht immer eindeutig warum der Spieler gewonnen hat

.

Gruß Jörg

Corpsman 31. Dez 2006 13:17

Re: Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 1)
So mir war Langweilig

Habe euch mal die Variante "Bridge it" von Hex reingemacht.

Wer einen "Brückenteil" setzen will der Klicke mit der maus auf den Anfang halte gedrückt und lasse beim Ende wieder los.

Das Sample kann schon genau so viel wie das Hex Teil nur ist es eben ein klein wenig Gedreht ;)

Selbstverständlich das der Source Dabei ist.

Besonders nett dabei, schaut euch an wie das Feststellen wer gewonnen hat Funktioniert ;)

Antigo 31. Dez 2006 13:57

Re: Mini Spiel: Hex
 
Zitat:

Zitat von jmit
Hallo,

nicht schlecht gemacht, aber es kommen beim Spiel manchmal so komische Meldungen, wo fast gar nichts in der MessageBox enthalten ist (zB. 2 0)
Auch ist nicht immer eindeutig warum der Spieler gewonnen hat

.

Gruß Jörg

Jo da hab ich vergessen eine Debug Meldung rauszunehmen :oops: Ist jetzt geändert.

Kannst du mir einen Screenshot von einer nicht eindeutigen Gewinnsituation zukommen lassen?

OregonGhost 31. Dez 2006 14:55

Re: Mini Spiel: Hex
 
Hab's auch gerade mal ausprobiert.
Zunächst einmal landet das Fenster in der Mitte des Desktops und nicht in der Mitte eines Bildschirms, nicht gut.
Zweitens bleiben Felder, die blau besetzt hat, bei mir weiß, womit das Spiel unspielbar ist^^

Sharky 31. Dez 2006 15:09

Re: Mini Spiel: Hex
 
Hai,

könntet ihr die Bilder bitte aus den Beiträgen nehmen und nur als Anhang einfügen?
Zum einen werden es euch viele Anwender danken und zum anderen sind die Bilder dann auch noch verfügbar wenn sie nicht mehr auf einem externen Server liegen.

xZise 31. Dez 2006 15:14

Re: Mini Spiel: Hex
 
Vorschläge:
  • Mehere Spieler
  • Eigene Farben
  • Computergegner (*)
  • Anzeige, warum man gewonnen hat: z.B. Die Felder schwarz markieren, o.ä.?

Aber ansonsten klasse :D

Luckie 31. Dez 2006 15:16

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Corpsman
Habe euch mal die Variante "Bridge it" von Hex reingemacht.

Würdest du bitte einen eigenen Thread in der dazu passenden Sparte aufmachen, sonst geht das hier alles durcheinander. Danke.

Antigo 31. Dez 2006 15:18

Re: Mini Spiel: Hex
 
Zitat:

Zitat von OregonGhost
Hab's auch gerade mal ausprobiert.
Zunächst einmal landet das Fenster in der Mitte des Desktops und nicht in der Mitte eines Bildschirms, nicht gut.
Zweitens bleiben Felder, die blau besetzt hat, bei mir weiß, womit das Spiel unspielbar ist^^

Das erste ist hoffentlich mit poScreenCenter gelöst. Ich kanns nicht testen, da ich keinen zweiten bildschirm anschliessen kann.
Das zweite kann ich leider nicht nachvollziehen, bei mir klappt das soweit alles :gruebel:


Zitat:

Zitat von Sharky
Hai,

könntet ihr die Bilder bitte aus den Beiträgen nehmen und nur als Anhang einfügen?
Zum einen werden es euch viele Anwender danken und zum anderen sind die Bilder dann auch noch verfügbar wenn sie nicht mehr auf einem externen Server liegen.

erledigt ;)


Zitat:

Zitat von xZise
Vorschläge:
  • Mehere Spieler
  • Eigene Farben
  • Computergegner (*)
  • Anzeige, warum man gewonnen hat: z.B. Die Felder schwarz markieren, o.ä.?

Aber ansonsten klasse :D

- Für mehr Spieler reichen die 2 Dimensionen die bei dem Spielfeld zur Verfügung stehen nicht aus ;)
- Eigene Farben sind machbar, mal gucken ob ich Lust hab das einzubauen ;)
- Computer Gegner ist wie gesagt so eine Sache, aber ist ja auch nur ne Zusatzaufgaben (*) ^^
- Die Idee ist gut, mal schaun wie und ob ich das umgesetzt bekomme


danke für euer feedback :)

xZise 31. Dez 2006 15:37

Re: Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Antigo!

Ich musste ein Bug feststellen (auch geknippst ^^), und zwar, habe ich eine Reihe (Grün markiert), aber er meldet sich nicht, dass ich gewonnen habe. Jaja... Das Regelwerk ;)

Dann noch zwei sagen zu meinen Vorschlägen:
-> Mehr Spieler sind durchaus möglich ;) Nur dass es dann eben bisschen Eng wird
-> Zum (*) Meinte ich eigentlich:
(*) - Da du ja überprüfst, ob die Spieler siegen, könntest du ja gucken wo du lag gehen könntest.
Und wenn du kein Weg findest, Setze per Random einen neuen Stein (vielleicht auch dann nur am Rand)

Und noch ein paar Vorschläge :D
-> Zufällig einen Spieler als Startspieler wählen
-> Zufällig auf der Karte "Steine" platzieren (die man nicht benutzen kann)

TurboMartin 31. Dez 2006 15:56

Re: Mini Spiel: Hex
 
Zitat:

Zitat von xZise
Hi Antigo!

Ich musste ein Bug feststellen (auch geknippst ^^), und zwar, habe ich eine Reihe (Grün markiert), aber er meldet sich nicht, dass ich gewonnen habe.

Das ist kein Bug.
Du musst von deiner Seite zur anderen Seite.
Deine Seite ist die, deren Rand die gleiche Farbe hat, wie deine Steine :wink:

xZise 31. Dez 2006 16:00

Re: Mini Spiel: Hex
 
Achso :D

Ich dachte einfach nur quer rüber :D

Ja dann wird das mir mehr als 3 Spieler schiwerig ^^

Aber vielleicht könnte man es ja einbauen, dass man nur "quer rüber" muss (nicht Farben abhängig)?

Antigo 31. Dez 2006 16:09

Re: Mini Spiel: Hex
 
Zitat:

Zitat von xZise
Achso :D

Ich dachte einfach nur quer rüber :D

Ja dann wird das mir mehr als 3 Spieler schiwerig ^^

Aber vielleicht könnte man es ja einbauen, dass man nur "quer rüber" muss (nicht Farben abhängig)?

klar könnte man das einbauen, aber dann wäre es halt nicht mehr Hex, sondern ein anderes/neues Spiel ^^

Genauso die Idee mit den nicht betretbaren Flächen/Hindernissen. Prinzipiell eine gute Idee, aber nach der Modifikation wäre es halt nicht mehr Hex ;)

Ich denke aber mal drüber nach verschiedene Spielarten einzubauen. Vielen Dank auf jeden Fall für die Vorschläge

OregonGhost 31. Dez 2006 16:17

Re: Mini Spiel: Hex
 
Sehr schön, jetzt landet es nur noch auf einem Monitor^^
Zitat:

Das zweite kann ich leider nicht nachvollziehen, bei mir klappt das soweit alles
Es liegt offenbar an der Art, wie du die Farbe definierst. Mit dem Luna-Theme ist es bei mir auch blau. Bei meinem Theme hingegen bleibt es weiß, vermutlich weil du eine Systemfarbe und kein festes Blau verwendest. Die Linien am Rand sind übrigens korrekt blau bzw. rot.

Antigo 31. Dez 2006 16:29

Re: Mini Spiel: Hex
 
bisher mache ich es so:
Delphi-Quellcode:
  if aktiv and (value=0)then box.canvas.brush.color:=clgreen else
  case value of
    0: box.canvas.brush.color:=clcream;
    1: box.canvas.brush.color:=clbackground;
    2: box.canvas.brush.color:=RGB(255,66,66);
  end;
das heisst er kommt mit clbackground nicht zurecht. ok dann mache ich ein screenshot von meinem Programm, lade es paint, gucke mir die RGB Werte an, wandle sie in eine TColor um und schreibe sie darein :D

edit: so ist geändert, bitte testen ob es jetzt funktioniert ;)

OregonGhost 31. Dez 2006 16:41

Re: Mini Spiel: Hex
 
Ja, jetzt funktioniert's ;)

dino 2. Jan 2007 01:12

Re: Mini Spiel: Hex
 
Liste der Anhänge anzeigen (Anzahl: 1)
wenn es mehr als 2 spieler hätte, wäre es nicht mehr hex?
habe ich das richtig verstanden?

was spricht gegen hex2?(mit 3 Spielern)

[Edit]Sharky: Bitte die Bilder als Datei anhängen

dann könnte man z.B. auch machen, dass jedes team ein team hat, welches es überpinseln darf

oder eins, was als überführung dienen darf

[edit=Sharky]Bitte in zukunft darauf achten. Mfg, Sharky[/edit]

xZise 2. Jan 2007 11:00

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Antigo
bisher mache ich es so:
Delphi-Quellcode:
  if aktiv and (value=0)then box.canvas.brush.color:=clgreen else
  case value of
    0: box.canvas.brush.color:=clcream;
    1: box.canvas.brush.color:=clbackground;
    2: box.canvas.brush.color:=RGB(255,66,66);
  end;
das heisst er kommt mit clbackground nicht zurecht. ok dann mache ich ein screenshot von meinem Programm, lade es paint, gucke mir die RGB Werte an, wandle sie in eine TColor um und schreibe sie darein :D

edit: so ist geändert, bitte testen ob es jetzt funktioniert ;)

Tipp: Du kann die Farbwerte direkt zuweisen:
Code:
$AABBGGRR
AA = Alphawert
BBGGRR = RGB andersherum (frag mich nicht warum :D)

z.B. für RGB(255, 66, 66)
Code:
myColor := $00FF4242
PS: Du musst da mit Hexadezimalwerten rechnen. Wenn es dir nicht liegt kann ich den Windows Taschenrechner auf "Wissenschaftlich" empfehlen.

xZise 3. Jan 2007 11:05

Re: Mini Spiel: Hex
 
Wie sieht es denn aus, mit einem Update :D

Und außerdem hätte ich nicht verschiedene Spieltypen gemacht, sondern ein neues Fenster mit "Einstellungen" zum Spiel.

z.B.:
- Dass man "Graue Felder" aktivieren/deaktivieren kann
- Die Anzahl der Spieler einstellen kann
- Die Farben einstellen kann

PS: Wäre es möglich dass ich mir mal den QuellCode angucken kann?

dino 3. Jan 2007 11:27

Re: Mini Spiel: Hex
 
Zitat:

Zitat von dino
mit 3 Spielern

dann könnte man z.B. auch machen, dass jedes team ein team hat, welches es überpinseln darf

oder eins, was als überführung dienen darf

dazu hat keiner was gesagt...

Antigo 3. Jan 2007 12:23

Re: Mini Spiel: Hex
 
Zitat:

Zitat von xZise
Wie sieht es denn aus, mit einem Update :D

Und außerdem hätte ich nicht verschiedene Spieltypen gemacht, sondern ein neues Fenster mit "Einstellungen" zum Spiel.

z.B.:
- Dass man "Graue Felder" aktivieren/deaktivieren kann
- Die Anzahl der Spieler einstellen kann
- Die Farben einstellen kann

PS: Wäre es möglich dass ich mir mal den QuellCode angucken kann?

zum PS:ich denke das lässt sich machen, muss vorher nur noch etwas aufräumen, dann kann ich den ganzen Kram mal hochladen.

zum Rest, sind gute Ideen (bis auf die Variable SPielerzahl, das ist mir zu komplex ;) ), ich denke mal ich werd mich nochmal dransetzen :)


Zitat:

Zitat von dino
Zitat:

Zitat von dino
mit 3 Spielern

dann könnte man z.B. auch machen, dass jedes team ein team hat, welches es überpinseln darf

oder eins, was als überführung dienen darf

dazu hat keiner was gesagt...

für 3 Spieler müsste ich eine Menge ändern. Aber die Idee, dass man immer einen Spieler, und nur einen Spieler, übermalen darf. Das ergäbe bestimmt interessante Situationen. Ich weiss aber nicht ob ich motiviert genug bin, sowas zu implementieren. Wenn/Falls ich den Code offenlege kann sich ja jemand anderes dran versuchen ;)


so: Das Spiel liegt jetzt als rar Datei vor. In der rar Datei sind auch alle Projektdateien. Ich hoffe ich bekomme jetzt keine Probleme weil wir ja hier in der Freeware Sparte sind.
Danke nochmal für das Feedback

xZise 3. Jan 2007 12:41

Re: Mini Spiel: Hex
 
Zitat:

Zitat von Antigo
zum Rest, sind gute Ideen (bis auf die Variable SPielerzahl, das ist mir zu komplex ;) ), ich denke mal ich werd mich nochmal dransetzen :)
[...]
für 3 Spieler müsste ich eine Menge ändern. Aber die Idee, dass man immer einen Spieler, und nur einen Spieler, übermalen darf. Das ergäbe bestimmt interessante Situationen. Ich weiss aber nicht ob ich motiviert genug bin, sowas zu implementieren. Wenn/Falls ich den Code offenlege kann sich ja jemand anderes dran versuchen ;)

Also ich denke so wichtig ist es nun auch nicht ;)

Zitat:

Zitat von Antigo
so: Das Spiel liegt jetzt als rar Datei vor. In der rar Datei sind auch alle Projektdateien. Ich hoffe ich bekomme jetzt keine Probleme weil wir ja hier in der Freeware Sparte sind.

1. Ich würde "zip" empfehlen, weil das mehr User benutzten können als rar ;)
2. Entweder sieht es ein Mod selbst, oder du meldest den Beitrag, dass er verschoben werden soll... Aber es ist ja nicht tötlich ^^

PS: Und falls jetzt welche kommen: Warum in Freeware, obwohl OpenSource, dann würde ich mal ein Link auf deinen Beitrag hierüber geben ;)

PPS: Ich werde mal gleich gucken, ob ich die Steine einbauen könnte ^^

[edit]Du brauchst die ~.* / *.dcu Dateien nicht mitzuschicken ;) [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz