Sudoku

  • natürlich nich, aber es ist auch nich so extrem schwer musst halt voher genau überlgen, und es so schreiben, das halt einfach in einer reihe keine 2mal vorkommen, das geht schon der Vergleich a Ende ist das blöde...
    das werden dann halt ziemlich viele Arrays

    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Also das Game steht ja so weit.

    bernd670

    Erst einmal: Dein Script läuft enwandfei und ist super !!!

    Na klar meine ich ein Level Editor. Aber der sollte dann unabhängig zum Spiel laufen, das wäre dann das geniale.

    Tester?
    Sobald es fertig ist und die, die anran beteidigt waren es erlauben und davon gehe ich bis dato von aus (sonst melden), dann werden wir er hier veröffentlichen. Vielleicht bekommen wir ja auch Platz es dann in die
    "Benutzerskripte" zu stellen. Muß ich dann aber Peethebee fragen, ob er es befürwortet.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    So, jetzt haben wir einen LevelEditor und am Programm habe ich auch noch ein paar Ergänzungen vorgenommen!

    Komischerweise springt bei mir der Cursor in verkehrter Reihenfolge wenn ich Tab drücke!? ?(


    Der Speichern-Button wird erst aktiviert wenn mindestens 22 Ziffern eingetragen sind! Gibt's auch sinnvolle Rätsel mit weniger Ziffern?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Const $ciTop = 40
    Const $ciLeft = 20
    Const $cstrIniFile = @ScriptDir & "\Sudoku.ini"

    [/autoit] [autoit][/autoit] [autoit]

    Dim $arSudokuFeld[9][9] ; Speichert die ControlID's der Inputfelder
    Dim $arLevels ; Array für die Spielstufen
    Dim $arGames ; Array für die Spiele in den Spielstufen

    [/autoit] [autoit][/autoit] [autoit]

    Global $bLevelsChanged ; Ist True wenn sich an den Levels was geändert hat
    Global $bSheetSaveOK ; Ist True wenn das Blatt mit mehr als 21 Ziffern gefüllt ist
    Global $bSheetChanged ; Ist True wenn das Blatt verändert wurde
    Global $iGameIndex ; Speichert die aktuelle Spielnummer

    [/autoit] [autoit][/autoit] [autoit]

    $FrmMain = GUICreate("Sudoku - Level Editor", 633, 454, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "FormMainClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "FormMainMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "FormMainMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "FormMainRestore")

    [/autoit] [autoit][/autoit] [autoit]

    $PicLeft = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft, $ciTop + 5, 5, 334, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicInnerLeft = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft + 113, $ciTop + 5, 5, 334, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicInnerRight = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft + 226, $ciTop + 5, 5, 334, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicRight = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft + 339, $ciTop + 5, 5, 334, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicTop = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft, $ciTop, 344, 5, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicInnerTop = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft + 5, $ciTop + 113, 334, 5, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicInnerBottom = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft + 5, $ciTop + 226, 334, 5, BitOR($SS_NOTIFY, $WS_GROUP))
    $PicBottom = GUICtrlCreatePic(@ScriptDir & "\Images\Black.jpg", $ciLeft, $ciTop + 339, 344, 5, BitOR($SS_NOTIFY, $WS_GROUP))

    [/autoit] [autoit][/autoit] [autoit]

    For $iZeile = 0 To 8
    $iTop = $ciTop + 8 + $iZeile * 35 + Int($iZeile / 3) * 8
    For $iSpalte = 0 To 8
    $iLeft = $ciLeft + 8 + $iSpalte * 35 + Int($iSpalte / 3) * 8
    $arSudokuFeld[$iZeile][$iSpalte] = GUICtrlCreateInput("", $iLeft, $iTop, 32, 32, BitOR($ES_CENTER, $ES_NUMBER))
    GUICtrlSetOnEvent(-1, "FieldChange")
    GUICtrlSetLimit(-1, 1)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $LblLevels = GUICtrlCreateLabel("Level:", $ciLeft + 360, $ciTop + 5, 50)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    $CBLevels = GUICtrlCreateCombo("", $ciLeft + 420, $ciTop + 5, 120, 100, $CBS_DROPDOWNLIST)
    GUICtrlSetOnEvent(-1, "LevelChange")

    [/autoit] [autoit][/autoit] [autoit]

    $LblGames = GUICtrlCreateLabel("Spiel:", $ciLeft + 360, $ciTop + 30, 50)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    $CBGames = GUICtrlCreateCombo("", $ciLeft + 420, $ciTop + 30, 120, 100, $CBS_DROPDOWNLIST)
    GUICtrlSetOnEvent(-1, "GameChange")

    [/autoit] [autoit][/autoit] [autoit]

    $ButChangeLevel = GUICtrlCreateButton("Levelbez. ä&ndern", $ciLeft + 360, $ciTop + 130, 190)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    GUICtrlSetOnEvent(-1, "ButChangeLevelClick")

    [/autoit] [autoit][/autoit] [autoit]

    $ButNewLevel = GUICtrlCreateButton("Neuer &Level", $ciLeft + 360, $ciTop + 160, 190)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    GUICtrlSetOnEvent(-1, "ButNewLevelClick")

    [/autoit] [autoit][/autoit] [autoit]

    $ButNewSheet = GUICtrlCreateButton("Neues &Blatt", $ciLeft + 360, $ciTop + 210, 190)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    GUICtrlSetOnEvent(-1, "ButNewSheetClick")

    [/autoit] [autoit][/autoit] [autoit]

    $ButSave = GUICtrlCreateButton("Blatt &speichern", $ciLeft + 360, $ciTop + 240, 190)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    GUICtrlSetOnEvent(-1, "ButSaveClick")
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit]

    $ButUndo = GUICtrlCreateButton("Änderungen &verwerfen", $ciLeft + 360, $ciTop + 270, 190)
    GUICtrlSetFont(-1, 12, 600, 0, "Arial")
    GUICtrlSetOnEvent(-1, "ButSaveClick")
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    #region -- Initialisierung
    $arLevels = IniReadSection($cstrIniFile, "Levels")
    If @error Then
    Dim $arLevels[2][2]
    Dim $arGames[2][2]

    $arLevels[0][0] = 1
    $arLevels[1][0] = "Stufe1"
    $arLevels[1][1] = "Level 1"
    GUICtrlSetData($CBLevels, "Level 1", "Level 1")

    $arGames[0][0] = 1
    $arGames[1][0] = "001"
    $arGames[1][1] = StringFormat("%081s", "0")
    GUICtrlSetData($CBGames, "001", "001")

    IniWriteSection($cstrIniFile,"Levels",$arLevels)
    IniWriteSection($cstrIniFile,"Stufe1",$arGames)

    GameChange()
    $bLevelsChanged = True
    $bSheetChanged = True
    $bSheetSaveOK = False
    Else

    [/autoit] [autoit][/autoit] [autoit]

    $strLevels = ""
    For $iIndex = 1 To $arLevels[0][0]
    $strLevels &= $arLevels[$iIndex][1] & "|"
    Next
    $strLevels = StringTrimRight($strLevels, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($CBLevels, $strLevels, StringLeft($strLevels, StringInStr($strLevels, "|") - 1))
    LevelChange()
    FieldChange()
    $bSheetChanged = False
    EndIf
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    If Not $bSheetChanged Then
    If BitAND(GUICtrlGetState($CBLevels), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($CBLevels, $GUI_ENABLE)
    If BitAND(GUICtrlGetState($CBGames), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($CBGames, $GUI_ENABLE)
    If BitAND(GUICtrlGetState($ButNewLevel), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($ButNewLevel, $GUI_ENABLE)
    If BitAND(GUICtrlGetState($ButNewSheet), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($ButNewSheet, $GUI_ENABLE)
    Else
    If BitAND(GUICtrlGetState($CBLevels), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($CBLevels, $GUI_DISABLE)
    If BitAND(GUICtrlGetState($CBGames), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($CBGames, $GUI_DISABLE)
    If BitAND(GUICtrlGetState($ButNewLevel), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($ButNewLevel, $GUI_DISABLE)
    If BitAND(GUICtrlGetState($ButNewSheet), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($ButNewSheet, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $bSheetChanged And $bSheetSaveOK Then
    If BitAND(GUICtrlGetState($ButSave), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($ButSave, $GUI_ENABLE)
    Else
    If BitAND(GUICtrlGetState($ButSave), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($ButSave, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func FormMainClose()
    Exit
    EndFunc ;==>FormMainClose
    Func FormMainMaximize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>FormMainMaximize
    Func FormMainMinimize()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>FormMainMinimize
    Func FormMainRestore()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>FormMainRestore

    [/autoit] [autoit][/autoit] [autoit]

    ; FieldChange -> eines der Inputfelder wurde geändert
    Func FieldChange()
    $iCounter = 0
    $arGames[$iGameIndex][1] = ""
    For $iZeile = 0 To 8
    For $iSpalte = 0 To 8
    $iWert = Int(GUICtrlRead($arSudokuFeld[$iZeile][$iSpalte]))
    If $iWert > 0 Then
    $iCounter += 1
    $arGames[$iGameIndex][1] &= String($iWert)
    Else
    $arGames[$iGameIndex][1] &= "0"
    EndIf
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $bSheetSaveOK = False
    If $iCounter > 21 Then $bSheetSaveOK = True

    [/autoit] [autoit][/autoit] [autoit]

    $bSheetChanged = True
    EndFunc ;==>FieldChange

    [/autoit] [autoit][/autoit] [autoit]

    ; LevelChange -> Schwierigkeitsstufe wurde geändert
    Func LevelChange()
    $strLevel = GUICtrlRead($CBLevels)
    For $iIndex = 1 To $arLevels[0][0]
    If $arLevels[$iIndex][1] == $strLevel Then ExitLoop
    Next
    $arGames = IniReadSection($cstrIniFile, $arLevels[$iIndex][0])

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then
    MsgBox(4096, "", "Fehler beim lesen der Ini-Datei!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Switch $arGames[0][0]
    Case 0
    MsgBox(4096, "", "Für diesen Level existieren keine Spiele")
    Return

    [/autoit] [autoit][/autoit] [autoit]

    Case 1
    GUICtrlSetData($CBGames, "|" & $arGames[1][0], $arGames[1][0])

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    $strGames = ""
    For $iIndex = 1 To $arGames[0][0]
    $strGames &= $arGames[$iIndex][0] & "|"
    Next
    $strGames = StringTrimRight($strGames, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($CBGames, "|" & $strGames, StringLeft($strGames, StringInStr($strGames, "|") - 1))
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    GameChange()
    EndFunc ;==>LevelChange

    [/autoit] [autoit][/autoit] [autoit]

    ; GameChange -> Neues Spiel wurde gewählt
    Func GameChange()
    $strGame = GUICtrlRead($CBGames)
    For $iIndex = 1 To $arGames[0][0]
    If $arGames[$iIndex][0] == $strGame Then ExitLoop
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $iZeile = 0 To 8
    For $iSpalte = 0 To 8
    $iWert = StringMid($arGames[$iIndex][1], $iZeile * 9 + $iSpalte + 1, 1)
    If $iWert <> 0 Then
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], $iWert)
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER))
    Else
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], "")
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER))
    EndIf
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $iGameIndex = $iIndex
    EndFunc ;==>GameChange

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Button "Levelbez. ändern" wurde betätigt
    Func ButChangeLevelClick()
    $StrOldName = GUICtrlRead($CBLevels)
    For $iIndex = 1 To $arLevels[0][0]
    If $arLevels[$iIndex][1] == $StrOldName Then ExitLoop
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $strNewName = InputBox("Levelbezeichnung ändern", "Bitte neue Levelbezeichnung eingeben!" & @CRLF & @CRLF & _
    "Die derzeitige Bezeichnung ist: " & $StrOldName)
    If $strNewName <> $StrOldName And StringLen($strNewName) Then
    $arLevels[$iIndex][1] = $strNewName
    $bLevelsChanged = True

    [/autoit] [autoit][/autoit] [autoit]

    $strLevels = ""
    For $iIndex = 1 To $arLevels[0][0]
    $strLevels &= $arLevels[$iIndex][1] & "|"
    Next
    $strLevels = StringTrimRight($strLevels, 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($CBLevels, $strLevels, $strNewName)
    EndIf
    EndFunc ;==>ButChangeLevelClick

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Button "Neuer Level" wurde betätigt
    Func ButNewLevelClick()
    $strNewName = InputBox("Level hinzufügen", "Bitte Bezeichnung für den neuen Level eingeben!")

    If StringLen($strNewName) Then
    ReDim $arLevels[$arLevels[0][0] + 2][2]
    $arLevels[0][0] += 1

    [/autoit] [autoit][/autoit] [autoit]

    $strLevels = ""
    For $iIndex = 1 To $arLevels[0][0] - 1
    $strLevels &= $arLevels[$iIndex][1] & "|"
    If Int(StringMid($arLevels[$iIndex][0],6)) >= Int($arLevels[$arLevels[0][0]][0]) Then
    $arLevels[$arLevels[0][0]][0] = Int(StringMid($arLevels[$iIndex][0],6)) + 1
    EndIf
    Next
    $arLevels[$arLevels[0][0]][0] = "Stufe" & $arLevels[$arLevels[0][0]][0]
    $arLevels[$arLevels[0][0]][1] = $strNewName
    $strLevels &= $strNewName

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($CBLevels, $strLevels, $strNewName)

    ReDim $arGames[2][2]

    $arGames[0][0] = 1
    $arGames[1][0] = "001"
    $arGames[1][1] = StringFormat("%081s", "0")
    GUICtrlSetData($CBGames, "001", "001")
    GameChange()
    $bLevelsChanged = True
    $bSheetChanged = True
    $bSheetSaveOK = False
    EndIf

    EndFunc ;==>ButNewLevelClick

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Button "Neues Blatt" wurde betätigt
    Func ButNewSheetClick()
    ReDim $arGames[$arGames[0][0] + 2][2]
    $arGames[0][0] += 1
    $arGames[$arGames[0][0]][1] = StringFormat("%081s", "0")

    [/autoit] [autoit][/autoit] [autoit]

    Switch $arGames[0][0]
    Case 0
    MsgBox(4096, "", "Für diesen Level existieren keine Spiele!")
    Return

    [/autoit] [autoit][/autoit] [autoit]

    Case 1
    GUICtrlSetData($CBGames, "|" & $arGames[1][0], $arGames[1][0])

    [/autoit] [autoit][/autoit] [autoit]

    Case Else
    $strGames = ""
    For $iIndex = 1 To $arGames[0][0] - 1
    $strGames &= $arGames[$iIndex][0] & "|"
    If Int($arGames[$iIndex][0]) >= Int($arGames[$arGames[0][0]][0]) Then
    $arGames[$arGames[0][0]][0] = StringFormat("%03i", Int($arGames[$iIndex][0]) + 1)
    EndIf
    Next
    $strGames &= $arGames[$arGames[0][0]][0]

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($CBGames, "|" & $strGames, $arGames[$arGames[0][0]][0])
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    GameChange()
    $bSheetSaveOK = False
    EndFunc ;==>ButNewSheetClick

    [/autoit] [autoit][/autoit] [autoit]

    ; Button "Blatt speichern" wurde betätigt
    Func ButSaveClick()
    If $bLevelsChanged Then
    IniWriteSection($cstrIniFile, "Levels", $arLevels)

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then
    MsgBox(4096, "", "Fehler beim lesen der Ini-Datei!")
    Exit
    EndIf
    $bLevelsChanged = False
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $strLevel = GUICtrlRead($CBLevels)

    [/autoit] [autoit][/autoit] [autoit]

    For $iIndex = 1 To $arLevels[0][0]
    If $arLevels[$iIndex][1] == $strLevel Then ExitLoop
    Next

    [/autoit] [autoit][/autoit] [autoit]

    IniWriteSection($cstrIniFile, $arLevels[$iIndex][0], $arGames)

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then
    MsgBox(4096, "", "Fehler beim lesen der Ini-Datei!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $bSheetChanged = False
    $bSheetSaveOK = False
    EndFunc ;==>ButSaveClick

    [/autoit]

    Edit: Dateianhang entfernt -> veraltet

  • Hallo Bernd.

    Erst einmal DANKE !!!

    Klar gibt es gute Levels mit weniger als 22 Ziffern. Die besten sind die, wo gerade mal 16 vorgegebene Ziffern sind, aber die zu lösen, da sollte man schon wissen, was es bedeutet, das auch mal um sechs Ecken denken muß.
    Für das letzte 16-ner Game habe ich fast eine Stunde benötigt. War echt hart. Die besten Spiele bekommt man auf der offiziellen Seite zu den Meisterschaften. Egal ob EM oder WM. Aber die sind dann immer nur 14 Tage nach der Veranstalltung online und immer unter anderen Internetadressen. Leider. Habe von 2005 und 2006 die gesamten EU Games. Die kann ich ja mal raussuchen und hier posten. Mal sehen ob jemand die gelößt bekommt LOL

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ich weis nich fileicht hap ich das auch falsch verstanden aber ich dachte
    wir wollten einen Level GENERATOR und keinen Editor
    Der rest also GUI drumrumbauen iss dann ja wol das einfachste.

  • Hallo alle zusammen.

    Stand bis jetzt ist eine einwandfrei nutzbare Version der Benutzeroberfläche (Spieloberfläche) und des LevelEditors, den ich heute testen werde.

    Ich freue mich, das jetzt das Projekt auch von den mit versucht wird zum Erfolg zu bringen, die sich daran bereits versucht haben und sehr gute Lsöungsansätze haben.

    Ich möchte das es als Gemeinschaftsprojekt angesehen wird und das wir dann zusammen vllt. ein super Game zur freien Verfügung stellen können. Bernd670 hat bereits eine super Sudoku-Oberfläche erstellt, die auch fehlerfrei arbeitet und da habe ich bereits 25 Spiele durchgetestet. Alle waren ohne Fehler. Ich glaube das Bernd670 es auf den Leib geschnitten ist, Aufgaben zu lösen, die einfach sonst kaum zu lösen sind. Peethebee kann froh sein, das er im Team ist und ich bin es auf jeden Fall.

    In diesem Sinne, laß uns zusammen arbeiten.

    Noch zur Information. In den nächsten Wochen wird es Tage geben, wo ich nicht antworten kann, da ich zum ersten Juli neue Arbeit suchen muß und somit unterwegs bin. Habe drei Termine bereits in Berlin und einen in Leer (Ostfriesland), werde aber da versuchen ein Internetcafe zu finden um so auf den LAufenden zu bleiben, sollte ich mal über Nacht nicht daheim sein.

    Liebe Grüße, Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Ich muss jetzt nur noch hinbekommen das der Cursor beim drücken der Tabulatortaste in der richtigen Reihenfolge durch das Sudokufeld springt! Oder ist das nur bei mir so?

    Ich verstehe noch nicht warum der Cursor rückwärts springt, normalerwese wird doch Taborder in der Reihenfolge festgelegt in der die Controls erstellt werden!?


    Alina, dann wünsche ich dir doch mal viel Erfolg bei der Arbeitssuche!

  • Hallo Bernd.

    Also den Tabulator kann man irgendwie einstellen. Da ich meine GUI's aber mit Koda mache, wo man die Reihenfolge beeinflussen kann, müßte ich es daheim mal raus suchen.

    Aber Bernd, ist eine super Leistung. WOW. Erstelle auch shcon ganz fleizig Levels, wobei die schweren Levels eher das Problem sind, denn ich darf ja nicht davon ausgehen, wie ich die schaffen würde, sondern ob andere die überhaupt schaffen würden.

    Habe vorhin mal eine E-Mail an die Veranstallter der Sudoku EM und eine an die Veranstallter der WM geschrieben. Mal sehen ob wir die Zahlen von den beiden letzten Jahren bekommen. Habe einfach in Deutsch geschrieben und dann dank Google übersetzt. Mal sehen was bei raus kommt.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hallo Alina,

    bei Koda wird dadurch aber nur die Reihenfolge geändert in der die Controls erzeugt werden, die stimmt bei mir ja!


    Es liegt scheinbar an der Zuweisung der ControlID an das 2-dimensionale Array, ich habe es mal testweise ohne Array gemacht und dann stimmt die Reihenfolge! :hammer: :hammer:

    Jetzt probier ich es noch mal mit einem 1-dimensionalen Array!

    Edit:

    So der Fehler liegt scheinbar an der Funktion GuiCtrlSetStyle, wenn man GuiCtrlSetStyle auf ein Array anwendet wird beim 1. Zugriff das Array umsortiert, danach nicht mehr. Ich habe aber eine Möglichkeit gefunden den Fehler zu umgehen, wenn man die Schleife rückwärts laufen lässt passiert ncihts!


    Edit: Dateianhang entfernt -> veraltet

  • Hallo Bernd.

    Welche Schleife hast Du rückwärts laufen lassen. Kannst du die hier mal online stellen? Gerade auch weil man ja aus dem Projekt auch lernen soll.
    So als <vorher> / <nachher>.

    Wäre Dir echt dankbar, denn ich bin dabei und versuche irgendwie das alles zu verstehen.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Klar!

    Vorher:

    Spoiler anzeigen
    [autoit]


    ; GameChange -> Neues Spiel wurde gewählt
    Func GameChange()
    $strGame = GUICtrlRead($CBGames)
    For $iIndex = 1 To $arGames[0][0]
    If $arGames[$iIndex][0] == $strGame Then ExitLoop
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $iZeile = 0 To 8
    For $iSpalte = 0 To 8
    $iWert = StringMid($arGames[$iIndex][1], $iZeile * 9 + $iSpalte + 1, 1)
    If $iWert <> 0 Then
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], $iWert)
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER, $ES_READONLY))
    Else
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], "")
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER))
    EndIf
    Next
    Next
    $begonnen = False
    EndFunc ;==>GameChange

    [/autoit]


    Nachher:

    Spoiler anzeigen
    [autoit]

    ; GameChange -> Neues Spiel wurde gewählt
    Func GameChange()
    $strGame = GUICtrlRead($CBGames)
    For $iIndex = 1 To $arGames[0][0]
    If $arGames[$iIndex][0] == $strGame Then ExitLoop
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $iZeile = 8 To 0 Step - 1 ; Änderung
    For $iSpalte = 8 To 0 Step - 1 ; Änderung
    $iWert = StringMid($arGames[$iIndex][1], $iZeile * 9 + $iSpalte + 1, 1)
    If $iWert <> 0 Then
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], $iWert)
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER, $ES_READONLY))
    Else
    GUICtrlSetData($arSudokuFeld[$iZeile][$iSpalte], "")
    GUICtrlSetStyle($arSudokuFeld[$iZeile][$iSpalte], BitOR($ES_CENTER, $ES_NUMBER))
    EndIf
    Next
    Next
    $begonnen = False
    EndFunc ;==>GameChange

    [/autoit]
  • Hallo.

    Also die ersten 200 Spiele habe ich fertig und getestet.
    Habe sie OpenOffice Kalkulieren lassen und getestet. Boh, war gestern und heute echt ein Zahlengewitter im Kopf.

    Jetzt noch in die INI eintragen. Dann haben wir schon mal eine gute Grundlage für das fertige Spiel.

    Also bei gut tausend Spielen sind das gut und gerne noch 2 Wochen bis alle erstellt und geprüft sind. Bedingung ist, das die Zeit mit macht und das andere Sachen, die ich zugesagt habe so verlaufen wie ich es gedacht habe.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • also an alle die jeztz mitmachen filleicht können wir uns ja mal im AutoIt.de-Chat treffen.
    sreibt ma rein wann ir zeit hapt und ann können wir da alles nötige besprechen.

    Edit: Also ich hap eigendlich jeden tag zeit außer das nächste lange wochenende.

    Einmal editiert, zuletzt von Dustin (11. Mai 2007 um 15:30)

  • Ich versteh das garnich...is das jetz ein Projekt, oder einfach jeder skriptet seinen teil und postet bzw nur Bernd skriptet^^

    Naja egal, ich hab mit dem anderen sachen genug stress....und...Alina, du hast jetz in den letzten Tagen 200 solcher Dinger getestet????? [Blockierte Grafik: http://forums.therandirhodesshow.com/style_emoticons/default/wtf.gif]


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Zitat

    Original von Waluev
    Ich versteh das garnich...is das jetz ein Projekt, oder einfach jeder skriptet seinen teil und postet bzw nur Bernd skriptet^^

    Naja egal, ich hab mit dem anderen sachen genug stress....und...Alina, du hast jetz in den letzten Tagen 200 solcher Dinger getestet????? [Blockierte Grafik: http://forums.therandirhodesshow.com/style_emoticons/default/wtf.gif]


    Waluev

    Hallo Waluev.

    Das Bernd jetzt shcon fast alles gescript hat ist super, aber wir sollten uns wirklich mal zusammen irgendwo treffen. Eigentlich brauchen wir ja nur noch den Leveleditor in das bestehende Script von Bernd mit einbauen. Eine Script, das die Levels selber erstellt ist glaube ich gar nicht so leicht, können wir dann aber gerne doch später auch mit einbauen.
    Treffen bei mir derzeitig am besten Sonntags und da egal wann. Einfach PN und ich bin da.

    200 Levels testen geht schnell und erstellen eigentlich auch. Ich nur sind das bis dato ja nur einfache. Also solche, die ich auch innerhalb von paar Minuten löse. Zeit brauchen später die ab "Mittel".

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Aso, jetz checke ich das, ich dachte ihr wollt die Sdokus auch auflösen lassen, naja....


    Da wünsche ich euch mal noch viel glück beim sudoken xD


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Hallo Walu-ev.

    sudoken? schachst Du denn auch? :rofl:

    KB Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich dachte das woord passt nach googeln, skypen auch ganz gut xD


    Naja, geschmackssache :D


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    So, ich habe jetzt noch ein paar korrekturen vorgenommen, ein paar Sicherheitsabfragen eingebaut, auf dem Spielfeld kann man jetzt mit den Cursortasten navigieren und eine Zeitanzeige die startet sobald die 1. Zahl eingegeben wurde.


    Edit: Dateianhang entfernt -> veraltet

  • also ich schlag mal vor das alle die jetzt mitmachen sich am sonntag um 14:00 im chat auf autoit.de treffen.

    wie gesagt das iss nur ein vorschlag. wenn einer nich kann soll er sich melden.