AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Sudoku - For windows
Thema durchsuchen
Ansicht
Themen-Optionen

Sudoku - For windows

Ein Thema von Corpsman · begonnen am 12. Mär 2006 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Corpsman
Corpsman
Registriert seit: 8. Nov 2005
Halli Hallo ich dachte mir ich stell auch mal ein Programm vor.

Die Spielidee von Sudoku muss ich glaubig nicht mehr erklären , oder ?

Kurz gesagt geht es darum die Zahlen 1 - n in ein n * n Quadrat zu schreiben.
Dies darf nur der Art geschehen das jeweils alle n Zahlen in Jeder der n Spalten und Zeilen stehen.
Was impiziert das eine Zahl jeweils nur ein mal in Jeder zeile, Spalte stehen darf.

Das ganze lässt sich immer Mathematisch / Logisch lösen.

Mein Programm unterstüzt auch das erstellen kleiner , bzw sehr großer Sudokus.

Ich habe auch eine Kompo eingebaut die alles ausdrucken kann.

Getestet habe ich das Prog unter Win98, Win7, Linux, da aber nur standartkomponenten verwendet werden müste es eigentlich unter allen Windows Betriebsystemen laufen.

Spiel download

Fehler gibt es hoffentlich nicht mehr ganz so viele. Wer einen Findet darf ihn mir aber gerne mitteilen ich versuceh dann mein bestes.

Die Dokumentation ist leider noch nicht ganz vollständig. Aber zum Spielen Reicht sie glaubig aus.

Es reicht eigentlich wenn man weis.

Einfügen einer Zahl in ein Feld geschieht durch drücken der Nummer ein zweites Drücken der Zahl löscht die Zahl wieder. Das Drücken der 0 Löscht ebenfalls das Feld.

Man kan mit den Tasten a,s,d,w ebenfalls navigieren und mus daher nicht immer alles anklicken.

Das müste eigentlich alles erklärt haben, oder ?

Weitere Fragen einfach an mich

---------------

Es gibt nun auch eine WEiterführung von Sudoku bei mir

Nennt sich N sudoku und hat den spass das man die Felder ( 3x3 blöcke beim Normalen ) aufbiegen und verstellen kann, auch sind die Feldgrößen frei wählbar.

Leider müssen diese immer noch Quadratisch sein, das könnte ich noch ändern ...

Auf jedenfall will ich's euch mal nicht vorenthalten.

Nominosudoku

[Edit]

Link erneuert.
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01

Geändert von Corpsman ( 9. Jan 2016 um 20:17 Uhr)
 
WIN-MANww

 
Turbo Delphi für Win32
 
#11
  Alt 14. Mär 2006, 18:02
Hi

Gefällt mir das Sudoku , 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

Zur genaueren Erläuterung hab ich noch n paar Screens im Anhang
Miniaturansicht angehängter Grafiken
colordialog_197.jpg   2x2hanging_647.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#12
  Alt 15. Mär 2006, 16:15
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:
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;
Kannst ja mal schaun ob du so nen Code bei dir laufen lassen kannst.

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.
Uwe
  Mit Zitat antworten Zitat
WIN-MANww

 
Turbo Delphi für Win32
 
#13
  Alt 22. Mär 2006, 14:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von GLaforge
GLaforge

 
Delphi 6 Enterprise
 
#14
  Alt 25. Mär 2006, 20:52
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
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

 
Turbo Delphi für Win32
 
#15
  Alt 25. Apr 2006, 15:32
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
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#16
  Alt 25. Sep 2006, 08:18
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 ).
Uwe
  Mit Zitat antworten Zitat
blablab

 
Delphi 7 Enterprise
 
#17
  Alt 4. Jan 2007, 17:24
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!!!
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

 
Delphi XE2 Professional
 
#18
  Alt 4. Jan 2007, 18:58
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 Nomino_sudoku ausprobieren. Nachdem ich das sudoku für meine Freundin fertig hatte habe ich das dann für mich geschrieben.
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:22 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