Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Mastermind (https://www.delphipraxis.net/59833-mastermind.html)

smepal 29. Dez 2005 10:48


Mastermind
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe mal so eine Art Mastermnd fürs Netzwerk geschrieben. Für die denen der Name nix sagt:
Mastermind ist ein kleines Spiel, bei dem ein Farbcode gesetzt wird und dann eraten werden muss. Normalerweise ist M ein Spiel für zwei Spieler. Meine Idee war es nun mittels einem Server und einem Client ein M zu erzeugen, bei dem mehr Leute übers Netzwerk mit spielen können.

Bitte Bugs und Verbesserungsvorschläge posten.

Ich weiß der Code ist verdammt lang wär mir auch lieb wenn der kürzer wäre aber ich weiß nicht wie!!! :-D :wall:

DGL-luke 29. Dez 2005 12:28

Re: Mastermind
 
Liste der Anhänge anzeigen (Anzahl: 2)
Du kannst ja auch das meiste weglassen ;)

7Zip: www.7zip.org

EDIT: mir fällt da glaube ich ein kleiner Bug auf... schwarz heisst doch, richtuge Farbe am richtigen Platz und grau heisst, richtige Farbe am falschen Platz. Wenn ich bei der Kombination 5243 aber 2222 eingebe, sagt er mir einmal schwarz und dreimal grau.

smepal 29. Dez 2005 12:42

Re: Mastermind
 
jo vielen dank man darf jede farbe natürlich nur ein mal pro zeile verwenden

wa meinst du mit weglassen ist bei dir doch noch alles genauso wie bei mir

smepal 29. Dez 2005 13:34

Re: Mastermind
 
Liste der Anhänge anzeigen (Anzahl: 1)
es gibt eine neue überarbeitete Version
1.1

ManuMF 29. Dez 2005 14:15

Re: Mastermind
 
Zitat:

Nun musst du wieder von vorne anfangen
Da fehlt ein U ;-)

Grafisch sieht es ziemlich gut aus :thumb:

Aber bei mir funktioniert es nicht wirklich. Wenn ich den Server geöffnet habe, bringt das connect beim Spiel nichts. ZoneAlarm meldet zwar den Zugriff beider Programme, aber sonst passiert nichts.

Gruß,
ManuMF

P.S.: Häng die neue Version doch bitte an den ersten Beitrg, ich hätte fast zuerst die alte Version geladen.

smepal 29. Dez 2005 14:17

Re: Mastermind
 
ja da fehlt leider noch eine meldung aber du solltest denn och spielen können , wenn du deine firewall ausmachst oder das nicht mehr blockst

DGL-luke 29. Dez 2005 16:00

Re: Mastermind
 
Zitat:

Zitat von smepal
wa meinst du mit weglassen ist bei dir doch noch alles genauso wie bei mir

ähm, ne... das ist so nicht richtig :)

Du brauchst für den source eigentlich nur *.dpr, *.pas und *.dfm-dateien, und in Ausnahmefällen (wenn du selbst ressourcen drin hast) die *.res-Dateien.
Der _history-Ordner ist übrigens komplett überflüssig, da sind nur Backups drin(falls du dich wunderst, wovon ich rede: Der ist versteckt und damit evtl. bei dir nicht sichtbar...).

EDIT: Neue Version? Der Anhang oben ist auf jeden Fall immer noch der selbe...

ManuMF 29. Dez 2005 17:02

Re: Mastermind
 
Zitat:

Zitat von smepal
ja da fehlt leider noch eine meldung aber du solltest denn och spielen können , wenn du deine firewall ausmachst oder das nicht mehr blockst

Eben nicht... :(
Ich habe es ja zugelassen.

Gruß,
ManuMF

xineohp 29. Dez 2005 17:17

Re: Mastermind
 
Liste der Anhänge anzeigen (Anzahl: 1)
1.
hm, irgendwie ist da beim ersten Versuch der Wurm drinnen:
zwei gleiche Eingaben sollten wohl ja das gleiche Ergebnis liefern :gruebel:
EDIT: mittlerweile kann ich diesen Fehler nicht mehr reproduzieren?! keine Ahnung warum, vorher ist es ständig passiert :gruebel:

2.
Wenn ich den Server gestartet habe, kann ich zwar spielen, aber der Server zeigt nicht an ob irgendein Spielerverbunden ist, das Feld bleibt einfach leer.

smepal 30. Dez 2005 09:26

Re: Mastermind
 
das ist allerdings komisch werds mir mal angucken
EDIT: stimmt der anhang is zwar der selbe aber der code ist überarbeitet

DGL-luke 30. Dez 2005 12:50

Re: Mastermind
 
sind aber immer noch 500 kB.... lass doch mal zumindest den _history ordner weg.

smepal 30. Dez 2005 13:33

Re: Mastermind
 
Liste der Anhänge anzeigen (Anzahl: 1)
so dann noch mal die neue Version mit nur dem nötigsten hoffe ich habe nix vergessen

also noch mal hat jemand eine idee, wie man den code ändern könnte beispielsweise so ,dass man nicht jedes shape einzeln ansprechen mus???

smepal 30. Dez 2005 13:37

Re: Mastermind
 
Zitat:

Zitat von xineohp
1.
hm, irgendwie ist da beim ersten Versuch der Wurm drinnen:
zwei gleiche Eingaben sollten wohl ja das gleiche Ergebnis liefern :gruebel:
EDIT: mittlerweile kann ich diesen Fehler nicht mehr reproduzieren?! keine Ahnung warum, vorher ist es ständig passiert :gruebel:

dieses Problem taucht immer ab der 4. Zeile auf weiß bis jetzt allerdings nicht wieso, bin aber dabei das Problem zu beheben

bigg 30. Dez 2005 14:05

Re: Mastermind
 
moin,

ich habe mir mal deinen Source angeguckt und festgestellt, das du wirklich jede Kombination manuell abfragst.

Delphi-Quellcode:
if (shape1.brush.color = clwhite) or (shape2.Brush.Color = clwhite) or (shape3.Brush.Color = clwhite) or (shape4.Brush.Color = clwhite) then showmessage ('Weiß ist keine Farbe. Bitte alle ausfüllen!!!') else
begin
  button1.Enabled := false;
button2.Enabled := true;

  if shape1.brush.color = clmaroon then Farbe[1] := 1 else
    if shape1.brush.Color = clgreen then Farbe[1] := 2 else
      if shape1.brush.Color = clnavy then Farbe[1] := 3 else
        if shape1.brush.Color = clyellow then Farbe[1] := 4 else
          if shape1.brush.Color = clteal then Farbe[1] := 5 else
            if shape1.brush.Color = clpurple then Farbe[1] := 6;

  if shape2.brush.color = clmaroon then Farbe[2] := 1 else
    if shape2.brush.Color = clgreen then Farbe[2] := 2 else
      if shape2.brush.Color = clnavy then Farbe[2] := 3 else
        if shape2.brush.Color = clyellow then Farbe[2] := 4 else
          if shape2.brush.Color = clteal then Farbe[2] := 5 else
            if shape2.brush.Color = clpurple then Farbe[2] := 6;
 
if shape3.brush.color = clmaroon then Farbe[3] := 1 else
    if shape3.brush.Color = clgreen then Farbe du hier eine Schleif[3] := 2 else
      if shape3.brush.Color = clnavy then Farbe[3] := 3 else
        if shape3.brush.Color = clyellow then Farbe[3] := 4 else
          if shape3.brush.Color = clteal then Farbe[3] := 5 else
            if shape3.brush.Color = clpurple then Farbe[1] := 6;
 
if shape4.brush.color = clmaroon then Farbe[4] := 1 else
    if shape4.brush.Color = clgreen then Farbe[4] := 2 else
      if shape4.brush.Color = clnavy then Farbe[4] := 3 else
        if shape4.brush.Color = clyellow then Farbe[4] := 4 else
          if shape4.brush.Color = clteal then Farbe[4] := 5 else
            if shape4.brush.Color = clpurple then Farbe[4] := 6 ;
activ := 2;
senddata;
Der obere Teil lässt sich mit einer Schleife wesentlich komfortabler lösen.

Wobei ich hier nicht den Farbcode erfragen würde, sondern einfach nur eine simple Nummer.
Du hast 6 Farben, die sich in ihrer Reihenfolge nichtverändern, also könntest du genauso 6 Nummern den Farben zuweisen von 1 bis 6.

In einem Array of TColor stehen dann die einzelnen Farben. Über den Index
(Nummer von 1-6) erhälst du anschließend die Farbe aus dem Array of TColor.


Die Shapes könnte man genauso gut dynamisch erstellen.
Wenn ich mich nicht täusche, sind es etwa 80, die du schon zur Entwurfszeit erstellt hast.
Noch eleganter wäre eine Klasse, aber das ist für den Anfang sicherlich zu heavy für dich.

smepal 30. Dez 2005 14:39

Re: Mastermind
 
jo das stimmt mit einer klasse wäre ich etwas überfordert aber eine schleife dürfte ich noch hinkriegen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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