Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 603
Erhaltene Danke: 340

W7
Delphi 6 pro
BeitragVerfasst: Sa 08.05.10 11:47 
Moin,
Gespielt wird auf einem 8x8 Brett. Jeder Spieler hat zu Beginn 12 Spielsteine.

Standardvariante
Gespielt wird nur auf den dunklen Feldern. Die Steine werden ein Feld in diagonaler Richtung gezogen, aber nur vorwärts. Gegnerische Steine müssen übersprungen werden, sofern das dahinter liegende Feld frei ist. Es ist nicht möglich einen Stein zu ziehen wenn eine Schlagmöglichkeit existiert!

Wenn das Zielfeld eines Sprungs auf ein Feld führt, von dem aus ein weiterer Stein übersprungen werden kann, so wird der Sprung fortgesetzt. Alle übersprungenen Steine werden vom Brett genommen.

Erreicht ein Spielstein die gegnerische Grundlinie, wird er zur Dame befördert. Dies wird kenntlich gemacht, indem ein zweiter Stein obenauf gesetzt wird.

Eine Dame darf beliebig weit rückwärts ziehen und springen. Beim Überspringen eines gegnerischen Steines muß die Dame auf dem unmittelbar dahinterliegenden Diagonalfeld aufsetzen. Falls sie von dem neuen Feld aus über andere Steine springen kann, muß sie das auch tun. Es gelten also die Sprungregeln für einfache Steine, mit der zusätzlichen Regel, daß die Dame über mehrere Felder vorwärts und eben auch rückwärts springen kann.

Internationale Dame
In dieser Variante dürfen Damen beliebig weit ziehen und springen und einfache Steine auch rückwärts springen, aber nicht ziehen. Außerdem muß bei jedem Zug, wo geschlagen werden kann, die größtmögliche Anzahl gegnerischer Steine geschlagen werden, wobei kein Unterschied zwischen Damen und einfachen Steinen getroffen wird.

Wer keinen Zug ausführen kann hat das Spiel verloren. Das Spiel endet spätestens nach 100 Zügen mit Remis oder das Spiel wird abgebrochen.

Viel Spaß!
Fiete

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)
Horst-Dieter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91
Erhaltene Danke: 16



BeitragVerfasst: Di 01.06.10 12:58 
Ich finde das Damespiel recht gut gelungen. Schwierigkeiten habe ich nur bei den sehr hohen Schwierigkeitsgraden (etwa ab 12). Dann steigt die Rechnerzeit ins nicht mehr Erträgliche. Schön wäre es, wenn man dann die Rechneroperation abbrechen könnte, ohne das laufende Spiel zu zerstören. Bisher ist mir allerdings noch keine brauchbare Lösung eingefallen.
Thorsten83
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 01.06.10 13:26 
Hmm normalerweise benutzt man ja eine iterative Tiefensuche...
Wenn man da für jede komplett durchgerechnete Suchtiefe den besten Zug speichert, kann man diesen auch nehmen, wenn der Suchthread abgeschossen wird.
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Do 03.06.10 20:01 
Bei Zeile 55 kommt so ein Fehler dass keine RichEdit Zeile mehr eingefügt werden kann und dann zieht der Computer nicht mehr...
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 603
Erhaltene Danke: 340

W7
Delphi 6 pro
BeitragVerfasst: Sa 05.06.10 09:44 
Moin,

@MDX:
Zitat:
Bei Zeile 55 kommt so ein Fehler dass keine RichEdit Zeile mehr eingefügt werden kann und dann zieht der Computer nicht mehr...

Diesen Fehler kann ich nicht reproduzieren, könnte am BS liegen(64kb Speicherbegrenzung)

@Thorsten83: der Computerzug wird rekursiv mit Alpha-Beta berechnet

Gruß
Fiete

_________________
Fietes Gesetz: use your brain (THINK)
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Sa 05.06.10 10:38 
Hi, ich kann mich nur anschließen, hab aber noch drei Anmerkungen:

1. Ich habe mal auf Suchtiefe 17 gestellt - das Rechnen hat dementsprechend lang gedauert. Leider friert das Fenster dann ein, vielleicht könntest du die Berechnung ja in einen Thread stellen!

2. Ich als User fände es schön, wenn mir eine Progressbar zeigen würde, wie weit du schon mit der Berechnung bist.

3. Und ich würde mir Multicore-Unterstützung wünschen, damit das Rechnen nicht mehr so ewig dauert.

Sehr sympatisch ist mir auch, dass du als Namen die HdR-Charaktere angibst :zustimm:

Ich hab noch eine Anregung für folgende Funktion:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TDS.LevelWahl(Sender: TObject);
  begin
   if Sender=N1Anfaenger then
    begin Tiefe:=1;N1Anfaenger.Checked:=True end;
   if Sender=N2Geuebter  then
    begin Tiefe:=2;N2Geuebter.Checked:=True end;
   {[...]}
    begin Tiefe:=17;N17HAL.Checked:=True end;
   LabelTiefe.Caption:=IntToStr(Tiefe);
  end;


Ich würde jedem der gebrauchten MenuItems einen Tag vergeben - mit der repräsentativen Zahl. Also hat N1Anfaenger den Tag 1, N2Geuebter den Tag 2.....

Dann könntest du die Funktion auf folgenden Umfang drücken:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TDS.LevelWahl (Sender : TObject);
begin
  if Sender is TMenuItem then
  begin
    Tiefe := (Sender as TMenuItem).Tag;
    (Sender as TMenuItem).Checked := true;
  end;
  LabelTiefe.Caption := IntToStr(Tiefe);
end;

_________________
Die Lösung ist nicht siebzehn.

Für diesen Beitrag haben gedankt: Horst-Dieter