Hallo,
ich möchte gerne für einen Sudoko Löser eine Oberfläche gestalten und alle Zahlen in einem Array [9][9] lagern, dass meiner Anzeige entspricht.
Mein Test-Programm sieht wie folgt aus:
Spoiler anzeigen
AutoIt
;Hier stehen Konstanten die verwendet werden damit die Bedienoberfläche (GUI) Funktioniert und angezeigt werden kann
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### Hier wird die GUI erstellt
$Form1 = GUICreate("Sudoku Test", 269, 307, 605, 320)
$Input0_0 = GUICtrlCreateInput("", 60, 40, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input0_1 = GUICtrlCreateInput("", 110, 40, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input0_2 = GUICtrlCreateInput("", 160, 40, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input1_0 = GUICtrlCreateInput("", 60, 90, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input1_1 = GUICtrlCreateInput("", 110, 90, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input1_2 = GUICtrlCreateInput("", 160, 90, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input2_0 = GUICtrlCreateInput("", 60, 140, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input2_1 = GUICtrlCreateInput("", 110, 140, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Input2_2 = GUICtrlCreateInput("", 160, 140, 50, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetFont(-1, 30, 400, 0, "Arial Narrow")
$Button1 = GUICtrlCreateButton("Füllen", 90, 220, 91, 31)
GUICtrlSetState(-1,$GUI_FOCUS)
GUISetState(@SW_SHOW)
#EndRegion ### Hier ist es zuende
Global $ZahlenArray[3][3] = [[1,2,3],[4,5,6],[7,8,9]] ;Hier stehenh meine Zaheln, die ich in die Anzeige Einfügen möchte
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;Wenn das Rote X gedrückt wird, wird das Programm beendet
Exit
Case $Button1 ;Wenn der Füllen Button gedrückt wird, wird die Funktion ausgeführt
_ZahlenFuellen()
EndSwitch
WEnd
Func _ZahlenFuellen() ; Wenn diese Funktion ausgeführt wird, dann wird die Anzeige mit dem Array geladen - Muss nur einmal geschreiben werden und immer wieder verwendet werden
GUICtrlSetData($Input0_0, $ZahlenArray[0][0])
GUICtrlSetData($Input0_1, $ZahlenArray[0][1])
GUICtrlSetData($Input0_2, $ZahlenArray[0][2])
GUICtrlSetData($Input1_0, $ZahlenArray[1][0])
GUICtrlSetData($Input1_1, $ZahlenArray[1][1])
GUICtrlSetData($Input1_2, $ZahlenArray[1][2])
GUICtrlSetData($Input2_0, $ZahlenArray[2][0])
GUICtrlSetData($Input2_1, $ZahlenArray[2][1])
GUICtrlSetData($Input2_2, $ZahlenArray[2][2])
EndFunc
Alles anzeigen
Kann ich dass Array einfacher in meine Bedienelemente laden? Ich habe es mit zwei ineinander verschachtelten Schleifen für Zeile und Spalte versucht, aber so kann ich die Inputs nicht ansprechen.
Im Prinzip, funktioniert dass ja was ich möchte, aber evt. kann mir jemand zeigen wie es eleganter geht
Vielen Dank