Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Sudoku (https://www.delphipraxis.net/167113-probleme-mit-sudoku.html)

DelphNoob 14. Mär 2012 07:42

Probleme mit Sudoku
 
Halli hallo Leute Ich soll für den Unterricht ein Programm schreiben, und habe mich für ein Sudoku entschieden aber es stellt sich als schwerer heraus als ich dachte.
Ich habe ja bereits angefangen und eine Startseite erstellt mit einer ComboBox um den Schwierigkeitsgrad zu bestimmen und bei dem Startbutten werden in der Form2 9x9 editfelder generiert.
wie kann ich im Form2 ein sudoku einer bestimmten Schwierigkeitsgrad zuordnen und generieren lassen?
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    CBSchwGrad: TComboBox;
    BtStart: TButton;
    EdName: TEdit;
    PaUeberschrift: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure BtStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  CBSchwGrad.AddItem('Leicht', Self);
  CBSchwGrad.AddItem('Mittel', Self);
  CBSchwGrad.AddItem('Schwer', Self);
end;

procedure TForm1.BtStartClick(Sender: TObject);
begin
  Application.CreateForm(TForm2, Form2);
  Form2.ShowModal;
end;

end.
Delphi-Quellcode:
procedure TForm2.setposition(spalte:Integer; zeile:Integer; editfeld:Integer);
begin
  felder[editfeld].Font.Size:=22;
  felder[editfeld].Width:=50;
  felder[editfeld].Height:=50;
  felder[editfeld].AutoSize:=False;
  felder[editfeld].Top:=(8*zeile)+(50*(zeile-1));
  felder[editfeld].Left:=(8*spalte)+(50*(spalte-1));
end;

procedure TForm2.FormCreate(Sender: TObject);
var editfeld,spalte,zeile:Integer;
begin
  editfeld:=0;
  For spalte:=1 to 9 do
  begin
    For zeile:=1 to 9 do
    begin
      felder[editfeld]:=TEdit.Create(Form2);
      felder[editfeld].Parent:=Form2;
      setposition(spalte,zeile,editfeld);
    end;
  end;
end;
Also ich merke gerade, dass ich keine Ahnung von Delphi habe. Ich danke schon mal und hoffe jmd kann mir helfen.

jaenicke 14. Mär 2012 07:51

AW: Probleme mit Sudoku
 
Hallo und willkommen im Forum ;-)

Zitat:

Zitat von DelphNoob (Beitrag 1156459)
Also ich merke gerade, dass ich keine Ahnung von Delphi habe. Ich danke schon mal und hoffe jmd kann mir helfen.

Das ist dabei noch nicht einmal das größte Problem. Ich habe vor ein paar Jahren mehrere Wochen für einen einigermaßen akzeptablen Algorithmus gebraucht um gültige Sudokus schnell zu generieren. Und dazu kommt dann noch der Schwierigkeitsgrad.

Jedenfalls musst du dir erst einmal darüber klar werden wie du die Sudokus überhaupt generieren willst. Danach kannst du anfangen das in Delphi umsetzen.

DelphNoob 14. Mär 2012 07:56

AW: Probleme mit Sudoku
 
Danke für die schnelle Antwort,
Ich wollte mir das für den Unterricht nicht zu kompliziert machen.
Ich wollte einfach aus einer Zeitschrift schon fertige Sudokus nehmen, und im Hintergrund das gelöste. und die eingaben sollen mit dem gelösten einfach verglichen werden.
Ich weiß nun leider nicht wie ich ein schon fertiges (ungelöstes) Sudoku nach der Auswahl des Schwierigkeitsgrades anzeigen lassen kann.

Jumpy 14. Mär 2012 08:11

AW: Probleme mit Sudoku
 
Wäre es nicht vllt. einfacher ein Programm zu schreiben, das Sudokus löst?
Da gibt's hier im Forum doch schon einige Ansätze, wo man sich Ideen holen kann. Jenachdem welche Lösungsvariante man wählt, könnte man sich so auch ein bißchen mit Rekursion beschäftigen. Und mit Arrays, denn man sollte hier Anzeige (z.B. via Grid) von der Logik trennen. Wäre halt eine gute Übung.


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