Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Sudoku


Acehigh - Fr 07.05.10 23:38
Titel: Sudoku
Hallo!

Ich bin neu hier und auch Anfänger in Delphi und hoffe hier ein paar gute Tips mitnehmen zu können.

Ich hab die Aufgabe ein Programm für ein Sudoku zu schreiben(Datein im Anhang). Ist erst mein drittes "Projekt", funktioniert aber soweit.Meine Frage ist jetzt wie ich das Programm optimieren kann?
Wie schaffe ich es, dass ich nicht immer jedes Edit Feld einzelnd ansprechen muss wenn ich den Style oder die Size ändern will?
Ist die Testfunktion so weit ok?
Der Lösungsbutton funktioniert noch nicht. Wie programmiere ich eine zufällige Lösung?
Sonst noch Verbesserungsvorschläge?

Schönen Abend noch!

Gruß Acehigh

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


BenBE - Fr 07.05.10 23:55

Zwecks Ansprechend der Edits siehe FindComponent.

Zum Optimieren empfiehlt es sich, die visuellen Komponenten nur zur Anzeige herzunehmen und intern z.B. mit Arrays zu arbeiten. Damit bekommst Du einiges mehr an Geschwindigkeit raus.

Zum Lösen: Schau Dir mal Breitensuche bzw. Tiefensuche an. Auch sonst findest du zum Thema Sudoku (すどく) einiges hier im Forum. Einfach mal suchen ;-)


Acehigh - Sa 08.05.10 01:15

Danke

Ich hab mich gleich mal an das FindComponent gemacht und bin bisher so weit gekommen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TFormSudoku.SButtonBoldClick(Sender: TObject);
 var i : integer;
      E: TEdit;
begin
 for i := 11 to 11 do
    begin
     E := TEdit(FindComponent('E' + IntToStr(i)));
     E.Font.Style := [fsBold];
    end;
end;

Das Problem ist jetzt das die Edits E11,E12,E13,E14,E21...E44 heißen und das Programm
abstürzt wenn I := 11 to 44 schreiben würde. Wie kann ich das lösen außer das ich die
Edits umbenenne?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


elundril - Sa 08.05.10 04:26

Du könntest ev. auch ein StringGrid verwenden, was das ganze ohne FindComponent löst.

lg elundril


Acehigh - Sa 08.05.10 17:58

Beim StringGrid und bei der Breitensuche finde ich irgendwie keinen Ansatz oder weiß nicht wie so etwas aufgebaut wird. Könnt ihr mir etwas mehr helfen?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


jaenicke - So 09.05.10 22:02

Wie meinst du das? Das StringGrid legst du einfach auf das Formular. Über Cells kannst du dann auf die einzelnen Zellen zugreifen.
Wie das dann aussieht siehst du z.B. bei meinem Sudoku-Progrämmchen:
http://www.delphi-forum.de/viewtopic.php?t=48160