Sudoku Spiel



  • Hallo.

    Ich glaube heutzutage kennt jeder schon das Spiel Sudoku.

    Mein Ziel ist es, so ein Spiel zu entwickeln. Es klingt schwer aber wäre soetwas mit der Konsolenprogrammierung (ISO C++) möglich?

    Ich denke schon, aber sicher schwer, um die Zahlen schön formatiert aufzulisten.

    Könntet ihr mir Tipps geben, wie ich anfangen könnte?

    MfG
    Technology



  • Fang damit an die Zahlen schön formatiert auszugeben.
    Dann erstellst du dir ein kleines Interface, wie man die Zahlen eingibt, in der Konsole wird das schwer.
    Nun erstellst du eine Funktion, die ein volles Soduko-Feld entgegen nimmt, und sagt, ob dort Fehler auftreten.
    Jetzt überlegst du dir einen Algorithmus um ein neues Soduku-Rätsel zu erstellen. Am stumpfsten wäre einfach, dass du immer das Feld mit zufälligen Zahlen erstellst, und es dann auf Gültigkeit prüfst. Sobald du ein gültiges gefunden hast, entfernst du zufällig ein paar Stellen und fertig. Wie lange dieser Algorithmus dauert, weiß ich nicht, könnte ja sein, dass es verhältnismäßig flott geht.
    Als letztes baust du ein Menü oder so ein gibst dem Programm den letzten Schliff.
    Viel Spaß! 😃

    mfg.



  • Zur schöneren Ausgabe (zumindest unter Linux und Co) kann ich dir zu "ncurses" raten.
    Damit kannst du deine Konsole in einzelne "Fenster" einteilen und diese dann getrennt bearbeiten.



  • da stimme ich hehejo zu.
    mit ncurses kannst sowas in der konsole machen.

    Fuer eine Grafische multi os version empfehel ich dir
    fltk. Ich habe damit die besten erfolge erziehlt.

    FLTK lauft auf:
    Windows (selbst getestet)
    Linux (nicht getestet)
    Unix (selbst getestet)
    Apple (selbst getestet)

    Wenn du mehr ueber fltk wissen willst, guke auf wikipedia.

    @joomoo
    Dein "algorithmus" hat eine laufzeit von O(m^n)
    und das ist relative schlecht!

    Der algorithmus hier ist besser (http://de.wikipedia.org/wiki/Sudoku#Algorithmus)
    versuche weg 2 oder 3 zu implementieren.

    Wichtig beim verdecken der richtigen zahlen:
    Lasse min 17-20 Zahlen offen! sonst gibt es mehr als eine richtige
    loesung.

    Gg



  • Danke mal für die Tipps.

    Ich kenne mich mit Algorithmen noch gar nicht aus. Deswegen möchte ich etwas ganz einfaches realisieren.

    Es würde mir auch genügen, dass es nur ein Beispiel gibt. Aber ich weiss nicht wie ich realisiere z.b. wenn ich bei feld 4,5 (4 nach rechts - 5 nach unten) etwas eingebe und mir dann zugeteilt wird, ob die zahl für diesen feld stimmt oder nicht.

    ein sudoku feld hat 81 felder.

    ich bräuchte noch mehr tipps glaube ich ^^

    MfG
    Technology



  • technology schrieb:

    Ich glaube heutzutage kennt jeder schon das Spiel Sudoku.

    Mein Ziel ist es, so ein Spiel zu entwickeln. Es klingt schwer aber wäre soetwas mit der Konsolenprogrammierung (ISO C++) möglich?

    Ja - sicher

    technology schrieb:

    Ich denke schon, aber sicher schwer, um die Zahlen schön formatiert aufzulisten.

    Wenn man grundsätzlich C++-Ausgaben beherrscht, ist es leicht.

    technology schrieb:

    Könntet ihr mir Tipps geben, wie ich anfangen könnte?

    Zunächst einmal damit, dass Du Dir darüber klar wirst, was das Programm leisten soll. Soll es Sudoku-Rätsel lösen? (mittel bis einfach) oder welche erzeugen? (relative schwer)
    Und wie soll die Oberfläche Deines Programms aussehen; mal abgesehen von der Programmierung; sozusagen aus der Sicht des Benutzers.

    Gruß
    Werner



  • Ich hab weils mir interessant vor kam auch mal ein Sudoku programmiert ...
    bin soweit eigentlich auch fertig, aber es gibt da noch ein Problem ...
    und zwar werden oft mehrdeutige Felder erstellt, und je schwieriger man es einstellt umso mehr muss man raten...

    Ich erstelle die Felder nach der 2. Methode die bei Wikipedia beschrieben wird.
    Die "Lücken" erstelle ich komplett zufällig ... das einzige worauf ich achte, ist das in einem 3x3 Quadrat mindestens 1 Feld vorgegeben ist. Und ich denke da ist das problem ... irgendwie muss es da noch mehr regeln geben.
    Ich hoffe ihr könnt mir da helfen! 🙂

    Auf Wikipedia steht dann noch:

    Die maximale Zahl von Vorgaben, die nicht zu einer eindeutigen Lösung führen, ist, 
    unabhängig von der Variante, um vier geringer als die Gesamtzahl der Felder 
    (z. B. 81 - 4 = 77 bei der Standardvariante). Wenn von zwei Zahlen jeweils zwei
     Vorgaben fehlen, die zugehörigen Felder auf den Ecken eines Rechtecks liegen,
     dessen Ecken paarweise im selben Block liegen |--| und dessen Kanten in der 
    selben Zeile bzw. Spalte liegen, gibt es zwei Möglichkeiten, diese Zahlen 
    einzutragen. Das andere Extrem – die Mindestzahl von Vorgaben, die zu einer 
    eindeutigen Lösung führen – zu bestimmen ist ein ungelöstes Problem. Die 
    Mindestzahl, die bisher für die Standardvariante ohne Symmetrieforderung 
    gefunden wurde, ist 17. Dies haben japanische Rätselenthusiasten herausgefunden.
     Bei drehsymmetrischer Anordnung sind es 18.
    

    Das sieht irgendwie nach einer lösung aus. Ich verstehe das aber nur bis zum "|--|"... dann wirds wir 🙂



  • Dann solltest du dir das an einem Beispiel verdeutlichen:

    +---+---+---+
    |  x| x |   |
    |   |   |   |
    |  x| x |   |
    +---+---+---+
    |   |   |   |
    |   |   |   |
    |   |   |   |
    +---+---+---+
    |   |   |   |
    |   |   |   |
    |   |   |   |
    +---+---+---+
    

    Die "x"-Felder da oben sin noch unbestimmt, alle anderen Werte kennst du - da in jedem beteiligten Block (Zeilen, Spalten, 3x3-Felder) die selben beiden Werte fehlen, kannst du theoretisch frei auswählen, wie du sie verteilst.


Anmelden zum Antworten