AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Projektarbeit

Ein Thema von Felix Stein · begonnen am 12. Nov 2014 · letzter Beitrag vom 16. Mär 2015
Antwort Antwort
Seite 7 von 7   « Erste     567   
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#61

AW: Eine Projektarbeit

  Alt 6. Mär 2015, 10:53
Lasst doch den armen Kerl in Ruhe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#62

AW: Eine Projektarbeit

  Alt 6. Mär 2015, 23:08
Wie viele unterschiedliche Probleme werden hier eigentlich gerade in diesem einen Thread behandelt? Ich habe etwas den Überblick verloren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#63

AW: Eine Projektarbeit

  Alt 7. Mär 2015, 08:11
Wie viele unterschiedliche Probleme werden hier eigentlich gerade in diesem einen Thread behandelt? Ich habe etwas den Überblick verloren.
Na alle Probleme, die beim Erstellen einer Projektarbeit aufkommen können, denke ich mal, inklusive der Projekarbeit selber, die bislang aber noch kein User hier zum Download bereitgestellt hat. Vielleicht erbarmt sich ja noch einer
  Mit Zitat antworten Zitat
Felix Stein

Registriert seit: 12. Nov 2014
21 Beiträge
 
#64

AW: Eine Projektarbeit

  Alt 12. Mär 2015, 15:37
ehm ich habe mir das jetzt einfach mal nicht alles durch gelesen xD. Um den im Moment offensichtlich gereizten Beitragsuser ein wenig zu beruhigen ich lade dem nächst einfach mal unsere beiden Programme hoch dann dürft ihr kritik äußern und feinarbeit leisten ^^ wenn ihr wollt. Das Rätsel um unser schweigen ist indess ziemlich simpel um die Projektarbeit zu schaffen und vor allem selber zu verstehen habe ich angefangen info Nachhilfe zu nehmen (ich ist in dem Fall Felix). Die Programme laufen zwar noch nicht aber den bisherigen aufbau habe ich verstanden (sind jetzt bei der Siegesbedingung) trotzdem danke ich noch mal allen die sich zuvor so rege am threat beteiligt haben
  Mit Zitat antworten Zitat
Felix Stein

Registriert seit: 12. Nov 2014
21 Beiträge
 
#65

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 10:20
angehangene Datei enthält Lazarus Programm für Tic Tac toe.

Achtung das spiel ist unfertig und wird euch eine Fehlermeldung bei der Prozedur "Victory" ausspucken der Rest ist korrekt. Wer das was vom Spiel fertig ist also betrachten möchte muss einfach die // vor die Prozedur machen und kann sehen wie weit ich bin. Victory ist das einzige was soweit noch fehlt also die Siegesbedingung die steht noch im Pseudocode. Hoffe jetzt habe ich alle Infos gegeben. Knobel im Moment an der Siegesbedingung habe am Donnerstag wieder Nachhilfe würde aber gerne auch sofort weiter machen^^ Problem mir fehlt die Sprachkenntnis für die Siegesbedingung von TTT
Angehängte Dateien
Dateityp: zip Lazarus Programm.zip (524,6 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#66

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 12:06
Das mit der Siegbedingung ist ja eh egal, da es bei ernsthaften TTT-Runden nie zu einem Gewinner kommen wird

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#67

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 12:53
Dabei geht es in der Spieleprogrammierung nicht. Man kann anhand von TTT aber die Basistechniken der Nullsummenspielemitvollständigerinformationprogram mierung sehr gut lernen.

Ein anderes gutes und einfaches Spiel ist das Bauernspiel, bei dem auf einem NxN brett jeweils N Bauern plaziert werden. Es gibt nur zwei Züge: Ein Feld nach vorne und ein Feld schräg nach vorne zum Schlagen (wenn da einer ist). Gewonnen hat der, der zuerst einen Bauern an die gegnerische Grundlinie bringt.

Obersimpel, langweilig, aber hervorragend geeignet, um selbstlernende, genetische Programme zu schreiben, mit Spielbaum, Minimax und allem, was dazugehört.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#68

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 15:26
Du solltest in Zeile 37 die Procedure "Update" umbenennen, da sie nicht im geringsten etwas mit der Procedure "Update" zu tun hat, welche in der Klasse TForm deklariert ist.

Der Compiler gibt Dir auch die entsprechende Warnung aus:
Code:
unit1.pas(37,15) Warning: An inherited method is hidden by "TForm1.Update(LongInt,LongInt,TImage);"
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#69

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 16:03
noch eine Kleinigkeit:
Delphi-Quellcode:
    for i:= 0 to 2 do begin
        for j:= 0 to 2 do begin
            Feld[x,y]:=0; // Hier ???
        end;
    end;
Was soll denn in der Button1Click-Procedure an der markierten Stelle geschehen, ausser dass das Feld[0,0] jedesmal 0 zugewiesen bekommt???
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#70

AW: Eine Projektarbeit

  Alt 16. Mär 2015, 16:57
Problem mir fehlt die Sprachkenntnis für die Siegesbedingung von TTT
Du muss ja lediglich die Zeilen und Spalten auf welche geklickt wurde, prüfen, ob dort im Array die gleichen Werte stehen. Die Diagonalen nicht vergessen, wenn es notwendig ist.

Wenn man Eueren bisherigen Quellcode einmal zugrundelegt, dann könnte dies so aussehen:
Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure Image9Click(Sender: TObject);
  private
    { private declarations }
    FSpielerX: Boolean;
    Feld: Array[0..2,0..2] of Variant;
    procedure UpdateFeld(AX,AY: Integer; AImage: TImage);
    function CheckVictory(AX,AY: Integer; ASpieler: Boolean): Boolean;
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  I,J: Integer;
begin
    Image1.Enabled := true;
    Image2.Enabled := true;
    Image3.Enabled := true;
    Image4.Enabled := true;
    Image5.Enabled := true;
    Image6.Enabled := true;
    Image7.Enabled := true;
    Image8.Enabled := true;
    Image9.Enabled := true;
    FSpielerX := true;

    for I:= 0 to 2 do begin
        for j:= 0 to 2 do begin
            Feld[I,J] := nil;
        end;
    end;
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
  UpdateFeld(0,0,Image1);
end;

procedure TForm1.Image2Click(Sender: TObject);
begin
 UpdateFeld(1,0,Image2);
end;

procedure TForm1.Image3Click(Sender: TObject);
begin
 UpdateFeld(2,0,Image3);
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
  UpdateFeld(0,1,Image4);
end;

procedure TForm1.Image5Click(Sender: TObject);
begin
  UpdateFeld(1,1,Image5);
end;

procedure TForm1.Image6Click(Sender: TObject);
begin
  UpdateFeld(2,1,Image6);
end;

procedure TForm1.Image7Click(Sender: TObject);
begin
  UpdateFeld(0,2,Image7);
end;

procedure TForm1.Image8Click(Sender: TObject);
begin
  UpdateFeld(1,2,Image8);
end;

procedure TForm1.Image9Click(Sender: TObject);
begin
  UpdateFeld(2,2,Image9);
end;


procedure TForm1.UpdateFeld(AX,AY: Integer; AImage: TImage);
begin
  if (Feld[AX,AY] = nil) then
   begin
    Feld[AX,AY] := FSpielerX;
    if (FSpielerX) then
     begin
      AImage.Picture.Loadfromfile('Unbenannt1.png');
     end
    else
     begin
      AImage.Picture.Loadfromfile('Unbenannt111.png');
     end;

    if (CheckVictory(AX,AY,FSpielerX)) then
     begin
      Label1.Caption := 'Gewonnen';
      //Victory();
     end;

    FSpielerX := not FSpielerX;
   end;
end;

function TForm1.CheckVictory(AX,AY: Integer; ASpieler: Boolean): Boolean;
begin
  Result := false;
  if ( ((Feld[AX,0] = ASpieler) and (Feld[AX,1] = ASpieler) and (Feld[AX,2] = ASpieler))
       or ((Feld[0,AY] = ASpieler) and (Feld[1,AY] = ASpieler) and (Feld[2,AY] = ASpieler))
     ) then
   begin
    Result := true;
   end;

  if ( (not Result)
       and ( ((AX = 0) and (AY = 0))
             or ((AX = 1) and (AY = 1))
             or ((AX = 2) and (AY = 2))
           )
     ) then
   begin
    if ((Feld[0,0] = ASpieler) and (Feld[1,1] = ASpieler) and (Feld[2,2] = ASpieler)) then
     begin
      Result := true;
     end;
   end;

  if ( (not Result)
       and ( ((AX = 2) and (AY = 0))
             or ((AX = 1) and (AY = 1))
             or ((AX = 0) and (AY = 2))
           )
     ) then
   begin
    if ((Feld[2,0] = ASpieler) and (Feld[1,1] = ASpieler) and (Feld[0,2] = ASpieler)) then
     begin
      Result := true;
     end;
   end;

end;

end.
Ein paar Kleinigkeiten zu Orignal habe ich auch mal geändert.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 7   « Erste     567   


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 20:52 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