AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem beim überprüfen der Sudokuregeln im StringGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim überprüfen der Sudokuregeln im StringGrid

Ein Thema von Rickiwarhammer · begonnen am 26. Jul 2007 · letzter Beitrag vom 30. Jul 2007
Antwort Antwort
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#1

Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 26. Jul 2007, 23:00
Also erstmal hallo an alle
Wie der Titel schon sagt schreibe ich ein Sudoku Spiel Bis jetzt klappt alles ... mein Plan ... Einen Editor für Customrätzel und die Rätzel des standart Spieles... Das Spielfeld habe ich mit einem String Grid gemacht... okkaaay man kann es speichern öffnen notizen titel ersteller und Co. machen klappt alles... jetzt soll der Editor natürlich auch nachprüfen ob dieses Rätzel auch den Regeln endspricht ... HIIEEEER IST DAS PROBLEM... ich finde einfach nicht herraus wie man die gerade angewählte Reihe und Spalte herrausfindet und gleichzeitig noch überprüft ob diese Zahl schon in der Zeil bzw. Spalte ist. und das gleiche ist auch für das 3x3 Feld ... WIE ... WIE NUR ... ich zerbreche mir schon seit Stunden den Kopf und nix kommt herraus... ich habe hier im Forum schon gefuden wie ich doppelte überprüfen kann aber iiirgendwie will das ganze nicht ... tja ich hoffe dass mir hier geholfen wird =( ich würde das Problem gerne beheben und das Spiel zuende bringen ... danke schonmal im vorraus ich bin über jede Antwort froh!
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 26. Jul 2007, 23:03
hast du schon nen ansatz? was funktioniert nicht? gar keine idee?
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 26. Jul 2007, 23:10
aaaah doch nen nasatz habe ich wie gesag das Programm geht ... nur kann es bis jetzt nicht das Rätzel überprüfen ob es richtig ist also kann man 9 x ne 4 in die Spalte machen ohne dass er sagt dass es falsch ist ;D ach ja danke für die schnelle antwort und ich hänge einfach mal die Datei an
Angehängte Dateien
Dateityp: rar builder_278.rar (473,0 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 00:16
ja ok ich seh mal was ich machen kann
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 00:18
OH vielen dank danke danke danke
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 08:37
Nun, ich würde mir ein statisches Array zur Hilfe nehmen mit 9 Booleans:

Delphi-Quellcode:
var
  CheckArray: Array[1..9] of Boolean;
Hier kannst du nun für eine Zeile/Spalte/Block die Zahlen auf true setzen, die gefunden wurden. Und wenn bereits ein Element true ist, dann ist es falsch. Natürlich müssen dann vor jeder Zeile/Spalte/Block alle Elemente wieder auf false gesetzt werden.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 11:22
vielleicht hilft dir die ja weiter... ungetestet und im editor erstellt
Angehängte Dateien
Dateityp: pas sudokupruef_169.pas (5,9 KB, 13x aufgerufen)
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 16:52
Sooo ich habe mich wieder mal lange an meinen Builder gesetzt und habe dank der .pas von dajuhsa (DANKE ) endlich einen weg gefunden wie ich den wert ermitteln kann uuuuund in der Spalte suchen kann KLAR is es nicht gerade die schönste art aber naja immerhin nur irgentwie hat der mist einen bug ... er findet alle fehler in der Spalte und in der Reihe aber wenn z.B noch nichts eingetragen wurde und man irgendeine Zahl in die erste Reihe bzw. Spalte einträgt sagt er mir es gäbe einen Fehler! nur warum kA... (also keinen prozessfehler sondern die Fehlermeldung von mir ;D)
Delphi-Quellcode:
procedure TForm1.Sudokuregeln(Sudoku: TStringGrid);
VAR
selBottom, selRight, Check: integer;
Zahl, CheckZahl : string;
Row, Col: Array [0..3] of integer;
begin
// Row zurücksetzen
Row[0] := 0;
Row[1] := 0;
Row[2] := 0;
Row[3] := 0;
// Col zurücksetzen
Col[0] := 0;
Col[1] := 0;
Col[2] := 0;
Col[3] := 0;
// Zahl suchen
selBottom := Sudoku.Selection.Bottom;
selRight := Sudoku.Selection.Right;
Zahl := Sudoku.Cells[selRight, selBottom];
IF Zahl = 'then exit
else
begin
// Reihe eingrenzen
IF selRight = 0 then
begin
Row[0] := 1;
Row[1] := (Sudoku.RowCount - 1);
end
else
begin
Row[0] := 0;
Row[1] := (selRight - 1);
Row[2] := (selRight + 1);
Row[3] := (Sudoku.RowCount - 1);
end;
// Reihe überprüfen
for Check := Row[0] to Row[1] do
begin
CheckZahl := Sudoku.Cells[Check, selBottom];
IF CheckZahl = Zahl then MessageDlg('Es ist ein Fehler im Kasten {' + inttostr(Check + 1) + ',' + inttostr(selBottom + 1) + '} aufgetreten!', mtError, [mbOK], 0);
end;
for Check := Row[2] to Row[3] do
begin
CheckZahl := Sudoku.Cells[Check, selBottom];
IF CheckZahl = Zahl then MessageDlg('Es is ein Fehler im Kasten {' + inttostr(Check + 1) + ',' + inttostr(selBottom + 1) + '} aufgetreten!', mtError, [mbOK], 0);
end;
// Spalte eingrenzen
IF selBottom = 0 then
begin
Col[0] := 1;
Col[1] := (Sudoku.ColCount - 1);
end
else
begin
Col[0] := 0;
Col[1] := (selBottom - 1);
Col[2] := (selBottom + 1);
Col[3] := (Sudoku.ColCount - 1)
end;
// Spalte überprüfen
for Check := Col[0] to Col[1] do
begin
CheckZahl := Sudoku.Cells[selRight, Check];
IF CheckZahl = Zahl then MessageDlg('Es is ein Fehler im Kasten {' + inttostr(selRight + 1) + ',' + inttostr(Check + 1) + '} aufgetreten!', mtError, [mbOK], 0);
end;
for Check := Col[2] to Col[3] do
begin
CheckZahl := Sudoku.Cells[selRight, Check];
IF CheckZahl = Zahl then MessageDlg('Es is ein Fehler im Kasten {' + inttostr(selRight + 1) + ',' + inttostr(Check + 1) + '} aufgetreten!', mtError, [mbOK], 0);
end;
end;
end;
und wieder ma danke im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 27. Jul 2007, 17:38
meine pas hat ansatzweise was gebracht?! freu, freu.
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Problem beim überprüfen der Sudokuregeln im StringGrid

  Alt 30. Jul 2007, 15:47
SOO ich habe ein schlaflose Nacht hinter mir ja wirklich XD und ich ahbs endlich geschafft!! die Regeln könnnen nun überprüft werden jedoch ;D wieder ein problem ich wollte die Spalte und die Reihe rot einfärben in der der Fehler ist ... ich ahbe es naja wie soll ich sagen ... geschafft und auch nicht also Er färbt sie nicht DIREKT ein sondern muss man die Kästchen nach und nach anklicken bevor sie rot werden ... hier sit der Code XD
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid) do
begin
If error = 10 then exit
else
if ARow = error then
Canvas.Brush.Color := $000000F0
else
Canvas.Brush.Color := $00FFFFFF;
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
end;
end;
//und so wird er aktiviert
procedure TForm1.Blockmessage(Row, Col: integer);
begin
CASE Form3.ComboBox1.ItemIndex OF
0:
begin
Messagedlg('Es ist ein Fehler in der Reihe: ' + inttostr(Row + 1) + ' und in der Spalte: ' + inttostr(col + 1) + ' aufgetreten!', mtError, [mbOK], 0);
error := Row;
StringGrid1DrawCell(StringGrid1, Row, Col, Rect(Row, Col, Row, Col), [gdfixed]);
end;
1: Messagedlg('There is an error in the row: ' + inttostr(Row + 1) + ' and in the column: ' + inttostr(col + 1) + '!', mtError, [mbOK], 0);
2: Messagedlg('Il ya une erreur dans l' + #39 + 'aligne: ' + inttostr(Row + 1) + ' et dans la colonne: ' + inttostr(col + 1) + '!', mtError, [mbOK], 0);
end;
end;
tjo vllt hilft die jetzige .exe auch noch ... ;D
Und zu guter letzt BEVOR ich aufhöre (zumindestens für jetzt ) euch das Ohr blutig zu reden wollte ich noch sagen dass ich am ende eine Komponente mit den Regeln und den msit schreibe für die die das gleiche problem haben ;D;D
Angehängte Dateien
Dateityp: rar sudokubreakermanager_208.rar (265,6 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:57 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