![]() |
Re: Sudoku - For windows
Liste der Anhänge anzeigen (Anzahl: 2)
Hi
Gefällt mir das Sudoku :thumb:, vor allem, weils Freeware ist und weil man eigene Sudokus erstellen kann. Hab da allerdings noch n paar Bugs gefunden: - Beim Farben setzen hängt sich mein Rechner auf, weiss nicht ob es jetzt einfach an meinem liegt oder was auch immer. Wenn ich nämlich auf eine Farbe klicke, um diese zu ändern, dann hängt er sich auf.. Ausserdem werden die Buttons schon beim aufrufen des Color setting Dialogs unsichtbar, das ist aber auch erst so, seit es sich das letzte mal aufgehängt hat und wird nach einem Neustart wohl behoben sein. - Bei den 2x2, 4x4 und dem 5x5 Sudoku kann ich Zahlen nicht mehr löschen durch nochmaliges eingeben. Es gibt dann ein Fehler, ich könne die Zahl nicht mehr einsetzen. - Nur noch ein kleiner: Bei mir wird beim 5x5 Sudoku kein neues Sudoku erstellt, es hängt sich auf, aber das liegt dann wohl definitiv an meinem Rechner :stupid: Zur genaueren Erläuterung hab ich noch n paar Screens im Anhang |
Re: Sudoku - For windows
Hi Win-Manww.
Um Zahlen Löschen zu können darfst du in den Anderen Modi nur die "0" benutzen. Da ich da keine so große Lust mehr hatte das so genau aus zu Programmieren. Was mit den Sachend er Farben ist kann ich so nicht Nachvollziehen. Hier folgt der Orginal Quellcode aus dem Spiel.
Delphi-Quellcode:
Kannst ja mal schaun ob du so nen Code bei dir laufen lassen kannst.
Procedure TForm2.Image2Click(Sender: TObject);
Begin // Auswahl einer Farbe Colordialog1.color := Timage(Sender).Canvas.brush.color; If Colordialog1.Execute Then Begin Timage(Sender).Canvas.brush.color := Colordialog1.color; Redraw;// Neu Zeichnen des Vorschau fensters End; End; Das Erstellen der Großen Sudoku's ist in der Tat ein Rechner Killer bei meinem 1,8 GHZ Rechner mit 512MB Arbeitspeicher tut es auch nicht immer. |
Re: Sudoku - For windows
Hi corpsman
Ah ok, das Problem mit den Zahlen ist also geklärt. Würde mich trotzdem bei einer nächsten Version über das komplette ausprogrammieren der Funktion freuen. Wegen dem Colordialog: Der Code scheint bei mir nicht zu funktionieren, ich vermute jetzt mal, dass Redraw eine von dir geschriebene Funktion ist? Ist es eventuell möglich an den Code zum erstellen der Standard Sudokus zu kommen? Würde mich sehr darüber freuen, weil ich bis jetzt noch keinen Code dafür gefunden habe. :-) |
Re: Sudoku - For windows
Hi corpsman,
muss jetzt hier wirklich mal mein Lob aussprechen. Also ich kann auch eigentlich nicht allzu viel dazu sagen, find es einfach nur gut. Ich studiere Informatik und weiss auch daher wieviel Arbeit hinter einem Programm steckt, obwohl das viele garnicht vermuten würden. Wird ja bei diesen Programm nicht anderst sein. Würde mich aber auch freuen, wenn du zumindest gewisse Porgrammelementcodes hier darstellst. Tschau |
Re: Sudoku - For windows
Hi
ich habe jetzt erste gemerkt, dass dieses Thema hier steht. Ich kannte das Programm schon aus der GameStar als Leserprogramm (war doch da, oder??) (ich glaube aus dem Februar) jetzt zum programm: ich dachte damals, dass sich der colordialog nur bei mir aufhängt, was allerdings nicht der fall zu sein scheint. was ich sonst noch gerne im programm hätte, wäre beim stepwise-solve eine begründung, WIESO das programm als nächste zahl die genommen hat |
Re: Sudoku - For windows
Hi vlees91,
die DP hatte mich wohl vergessen zu benachrichten ? Zu deiner Frage. Ich könnte dir höchstens sagen welche technik zum Finden des jeweiligen Feldes geführt hat. Der Allgorithmus der dann die Jeweilige Technik löst ist selbst nicht in der Lage zu begründen warum es geht. Denn da ist es meistens so das ein Array nachher nur noch einen Bool wert auf True hat und der Algo dann halt ne Zahl setzt , oder ein Pencil streicht. Übrigens habe ich nun endlich den Drucker Bug gefunden und behoben. Nun wird beim Drucken der Sudokus immer der Standartdrucker gewählt. Und nicht mehr der 1. Drucker in der Liste.( Der DL Link aus dem 1. Post wurde nun auch aktualisiert ;) ). |
Re: Sudoku - For windows
Hi!
Bei mir hängt sich der ColorDialog auch auf. Wenn ich das Dialog in dem man die Farben ändern kann öffne, dann werden die Knöpfe schon gar nicht angezeigt und das Programm rechnet mit 100% auslastung. Sobald man dann eine Farbe auswählt und sich das Colordialog öffnen soll schmiert es ganz ab... Was anderes: Das Menü und die Programmgestaltung sind schon etwas komisch... Zum einen ist das Englisch blöd, weil man auf den ersten Blick net versteht, was die Einzelnen Menüpunkte etc. bedeuten. Aber auf den 2.Blick merkt man, dass man es in Deutsch au net wirklich verstehen würe... Z.B. ist es komisch, dass wenn man eine andere Sudoku-Größe wählt plötzlich ein neues modales Fenster geöffnet wird, welches das andere verdeckt. Zuerst denkt man "was ist jetzt los" weil sich das menü geändert hat und man die größe nicht mehr zurückstellen kann. Dann wären da noch z.b. die CheckBoxen rechts im Fenster. Man hat kein Plan was die alle bedeuten. Was sind z.b "Pencil numbers" oder "line Penicil numbers"??? Also muss man es ausprobieren und man Clickt alle Checkboxen an. Aber sobald man irgend eine Checkbox aktiviert wird wieder eine ander deaktiviert und die nächste aktiviert. Die Checkboxen scheinen willkürliche zusammenhänge zu haben auf die ich bis jetzt noch nicht gekommen bin. Hier sollte man vielleicht bestimmte checkboxen die von anderen abhängig sind disabled machen und das ganze vielleicht durch einrückungen oder groupboxen etwas strukturieren... Aber dass ich die ganze zeit nur mecker hat nichts zu bedeuten! Das Programm ist wirklich das beste "Sudoku-Programm" das ich bis jetzt gesehen hab!!! |
Re: Sudoku - For windows
hi blablab,
Du hast bestimmt WinXP. Das Problem mit dem Colordialog das du da beschreibst ist mir bekannt. Da ich selbst aber unter Win 98 entwickle ( und der BUG bei mir nicht ist ) und auf alles WinXP systemem auf denen ich es bisher getestet habe das Problem nicht nachvollziehbar zu erzeugen war, ist der Bug noch drin. hier mal der Komplette Code der unter Implementation steht. Vielleicht seht ihr ja den Fehler
Delphi-Quellcode:
Implementation
{$R *.DFM} Uses unit1; // Anzeigen des Vorschau Fenster's hier sind alle Effecte Hardcoded Procedure Redraw; Var x, y: integer; Begin With form2 Do Begin // Zeichnen der Farbauswahl For x := 2 To 14 Do Timage(findcomponent('Image' + inttostr(x))).canvas.Rectangle(0, 0, 30, 13); // Zeichnen des Vorschau bildes With image1.canvas Do Begin x := 6; y := 6; // Der Background pen.color := clblack; brush.style := bssolid; brush.color := image14.canvas.brush.color; Rectangle(0, 0, 193, 193); // das Gitter, bzw die Hintergünde des Gitters pen.color := image9.canvas.brush.color; brush.color := image2.canvas.brush.color; rectangle(x, y, x + 60, y + 60); brush.color := image6.canvas.brush.color; rectangle(x + 60, y, x + 120, y + 60); rectangle(x, y + 60, x + 60, y + 120); brush.color := image3.canvas.brush.color; rectangle(x + 120, y, x + 180, y + 60); brush.color := image5.canvas.brush.color; rectangle(x + 60, y + 60, x + 120, y + 120); rectangle(x + 120, y + 60, x + 180, y + 120); rectangle(x + 60, y + 120, x + 120, y + 180); rectangle(x + 120, y + 120, x + 180, y + 180); brush.color := image7.canvas.brush.color; rectangle(x, y + 120, x + 60, y + 180); brush.color := image13.canvas.brush.color; Pen.color := image13.canvas.brush.color; Ellipse(x + 61, y + 61, x + 119, y + 119); Ellipse(x + 2, y + 2, x + 18, y + 18); Ellipse(x + 122, y + 2, x + 138, y + 18); Ellipse(x + 2, y + 122, x + 18, y + 138); Brush.Style := bsclear; // Die Pencil einträge font.Size := 12; font.color := image11.canvas.brush.color; x := 11; textout(x + 1, y + 1, '1'); textout(x + 1, y + 21, '4'); textout(x + 1, y + 41, '7'); textout(x + 21, y + 1, '2'); textout(x + 21, y + 21, '5'); textout(x + 21, y + 41, '8'); textout(x + 41, y + 1, '3'); textout(x + 41, y + 21, '6'); textout(x + 41, y + 41, '9'); textout(x + 121, y + 1, '1'); textout(x + 121, y + 21, '4'); textout(x + 121, y + 41, '7'); textout(x + 141, y + 1, '2'); textout(x + 141, y + 21, '5'); textout(x + 141, y + 41, '8'); textout(x + 161, y + 21, '6'); textout(x + 161, y + 41, '9'); Font.color := image12.canvas.brush.color; textout(x + 1, y + 81, '4'); textout(x + 1, y + 101, '7'); textout(x + 1, y + 121, '1'); textout(x + 1, y + 141, '4'); textout(x + 1, y + 161, '7'); textout(x + 21, y + 61, '2'); textout(x + 21, y + 81, '5'); textout(x + 21, y + 101, '8'); textout(x + 21, y + 141, '5'); textout(x + 21, y + 161, '8'); textout(x + 41, y + 81, '6'); textout(x + 41, y + 101, '9'); textout(x + 41, y + 121, '3'); textout(x + 41, y + 141, '6'); textout(x + 41, y + 161, '9'); textout(x + 61, y + 21, '4'); textout(x + 61, y + 41, '7'); textout(x + 81, y + 21, '5'); textout(x + 81, y + 41, '8'); textout(x + 101, y + 1, '3'); textout(x + 101, y + 21, '6'); textout(x + 101, y + 41, '9'); textout(x + 121, y + 141, '4'); textout(x + 121, y + 161, '7'); textout(x + 141, y + 141, '5'); textout(x + 141, y + 161, '8'); textout(x + 161, y + 141, '6'); textout(x + 161, y + 161, '9'); // Die Feld nummern x := 6; font.size := 30; font.Color := image10.canvas.brush.color; textout(x + 80, y + 66, '1'); font.Color := image4.canvas.brush.color; textout(x + 140, y + 66, '3'); font.Color := image8.canvas.brush.color; textout(x + 80, y + 126, '2'); End; End; End; Procedure TForm2.Button1Click(Sender: TObject); Var x: integer; Begin // Übernehmen der Farben in die Variablen der Form1 Bretthintergrundfarbe1 := Form2.image2.canvas.brush.color; Bretthintergrundfarbe2 := Form2.image3.canvas.brush.color; Maybeedcolor := Form2.image4.canvas.brush.color; MarkedColor1 := Form2.image5.canvas.brush.color; MarkedColor2 := Form2.image6.canvas.brush.color; CursorMarker := Form2.image7.canvas.brush.color; Fixedcolor := Form2.image8.canvas.brush.color; Gitterfarbe := Form2.image9.canvas.brush.color; FontColor := Form2.image10.canvas.brush.color; Pencilcolor := Form2.image11.canvas.brush.color; PencilcolorMarked := Form2.image12.canvas.brush.color; LightenColor := Form2.image13.canvas.brush.color; FormBackground := Form2.image14.canvas.brush.color; // Sonderfall Hintergrund = Schwarz For x := 1 To 6 Do Begin TCheckbox(Form1.findcomponent('Checkbox' + inttostr(x))).color := FormBackground; If FormBackground = clblack Then TCheckbox(Form1.findcomponent('Checkbox' + inttostr(x))).font.color := clwhite Else TCheckbox(Form1.findcomponent('Checkbox' + inttostr(x))).font.color := clblack; End; // Neuzeichnen Drawfield; // Raus close; End; Procedure TForm2.Button2Click(Sender: TObject); Begin close; End; Procedure TForm2.Image2Click(Sender: TObject); Begin // Auswahl einer Farbe Colordialog1.color := Timage(Sender).Canvas.brush.color; If Colordialog1.Execute Then Begin Timage(Sender).Canvas.brush.color := Colordialog1.color; Redraw;// Neu Zeichnen des Vorschau fensters End; End; Procedure TForm2.FormPaint(Sender: TObject); Begin // neuzeichnen Redraw; End; Procedure TForm2.Button3Click(Sender: TObject); Begin // Die Standert Farben image2.canvas.Brush.color := clbtnface; image3.canvas.Brush.color := clgray; image4.canvas.Brush.color := clyellow; image5.canvas.Brush.color := clBlue; image6.canvas.Brush.color := clnavy; image7.canvas.Brush.color := clgreen; image8.canvas.Brush.color := clblack; image9.canvas.Brush.color := Clblack; image10.canvas.Brush.color := $00C08000; image11.canvas.Brush.color := clmaroon; image12.canvas.Brush.color := $004080FF; image13.canvas.Brush.color := CLaqua; image14.canvas.Brush.color := clbtnface; redraw; End; Procedure TForm2.FormCreate(Sender: TObject); Begin Caption := 'Sudoku ver. : ' + ver + ' Color Options'; End; Zu den Menues: Ursprünglich habe ich das Sudoku nur für die 3x3 Felder gemacht. Das Programm war Fertig und Gut. Dann Kam meine Freundin und meinte das es ja voll Toll wäre wenn die Größer und Kleiner sein Könnten. Also habe ich das noch NAchträglich reingebaut. Das einfachste war dann das erstellen neuer Formulare, für Jede Größe. Ich weis Optimal ist es nicht. Aber ich hatte zu dem Zeitpunkt keine Lust mehr. Ja Die Checkboxen sind schon so ne Sache. Sudoku war eigentlich das erste Programm das ich nicht für mich sondern für andere Geschrieben habe. Und da muste ich noch einiges an Benutzerfreundlichkeit lernen( bei BAlanced ist das schon deutlich besser ). Die zusammenhänge sollten aber Trotzdem nicht all zu schwer sein. Mit Pencil numbers sind die Kleinen Zahlen gemeint. Am Besten du erstellst mal ein Sudoku und machst dann die Option "Show pencil numbers" und "show line pencil numbers" an. Dann Klickst du auf "auto pencil numbers". Dann sollte der sinn Klar werden. Meine Freundin gibt diese Kleinen ZAhlen immer von hand ein , deswegen die Checkbox "edit pencil numbers" und bei den Line sachen ist das genau das selbe. Wenn dir das Sudoku gefällt solltest du unbedingt mein ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz