vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Sudoku by Fricks
-- Start  : 28.04.06
-- Update : 20.05.06
SUDOKUPUZZLE_VERSION = "Version 1.0 by Fricks";

-- Variablen

Sudoku_Config={};                       
Sudoku_Config[1]={};  -- GTable
Sudoku_Config[2]={};  -- GTableR
Sudoku_Config[3]={};  -- GTableL
Sudoku_Config[4]={};  -- GTableC
Sudoku_Config[5]=3;   -- Level
Sudoku_Config[6]=0;   -- ListID
Sudoku_Config[7]=0;   -- Zahlen count
Sudoku_Config[8]=0;   -- Hilfe count
Sudoku_Config[9]={1};  -- GTableH

-- ButtonID > Gitter Koordinaten
local Sudoku_GTableID = {
        [11] = { x = 1, y = 1},
        [12] = { x = 2, y = 1},
        [13] = { x = 3, y = 1},
        [14] = { x = 4, y = 1},
        [15] = { x = 5, y = 1},
        [16] = { x = 6, y = 1},
        [17] = { x = 7, y = 1},
        [18] = { x = 8, y = 1},
        [19] = { x = 9, y = 1},
        [21] = { x = 1, y = 2},
        [22] = { x = 2, y = 2},
        [23] = { x = 3, y = 2},
        [24] = { x = 4, y = 2},
        [25] = { x = 5, y = 2},
        [26] = { x = 6, y = 2},
        [27] = { x = 7, y = 2},
        [28] = { x = 8, y = 2},
        [29] = { x = 9, y = 2},
        [31] = { x = 1, y = 3},
        [32] = { x = 2, y = 3},
        [33] = { x = 3, y = 3},
        [34] = { x = 4, y = 3},
        [35] = { x = 5, y = 3},
        [36] = { x = 6, y = 3},
        [37] = { x = 7, y = 3},
        [38] = { x = 8, y = 3},
        [39] = { x = 9, y = 3},
        [41] = { x = 1, y = 4},
        [42] = { x = 2, y = 4},
        [43] = { x = 3, y = 4},
        [44] = { x = 4, y = 4},
        [45] = { x = 5, y = 4},
        [46] = { x = 6, y = 4},
        [47] = { x = 7, y = 4},
        [48] = { x = 8, y = 4},
        [49] = { x = 9, y = 4},
        [51] = { x = 1, y = 5},
        [52] = { x = 2, y = 5},
        [53] = { x = 3, y = 5},
        [54] = { x = 4, y = 5},
        [55] = { x = 5, y = 5},
        [56] = { x = 6, y = 5},
        [57] = { x = 7, y = 5},
        [58] = { x = 8, y = 5},
        [59] = { x = 9, y = 5},
        [61] = { x = 1, y = 6},
        [62] = { x = 2, y = 6},
        [63] = { x = 3, y = 6},
        [64] = { x = 4, y = 6},
        [65] = { x = 5, y = 6},
        [66] = { x = 6, y = 6},
        [67] = { x = 7, y = 6},
        [68] = { x = 8, y = 6},
        [69] = { x = 9, y = 6},
        [71] = { x = 1, y = 7},
        [72] = { x = 2, y = 7},
        [73] = { x = 3, y = 7},
        [74] = { x = 4, y = 7},
        [75] = { x = 5, y = 7},
        [76] = { x = 6, y = 7},
        [77] = { x = 7, y = 7},
        [78] = { x = 8, y = 7},
        [79] = { x = 9, y = 7},
        [81] = { x = 1, y = 8},
        [82] = { x = 2, y = 8},
        [83] = { x = 3, y = 8},
        [84] = { x = 4, y = 8},
        [85] = { x = 5, y = 8},
        [86] = { x = 6, y = 8},
        [87] = { x = 7, y = 8},
        [88] = { x = 8, y = 8},
        [89] = { x = 9, y = 8},
        [91] = { x = 1, y = 9},
        [92] = { x = 2, y = 9},
        [93] = { x = 3, y = 9},
        [94] = { x = 4, y = 9},
        [95] = { x = 5, y = 9},
        [96] = { x = 6, y = 9},
        [97] = { x = 7, y = 9},
        [98] = { x = 8, y = 9},
        [99] = { x = 9, y = 9},
};

-- Aktuelle Zahlenanordnung
local Sudoku_GTable = {
        [1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [2] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [3] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [4] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [5] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [6] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [7] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [8] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [9] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
};

-- Zahlenanordnung zu Beginn
local Sudoku_GTableR = {
        [1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [2] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [3] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [4] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [5] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [6] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [7] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [8] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [9] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
};

-- Zahlenanordnung Lösung
local Sudoku_GTableL = {
        [1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [2] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [3] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [4] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [5] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [6] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [7] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [8] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [9] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
};

-- Ziffern die mit Hilfe gesetzt wurden
local Sudoku_GTableH = {
        [1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [2] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [3] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [4] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [5] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [6] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [7] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [8] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [9] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
};

-- Hintergrundfarbe bestimmen
local Sudoku_GTableC = {
        [1] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [2] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [3] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [4] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [5] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [6] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [7] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [8] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
        [9] = { [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0, [8] = 0, [9] = 0 },
};

-- Farben von Text und Hintergrund, Rahmen 
local Sudoku_Color = {
        ["blau"] = { ["r"] = 0, ["g"] = 0, ["b"] = 0.6 },
        ["gruen"] = { ["r"] = 0, ["g"] = 0.6, ["b"] = 0 },
        ["rot"] = { ["r"] = 0.6, ["g"] = 0, ["b"] = 0 },
        ["schwarz"] = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3 },
        ["textweiss"] = { ["r"] = 1, ["g"] = 1, ["b"] = 1 },
        ["textgelb"] = { ["r"] = 1, ["g"] = 1, ["b"] = 0 },
        ["textlila"] = { ["r"] = 1, ["g"] = 0, ["b"] = 1 },
        ["textgruen"] = { ["r"] = 0, ["g"] = 1, ["b"] = 0 },
};

local auswahl=0; -- Auswahl der Zahl 1-9, 0 , ?
local level=3; -- Level : 3=Leicht, 2=Mittel, 1=Schwer
local level2=3;
local listid=0;
local listid1=0;
local listid2=0;
local listid3=0;
local zahlencount=0;
local hilfecount=0;
local sudoplay=0; -- 0 = nicht anklickbar, 1 = anklickbar

-- Functions

function Sudoku_OnLoad()
        this:RegisterEvent("VARIABLES_LOADED"); 
        tinsert(UISpecialFrames, "Sudoku_MainFrame");
        UIPanelWindows["Sudoku_MainFrame"] =            nil;
        Sudoku_MainFrame:RegisterForDrag("LeftButton"); 

  SLASH_SUDOKU_FRAME1 = SUDOKU_FRAME_SLASH;
  SlashCmdList["SUDOKU_FRAME"] = function(msg)
    Sudoku_SlashCommand(msg);
  end
         
        if( DEFAULT_CHAT_FRAME ) then
                DEFAULT_CHAT_FRAME:AddMessage(SUDOKU_ONLOAD_MESSAGE, 1, 1, 0);
        end
        
Sudoku_ViewGameButton:Disable();

Sudoku_Auswahl1Text:SetText("1");
Sudoku_Auswahl2Text:SetText("2");
Sudoku_Auswahl3Text:SetText("3");
Sudoku_Auswahl4Text:SetText("4");
Sudoku_Auswahl5Text:SetText("5");
Sudoku_Auswahl6Text:SetText("6");
Sudoku_Auswahl7Text:SetText("7");
Sudoku_Auswahl8Text:SetText("8");
Sudoku_Auswahl9Text:SetText("9");
Sudoku_Auswahl10Text:SetText("");
Sudoku_Auswahl11Text:SetText("?");

Sudoku_LevelAuswahl3Text:SetText(SUDOKU_LEVEL_EASY);
Sudoku_LevelAuswahl2Text:SetText(SUDOKU_LEVEL_MEDIUM);
Sudoku_LevelAuswahl1Text:SetText(SUDOKU_LEVEL_HARD);

Sudoku_LevelAuswahl_OnClick("LeftButton",3);

Sudoku_Count1Text:SetText("ID #0");
Sudoku_Count2Text:SetText(SUDOKU_EMPTYCELLS..zahlencount);
Sudoku_Count3Text:SetText("? : 0");

--Sudoku_MainFrameVersionText:SetTextColor(0.7,0,0,1);

end

function Sudoku_OnEvent()
        if (event == "VARIABLES_LOADED") then
                Sudoku_Load();                  
        end
end

function Sudoku_Load()
        if (getn(Sudoku_Config[1])>0) then
                Sudoku_GTable=Sudoku_Config[1];
                Sudoku_GTableR=Sudoku_Config[2];
                Sudoku_GTableL=Sudoku_Config[3];
                Sudoku_GTableC=Sudoku_Config[4];
                level=Sudoku_Config[5];
                listid=Sudoku_Config[6];
                hilfecount=Sudoku_Config[8];
                
                if (getn(Sudoku_Config[9])>1) then
                        Sudoku_GTableH=Sudoku_Config[9];
                end

                if (level==1) then
                        listid1=listid;
                elseif (level==2) then
                        listid2=listid;
                elseif (level==3) then
                        listid3=listid;
                end

                Sudoku_Count1Text:SetText("ID #"..listid);
                Sudoku_Count3Text:SetText("? : "..hilfecount);
                Sudoku_LevelAuswahl_OnClick("LeftButton",level);
                Sudoku_ViewGameButton:Enable();
                sudoplay=1;
        end
        Sudoku_ErstelleGitter();
        Sudoku_GitterFarbe();
end

function Sudoku_SlashCommand(msg)
    Sudoku_Toggle();
end

function Sudoku_Toggle()
  if(Sudoku_MainFrame:IsVisible()) then
    HideUIPanel(Sudoku_MainFrame);
  else
                ShowUIPanel(Sudoku_MainFrame);
  end
end 

function Sudoku_Gitter_OnClick(button,gitterid)
  if (sudoplay==1) then
        local gx=Sudoku_GTableID[gitterid]["x"];
        local gy=Sudoku_GTableID[gitterid]["y"];
        if ((button == "LeftButton" or button == "RightButton") and Sudoku_GTableR[gy][gx]==0) then
                local GitterText = getglobal("Sudoku_Gitter"..gitterid.."Text");
                if (auswahl>0 and auswahl<10 and Sudoku_GTable[gy][gx]~=auswahl and Sudoku_GTableH[gy][gx]==0) then                             
                        Sudoku_GTable[gy][gx]=auswahl;
                        GitterText:SetText(auswahl);
                elseif (auswahl==10 and Sudoku_GTableH[gy][gx]==0) then
                        Sudoku_GTable[gy][gx]=0;
                        GitterText:SetText("");
                elseif (auswahl==11 and Sudoku_GTableH[gy][gx]==0) then
                        Sudoku_GTableH[gy][gx]=1;
                        Sudoku_GTable[gy][gx]=Sudoku_GTableL[gy][gx];
                        GitterText:SetText(Sudoku_GTableL[gy][gx]);
                        GitterText:SetTextColor(Sudoku_Color["textgruen"]["r"],Sudoku_Color["textgruen"]["g"],Sudoku_Color["textgruen"]["b"]);          
                        Sudoku_Config[9]=Sudoku_GTableH;
                        hilfecount=Sudoku_GetHelp();
                        Sudoku_Count3Text:SetText("? : "..hilfecount);
                end             

                zahlencount=Sudoku_GetEmpty();
                Sudoku_Count2Text:SetText(SUDOKU_EMPTYCELLS..zahlencount);

                Sudoku_Config[1]=Sudoku_GTable;
                Sudoku_Check();
                Sudoku_Config[4]=Sudoku_GTableC;

                Sudoku_Config[7]=zahlencount;
                Sudoku_Config[8]=hilfecount;
                        
                        Sudoku_CheckSuccess();
                
        end
  end
end

function Sudoku_Auswahl_OnClick(button,auswahlid)
        if( (button == "LeftButton" or button == "RightButton") and sudoplay==1) then
                auswahl=auswahlid;
                local i=0;
                for i=1,11 do
                        local Gitter = getglobal("Sudoku_Auswahl"..i.."Texture");
                        local Gitter2 = getglobal("Sudoku_Auswahl"..i.."Texture2");
                        if (i==auswahlid) then
                                Gitter:Hide();
                                Gitter2:Show();
                        else
                                Gitter2:Hide();
                                Gitter:Show();
                        end                                             
                end
        end
end

function Sudoku_LevelAuswahl_OnClick(button,levelid)
        if( button == "LeftButton" or button == "RightButton" ) then
                level2=levelid;
                local i=0;
                for i=1,3 do
                        local Gitter = getglobal("Sudoku_LevelAuswahl"..i.."Texture");
                        local Gitter2 = getglobal("Sudoku_LevelAuswahl"..i.."Texture2");
                        if (i==levelid) then
                                Gitter:Hide();
                                Gitter2:Show();
                        else
                                Gitter2:Hide();
                                Gitter:Show();
                        end
                end
                if (level2==1) then
                        Sudoku_Count1Text:SetText("ID #"..listid1);
                elseif (level2==2) then
                        Sudoku_Count1Text:SetText("ID #"..listid2);
                elseif (level2==3) then
                        Sudoku_Count1Text:SetText("ID #"..listid3);
                end
        end
end

function Sudoku_LevelID_OnClick(button)
        if( button == "LeftButton") then
                if (level2==1) then
                        listid1=math.random(getn(Sudoku_List1A));
                        listid=listid1;
                elseif (level2==2) then
                        listid2=math.random(getn(Sudoku_List2A));
                        listid=listid2;
                elseif (level2==3) then
                        listid3=math.random(getn(Sudoku_List3A));
                        listid=listid3;
                end
                Sudoku_Count1Text:SetText("ID #"..listid);
        end
        if( button == "RightButton") then
                Sudoku_Count1:Hide();
                Sudoku_EditID:SetText("");
                Sudoku_EditID:Show();
        end     
end

function Sudoku_EditListID(lista)
        if (lista>"") then
                local list=tonumber(lista);
                if (level2==1) then
                        if (list>getn(Sudoku_List1A)) then
                                list=getn(Sudoku_List1A);                       
                        elseif (list<1) then
                                list=1;
                        end
                        listid1=list;
                elseif (level2==2) then
                        if (list>getn(Sudoku_List2A)) then
                                list=getn(Sudoku_List2A);                       
                        elseif (list<1) then
                                list=1;
                        end
                        listid2=list;
                elseif (level2==3) then
                        if (list>getn(Sudoku_List3A)) then
                                list=getn(Sudoku_List3A);                       
                        elseif (list<1) then
                                list=1;
                        end
                        listid3=list;
                end
                listid=list;
                Sudoku_Count1Text:SetText("ID #"..listid);
        end
end

function Sudoku_GetEmpty()
                        local x=0;
                        local y=0;
                        local empty=0;
                        for y=1,9 do
                                for x=1,9 do
                                        if (Sudoku_GTable[y][x]==0) then
                                                empty=empty+1;
                                        end
                                end
                        end
        return empty; 
end

function Sudoku_GetHelp()
                        local x=0;
                        local y=0;
                        local ret=0;
                        for y=1,9 do
                                for x=1,9 do
                                        if (Sudoku_GTableH[y][x]==1) then
                                                ret=ret+1;
                                        end
                                end
                        end
        return ret; 
end

function Sudoku_CheckSuccess()

                        local x=0;
                        local y=0;
                        local success=0;
                        for y=1,9 do
                                for x=1,9 do
                                        if (Sudoku_GTable[y][x]~=Sudoku_GTableL[y][x]) then
                                                success=1;
                                        end
                                end
                        end             
                if (success==0) then
                                sudoplay=1;
                                Sudoku_Auswahl_OnClick("LeftButton",0);
                                Sudoku_ViewGameButton:Disable();
                                sudoplay=0;

                                Sudoku_Config[1]={};
                                Sudoku_Config[2]={};
                                Sudoku_Config[3]={};
                                Sudoku_Config[4]={};
                                Sudoku_Config[9]={};
                                
                                Sudoku_SuccessFarbe();
                        end

end

function Sudoku_NewGame()

        local x=1;
        local y=1;
        local sR="";
        local sL="";
        local c=0;
        local r=0;
        local puzzleL="";
        local puzzleR="";

        level=level2;
        Sudoku_Config[5]=level;
                
        if (level==1) then
                if( listid1 == 0) then
                        Sudoku_LevelID_OnClick("LeftButton")
                end
                puzzleL=Sudoku_List1A[listid1]; 
                puzzleR=Sudoku_List1B[listid1];
                Sudoku_Config[6]=listid1;
        elseif (level==2) then
                if( listid2 == 0) then
                        Sudoku_LevelID_OnClick("LeftButton")
                end
                puzzleL=Sudoku_List2A[listid2]; 
                puzzleR=Sudoku_List2B[listid2];
                Sudoku_Config[6]=listid2;
        elseif (level==3) then
                if( listid3 == 0) then
                        Sudoku_LevelID_OnClick("LeftButton")
                end
                puzzleL=Sudoku_List3A[listid3]; 
                puzzleR=Sudoku_List3B[listid3];
                Sudoku_Config[6]=listid3;
        end

        for y = 1, 9 do
                for x = 1, 9 do
                        c=c+1;
                        sL=strsub(puzzleL,c,c);
                        sR=strsub(puzzleR,c,c);
                        Sudoku_GTableL[y][x] = tonumber(sL);
                        Sudoku_GTableC[y][x] = 0;
                        Sudoku_GTableH[y][x] = 0;
                        if (sR==".") then
                                Sudoku_GTable[y][x] = 0;
                                Sudoku_GTableR[y][x] = 0;
                        else
                                Sudoku_GTable[y][x] = tonumber(sR);
                                Sudoku_GTableR[y][x] = tonumber(sR);
                        end
                end
        end

        Sudoku_Config[1]=Sudoku_GTable;
        Sudoku_Config[2]=Sudoku_GTableR;
        Sudoku_Config[3]=Sudoku_GTableL;
        Sudoku_Config[4]=Sudoku_GTableC;
        Sudoku_Config[9]=Sudoku_GTableH;        

        hilfecount=0;
        Sudoku_Config[8]=hilfecount;
        Sudoku_Count3Text:SetText("? : "..hilfecount);

        Sudoku_ErstelleGitter();
        Sudoku_GitterFarbe();
        
        sudoplay=1;
        Sudoku_Auswahl_OnClick("LeftButton",0);
        Sudoku_ViewGameButton:Enable();
end

function Sudoku_ErstelleGitter()
        zahlencount=0;
        for y = 1, 9 do
                for x = 1, 9 do
                        local GitterText = getglobal("Sudoku_Gitter"..y..x.."Text");
                        if (Sudoku_GTableR[y][x]==0 and Sudoku_GTableH[y][x]==0) then
                                GitterText:SetTextColor(Sudoku_Color["textweiss"]["r"],Sudoku_Color["textweiss"]["g"],Sudoku_Color["textweiss"]["b"]);
                        elseif (Sudoku_GTableR[y][x]==0 and Sudoku_GTableH[y][x]==1) then
                                GitterText:SetTextColor(Sudoku_Color["textgruen"]["r"],Sudoku_Color["textgruen"]["g"],Sudoku_Color["textgruen"]["b"]);
                        else
                                GitterText:SetTextColor(Sudoku_Color["textgelb"]["r"],Sudoku_Color["textgelb"]["g"],Sudoku_Color["textgelb"]["b"]);
                        end
                        if (Sudoku_GTable[y][x]==0) then
                                GitterText:SetText("");
                                zahlencount=zahlencount+1;
                        else
                                GitterText:SetText(Sudoku_GTable[y][x]);                        
                        end
                end
        end
        Sudoku_Config[7]=zahlencount;
        Sudoku_Count2Text:SetText(SUDOKU_EMPTYCELLS..zahlencount);
end

function Sudoku_SuccessFarbe()
        for y = 1, 9 do
                for x = 1, 9 do
                        local GitterText = getglobal("Sudoku_Gitter"..y..x.."Text");
                        GitterText:SetTextColor(Sudoku_Color["textgelb"]["r"],Sudoku_Color["textgelb"]["g"],Sudoku_Color["textgelb"]["b"]);
                end
        end
end

function Sudoku_Check()
        local x=1;
        local y=1;
        for y=1,9 do
                for x=1,9 do
                        Sudoku_GTableC[y][x]=0;
                end
        end
        for y=1,9 do
                for x=1,9 do
                        Sudoku_CheckZahl(x,y)
                end
        end
        Sudoku_GitterFarbe();
end

function Sudoku_CheckZahl(x1,y1)

        local x=1;
        local y=1;
        local z=Sudoku_GTable[y1][x1];
        
        for x = 1,9 do
                if (Sudoku_GTable[y1][x]==z and z>0 and x~=x1) then
                        Sudoku_GTableC[y1][x]=1;
                        Sudoku_GTableC[y1][x1]=1;
                end
        end
        for y = 1,9 do
                if (Sudoku_GTable[y][x1]==z and z>0 and y~=y1) then
                        Sudoku_GTableC[y][x1]=1;
                        Sudoku_GTableC[y1][x1]=1;
                end
        end     

        if ((x1==1 or x1==2 or x1==3) and (y1==1 or y1==2 or y1==3)) then
                for x = 1,3 do
                        for y=1,3 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end
        elseif ((x1==4 or x1==5 or x1==6) and (y1==1 or y1==2 or y1==3)) then
                for x = 4,6 do
                        for y=1,3 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end
        elseif ((x1==7 or x1==8 or x1==9) and (y1==1 or y1==2 or y1==3)) then
                for x = 7,9 do
                        for y=1,3 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==1 or x1==2 or x1==3) and (y1==4 or y1==5 or y1==6)) then
                for x = 1,3 do
                        for y=4,6 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==4 or x1==5 or x1==6) and (y1==4 or y1==5 or y1==6)) then
                for x = 4,6 do
                        for y=4,6 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==7 or x1==8 or x1==9) and (y1==4 or y1==5 or y1==6)) then
                for x = 7,9 do
                        for y=4,6 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==1 or x1==2 or x1==3) and (y1==7 or y1==8 or y1==9)) then
                for x = 1,3 do
                        for y=7,9 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==4 or x1==5 or x1==6) and (y1==7 or y1==8 or y1==9)) then
                for x = 4,6 do
                        for y=7,9 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        elseif ((x1==7 or x1==8 or x1==9) and (y1==7 or y1==8 or y1==9)) then
                for x = 7,9 do
                        for y=7,9 do
                                if (Sudoku_GTable[y][x]==z and z>0 and x~=x1 and y~=y1) then
                                        Sudoku_GTableC[y][x]=1;
                                        Sudoku_GTableC[y1][x1]=1;
                                end                             
                        end
                end     
        end
end

function Sudoku_GitterFarbe()
        local x=1;
        local y=1;
        for y=1,9 do
                for x=1,9 do
                        local Gitter = getglobal("Sudoku_Gitter"..y..x.."Texture");
                        local Gitter2 = getglobal("Sudoku_Gitter"..y..x.."Texture2");
                        if (Sudoku_GTableC[y][x]==1) then
                                Gitter:Hide();
                                Gitter2:Show();
                        else
                                Gitter2:Hide();
                                Gitter:Show();
                        end
                                --DEFAULT_CHAT_FRAME:AddMessage(Gitter:GetTexture(), 1, 1, 0); 
                end
        end
end

function Sudoku_ZeigeLoesung()
        local x=1;
        local y=1;      
        for y = 1, 9 do
                for x = 1, 9 do
                        local Gitter = getglobal("Sudoku_Gitter"..y..x.."Text");
                        local GitterT1 = getglobal("Sudoku_Gitter"..y..x.."Texture");
                        local GitterT2 = getglobal("Sudoku_Gitter"..y..x.."Texture2");
                        Gitter:SetTextColor(Sudoku_Color["textgelb"]["r"],Sudoku_Color["textgelb"]["g"],Sudoku_Color["textgelb"]["b"]);
                        Gitter:SetText(Sudoku_GTableL[y][x]);                           
                        GitterT2:Hide();
                        GitterT1:Show();
                end     
        end
        
        sudoplay=1;
        Sudoku_Auswahl_OnClick("LeftButton",0);
        Sudoku_ViewGameButton:Disable();
        sudoplay=0;
        
  zahlencount=0;
  Sudoku_Count2Text:SetText(SUDOKU_EMPTYCELLS..zahlencount);
  Sudoku_Config[7]=zahlencount;
        hilfecount=0;
        Sudoku_Config[8]=hilfecount;
        Sudoku_Count3Text:SetText("? : "..hilfecount);
        
        Sudoku_Config[1]={};
        Sudoku_Config[2]={};
        Sudoku_Config[3]={};
        Sudoku_Config[4]={};
        Sudoku_Config[9]={};
end 

Generated by GNU Enscript 1.6.5.90.