AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Hilfe meine Dame-Spiel geht nicht :(
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe meine Dame-Spiel geht nicht :(

Ein Thema von Fastdeath · begonnen am 15. Jun 2009 · letzter Beitrag vom 15. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Fastdeath

Registriert seit: 12. Jun 2009
12 Beiträge
 
#1

Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 16:20


kann mir jemand aushelfen bei meinen dame spiel?
Ich weiß nicht warum es fasch abläuft und habe mich echt lange damit beschäftigt.
Wenn ihr interrese habt dann könnt ihr mir ja helfen.

danke, danke, danke
Fastdeath

ps: habe den quelltext für euch kommentiert hoffe ihr blickt durch
Angehängte Dateien
Dateityp: zip checkers_-_kopie_196.zip (224,1 KB, 29x aufgerufen)
  Mit Zitat antworten Zitat
Fastdeath

Registriert seit: 12. Jun 2009
12 Beiträge
 
#2

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 16:21
es scheint ein fehler in der logik zu sein die phase 3 oder 4 fängt nie an.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 16:25
Der Quelltext ist sehr krass, ich habe nur mal eben in Unit1.pas reingeschaut.
Ich bin mir ganz sicher, dass man das mit einem Bruchteil des Codes hinbekommen könnte..
Tut mir leid dass ich jetzt keine wirkliche Hilfe gegeben habe, vielleicht schaue ich zuhause mal rein.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 17:07
-

Edit: Sorry
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 17:28
Deine Dame-Threads werden aber auch immer mehr...

Wie auch immer, wenn dein Problem ist, dass Spieler "O" nicht setzen kann, liegt's daran dass du das noch nicht programmiert hast.
Das Bewegen der Steine von Spieler "X" funktionierte als ich es getestet habe nicht immer aber hin und wieder (wobei das auch an irgendwelchen Dameregeln liegen könnte die ich nicht kenne)

Dann beschreibe doch bitte was genau in deinem Quelltext passiert. Da ich Delphi 4 habe kann ich nur den Quelltext sehen und das Programm auch nicht aus Delphi heraus starten.
Kommentare sind auch nicht drin.
  Mit Zitat antworten Zitat
Patrick L.

Registriert seit: 22. Mär 2009
10 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 17:49
Wenn du schon für jedes Feld ein Label nimmst. Dann nimm doch gleich ein Array und erstell die Labels zur Laufzeit.
Ich würde jedenfalls den ganzen Code in die Tonne schmeißen. Ich denke ein DrawGrid würde sich hier anbieten. Dazu würde ich Klassen nehmen, TSpielstein wo die Position, der Typ und die Farbe enthalten ist und die Klasse TSpieler, die ein Array von Spielsteinen besitzt und wo auch die verbleibende Anzahl vermerkt ist.
Patrick
  Mit Zitat antworten Zitat
Fastdeath

Registriert seit: 12. Jun 2009
12 Beiträge
 
#7

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 18:02
ok so sollte der quell text funktionnieren
das spiel basiert auf labels und arbeitet mit deren inhalt
mit den clicken auf spielstart begint das spiel: - j (die variable die die phasen des spiels beschreibt) wird auf 1 gesetzt
- das spielfeld wird gemahlt

nun gehts los :

ein klick auf ein spielfeld löst eine onclick prozedure aus
beim ersten click ist j=1 also beginnt die 1.phase: 'die spieler wählt spielstein aus phase'
der sender der onclick prozedure ist gleichzeitig das eingelesene spiellabel
jedes der 64 möglichen spiellabels labels kriegt eine position zugeorndnet spielfeld 11 = label11 = x=1 y=1 ...
spielfeld 24 = label24 = x=2 y=4 ... usw.
die prozedure ist zu ende und j wird auf 2 erhöht

beim 2. klick ist j=2 also beginnt die 2 phase: 'die spieler wählt spielstein zum hin bewegen oder zum hin springen aus'
zuerst werden die labels errechnet wo man sich hinbewegen oder springen kann mit den in phase 1. erkannten x und y werte Bsp.: eins nach oben und nach vorne x+1 und y+1= sz1x und sz1y
(es gibt 4 richtungen in die man sich bewegen kann und in die man sprnigen kann)
nun errechnet das programm mit den koordinaten für die bewegungen die passenden labels

jetzt unterscheiden wir ob das spiellabel eine dame oder ein normaler spielstein ist (XX oder X) denn der normale spielstein kann blos in 2 der 4 richtungen springen oder sich bewegen
bei der bewegegung wird das spiel label auf '' gesetzt und das angeklickte label wenn alles stimmt auf 'X' bzw. 'XX' gesetzt
bei einen sprung für die varriabel k dazu das j wieder später um ein runter gesetzt wird damit man noch mal an der Reihe ist

am ende wird wieder j um 1 erhöht

jetzt folgen phasen 3 und 4
die sind gleich wie 1 und 2 nur funktionen mit "O" und "OO" natürlich bewegen sich die steine auch in die andere richting

sobald sich j auf 5 erhöht wird es wieder auf 1 zuruck gesetz spieler X fängt wieder mit phase 1 an

aber es geht nicht wie es sollte
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 18:30
Zitat von Fastdeath:
sobald sich j auf 5 erhöht wird es wieder auf 1 zuruck gesetz spieler X fängt wieder mit phase 1 an
Aber bis 5 kommst du gar nicht:

Delphi-Quellcode:
j:=j+1;
if j=3 then j:=1;
Mehr als bis 3 geht das ganze gar nicht
und die Prüfung auf j = 5 ist im ganzen Code nicht vorhanden
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Fastdeath

Registriert seit: 12. Jun 2009
12 Beiträge
 
#9

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 18:36
stimmt ich komme nicht auf fünf ich habe euch die version mit
if j=3 then j:=1; reingestellt
aber verändert man es auf 5 gehts genau so wenig
ich wollte nur prüfen ob überhaupt die phasen 1 und 2 richtig ablaufen
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#10

Re: Hilfe meine Dame-Spiel geht nicht :(

  Alt 15. Jun 2009, 18:40
So, endlich Feierabend....
Patrick war so ehrlich und hat es ausgesprochen und da möchte ich mich anschließen. Ich meine auch, dass der Quelltext in die Tonne gehört und du das geplanter angehen musst. Bei dem Stil verlierst du ganz schnell den Überblick, und wie ich das sehe fehlt da noch erheblich viel im Quelltext.
Wenn du nicht glaubst, dass das z.B. mit Hilfe von Klassen und Objekten einfacher geht, oder dass das komplizierter wäre, schau dir meinen Beispiel-Code hier mal an. Das bildet einiges bei dir ab und ist wesentlich übersichtlicher. Das mit den Labels verstehst du in ein paar Monaten selbst nicht mehr und spätestens wenn ein Programm größer und komplexer wird (okay, das trifft auf dieses Spiel vielleicht nicht zu) ist diese Unstruktur das Todesurteil.
Schau dir mal folgenden Code an, das stellt eine Tabelle mit Spielfeldern dar. Da fehlt zwar noch einiges, aber das ist ein gutes Beispiel, um den OO-Ansatz (im Minimalumfang) zu zeigen.

Im FormCreate() werden die Array mit Instanzen von TFeld befüllt. Jedes dieser Felder kann man dann im weiteren Verlauf des Spiels ganz einfach verwenden, wie es auch im BitBtn1Click() gezeigt wird.

Ich hoffe das hilft dir etwas weiter und zeigt, dass dieser Ansatz vernünftiger ist..
Meine Empfehlung ist es, es direkt richtig zu machen. Damit erspart man sich viel Verzeiflung und Enttäuschung.. das ist meine Erfahrung.

Delphi-Quellcode:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TFeld = class;

  TForm1 = class(TForm)
    DrawGrid1: TDrawGrid;
    procedure FormCreate(Sender: TObject);
    procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    Fields: array[0..2, 0..2] of TFeld;
  public
  end;

  TFeld = class
  public
    Text: string;
    X: Integer;
    Y: Integer;
    constructor Create(X, Y: Integer);
    procedure Draw(Canvas: TCanvas; Rect: TRect);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Fields[1][1].Text := '1';
  DrawGrid1.Repaint;
end;

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  Fields[ACol][ARow].Draw(TDrawGrid(Sender).Canvas, Rect);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  x, y: Integer;
begin
  for x := 0 to High(Fields) do
    for y := 0 to High(Fields[x]) do
    begin
      Fields[x][y] := TFeld.Create(x, y);
      Fields[x][y].Text := 'X';
    end;
end;

{ TFeld }

constructor TFeld.Create(X, Y: Integer);
begin
  Self.Text := '';
  Self.X := X;
  Self.Y := Y;
end;

procedure TFeld.Draw(Canvas: TCanvas; Rect: TRect);
begin
  Canvas.TextOut(Rect.Left + 5, Rect.Top + 5, Text);
end;
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 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