var mainWindow var sudoWindow var clickX = -1 var clickY = -1 var clickX_ = -1 var clickY_ = -1 var sudoX = -10 var sudoY = 0 var sudoW = 37 var sudoH = 25 var posX var posY var buttonList = [] var buttonX = 22 var buttonPos = [[0,3],[-7,-6],[0,-6],[7,-6],[-7,-1],[0,-1],[7,-1],[0,6]] var buttonLast = -1 var noteButton var noteTextPanel var sudoNum = [] var enAnim = [] var enLayer = [] var enButtonAnim = [] var enButtonLayer = [] var colorReadOnly = #2E2E2E var colorEdit = #FFFFFF var colorEnAnim = [#cyan,#yellow,#green,#blue,#red,#rainFF] var ifEvent = false var highLightNum = -1 var selectBox var vectory = 0 var vectoryTime = 0 func core() loopPrint() loopEvent() func loopEvent() ?key = primaryEnd ifEvent = true posX = (input.x - screen.w/2 + sudoW/2 - sudoX) posY = (input.y - screen.h/2 + sudoH/2 - sudoY) ?posX/6 >= 0 & posX/6 < 6 & posY/4 >= 0 & posY/4 < 6 & posX%6 ! 0 & posY%4 ! 0 clickX = posX/6 clickY = posY/4 ?ifReadOnly(sudoNum[clickX][clickY].color) resetClick() :?clickX_ >= 0 & clickY_ >= 0 buttonClick() : resetClick() //>`0,2,mouse:@input.x@,@input.y@ //>`0,3,pos:@posX@,@posY@ //>`0,4,click:@clickX@,@clickY@ func loopPrint() ?ifEvent ?clickX < 0 & clickY < 0 selectBox.x = -5 selectBox.y = -5 : selectBox.x = clickX*6+3 selectBox.y = clickY*4+2 ?vectory = 0 vectoryTime = totaltime :?vectory = -1 ?dt(vectoryTime) = 1 buttonList[buttonList.Count()-1].text = "Error!" buttonList[buttonList.Count()-1].bcolor = #FF0000 buttonList[buttonList.Count()-1].tcolor = #FF0000 :?dt(vectoryTime) > 60 buttonList[buttonList.Count()-1].text = "Verify" buttonList[buttonList.Count()-1].bcolor = #7F7F7F buttonList[buttonList.Count()-1].tcolor = #FFFFFF vectory = 0 :?vectory = 1 ?dt(vectoryTime) = 1 buttonList[buttonList.Count()-1].text = "Success!" buttonList[buttonList.Count()-1].bcolor = #00FF00 buttonList[buttonList.Count()-1].tcolor = #00FF00 :?dt(vectoryTime) > 180 buttonList[buttonList.Count()-1].text = "Verify" buttonList[buttonList.Count()-1].bcolor = #7F7F7F buttonList[buttonList.Count()-1].tcolor = #FFFFFF vectory = 0 func initUI() listClear() mainWindow = ui.AddPanel() mainWindow.visible = false mainWindow.clip = true mainWindow.x = 0 mainWindow.y = 0 mainWindow.anchor = center_center mainWindow.dock = center_center mainWindow.w = screen.w mainWindow.h = screen.h var customStyle = ui.AddStyle("╔═╗║ ║╚═╝") mainWindow.style = customStyle sudoWindowInit() buttonInit(buttonX + buttonPos[0][0],buttonPos[0][1],"Remove") buttonList[0].w = 21 buttonList[0].h = 3 for i = 1..6 buttonInit(buttonX + buttonPos[i][0],buttonPos[i][1],i) sudoEnchantAnimInit(mainWindow,enButtonAnim,enButtonLayer,buttonX + buttonPos[i][0],buttonPos[i][1]) enButtonLayer[i-1].color = colorReadOnly enButtonAnim[i-1].color = colorEnAnim[i-1] enButtonAnim[i-1].Play() enButtonAnim[i-1].dock = center_center buttonInit(buttonX + buttonPos[buttonPos.Count()-1][0],buttonPos[buttonPos.Count()-1][1],"Verify") buttonList[buttonList.Count()-1].w = 21 buttonList[buttonList.Count()-1].h = 3 buttonList[buttonList.Count()-1].SetDown(verifyPressed) for i = 0..5 var sudoNum_ = [] var enAnim_ = [] var enLayer_ = [] for j = 0..5 posX = (i*6+3) posY = (j*4+2) sudoNumInit(sudoNum_,posX,posY) sudoEnchantAnimInit(sudoWindow,enAnim_,enLayer_,posX,posY) sudoNum.Add(sudoNum_) enAnim.Add(enAnim_) enLayer.Add(enLayer_) noteInit() func sudoWindowInit() sudoWindow = ui.AddPanel() mainWindow.Add(sudoWindow) sudoWindow.clip = true sudoWindow.x = sudoX sudoWindow.y = sudoY sudoWindow.anchor = center_center sudoWindow.dock = center_center sudoWindow.w = sudoW sudoWindow.h = sudoH var sudoWindowText_ = ui.AddText() sudoWindow.Add(sudoWindowText_) sudoWindowText_.x = 0 sudoWindowText_.y = 0 sudoWindowText_.ay = center sudoWindowText_.dy = center sudoWindowText_.w = sudoW sudoWindowText_.h = sudoH sudoWindowText_.text = string.Format(sudoWindowText) sudoWindowText_.color = #999999 selectBox = ui.AddAnim(selectBoxText) sudoWindow.Add(selectBox) selectBox.duration = 30 selectBox.loop = true selectBox.color = #FF0000 selectBox.Play() selectBox.dock = top_left selectBox.w = 5 selectBox.h = 3 selectBox.x = -5 selectBox.y = -5 func sudoNumInit(sudoNum_,x_,y_) var sudoNumText_ = ui.AddText() sudoNumText_.x = x_ sudoNumText_.y = y_ sudoNumText_.w = 3 sudoNumText_.h = 1 sudoNumText_.align = center sudoNumText_.dock = top_left sudoWindow.Add(sudoNumText_) sudoNum_.Add(sudoNumText_) func sudoEnchantAnimInit(window,enAnim_,enLayer_,x_,y_) var enchantAnim_ = ui.AddAnim(sudoAnimVar.enchantAnimText) var edgeLayer_ = enchantAnim_.AddLayer(sudoAnimVar.enchantText) edgeLayer_.pivotX = 1 edgeLayer_.pivotY = 1 window.Add(enchantAnim_) enchantAnim_.duration = 138 enchantAnim_.loop = true enchantAnim_.dock = top_left enchantAnim_.w = 3 enchantAnim_.h = 1 enchantAnim_.x = x_ enchantAnim_.y = y_ enAnim_.Add(enchantAnim_) enLayer_.Add(edgeLayer_) func buttonInit(x_,y_,i_) var button_ = ui.AddButton() button_.SetDown(numPressed) button_.style = 4 button_.x = x_ button_.y = y_ button_.w = 7 button_.h = 5 button_.text = string.Format(i_+"") mainWindow.Add(button_) buttonList.Add(button_) func numPressed(btn) ?clickX >= 0 & clickX < 6 & clickY >= 0 & clickY < 6 ?string.Equals(btn.text,"Remove") sudoNum[clickX][clickY].text = string.Format("") enAnim[clickX][clickY].color = colorReadOnly enAnim[clickX][clickY].visible = false : sudoNum[clickX][clickY].text = string.Format(btn.text) enAnim[clickX][clickY].color = colorEnAnim[int.Parse(btn.text)-1] enAnim[clickX][clickY].visible = inherit enAnim[clickX][clickY].Play() clickX_ = clickX clickY_ = clickY func verifyPressed(btn) vectory = 0 var sudoArray = [] var sudoArray_ = [] for i = 0..5 for j = 0..5 ?string.Equals(sudoNum[i][j].text,"") sudoMat[j][i] = 0 vectory = -1 i = 9 j = 9 : sudoMat[j][i] = int.Parse(sudoNum[i][j].text) ?vectory >= 0 for i = 0..5 sudoArray.Clear() sudoArray_.Clear() for j = 0..5 sudoArray.Add(sudoMat[j][i]) sudoArray_.Add(sudoMat[i][j]) sudoArray.Sort() sudoArray_.Sort() for v = 0..5 ?sudoArray[v] ! v+1 | sudoArray_[v] ! v+1 vectory = -1 i = 9 v = 9 ?vectory >= 0 for i = 0..2 for j = 0..1 sudoArray.Clear() for i_ = 0..1 for j_ = 0..2 sudoArray.Add(sudoMat[2*i+i_][3*j+j_]) sudoArray.Sort() for v = 0..5 ?sudoArray[v] ! v+1 vectory = false i = 3 j = 3 v = 9 ?vectory >= 0 vectory = 1 : vectory = -1 func matInit(level_) var sudoStore = import Games/SudokuEnchant/SudokuStore var No_ = rng % (sudoStore.sudoMat[level_].Count()) var array_ = sudoStore.sudoMat[level_][No_] array2Mat(array_,sudoMat0) sudoMat = sudoMat0 var n_ = 0 for i = 0..5 for j = 0..5 n_ = sudoMat0[j][i] ?n_ > 0 & n_ <=6 sudoNum[i][j].text = string.Format(n_+"") sudoNum[i][j].color = colorReadOnly enLayer[i][j].color = colorReadOnly enAnim[i][j].color = colorEnAnim[n_-1] enAnim[i][j].visible = inherit enAnim[i][j].Play() : sudoNum[i][j].text = string.Format("") sudoNum[i][j].color = colorEdit enLayer[i][j].color = colorEdit enAnim[i][j].color = colorReadOnly enAnim[i][j].visible = false func array2Mat(array_,mat_) var sudoLength = string.Size(array_) ?sudoLength = 6*6 mat_.Clear() var temp = "" for i = 0 .. 5 temp = string.Sub(array_, i*6, 6) var row_ = [] for j = 0 .. 5 row_.Add(int.Parse(string.Sub(temp, j, 1))) mat_.Add(row_) func noteInit() noteButton = ui.AddButton() mainWindow.Add(noteButton) noteButton.SetDown(noteDown) noteButton.SetUp(noteUp) noteButton.style = 2 noteButton.dock = top_right noteButton.anchor = top_right noteButton.x = -1 noteButton.y = 1 noteButton.w = 5 noteButton.h = 3 noteButton.text = string.Format("?") noteTextPanel = ui.AddPanel() mainWindow.Add(noteButton) noteTextPanel.visible = false var customStyle = ui.AddStyle("O_O▒ ▒O‾O") noteTextPanel.style = customStyle noteTextPanel.dock = top_right noteTextPanel.anchor = top_right noteTextPanel.x = noteButton.x - noteButton.w noteTextPanel.w = 28 noteTextPanel.h = 5 var noteText = ui.AddText() noteTextPanel.Add(noteText) ?te.language = "ZH-CN" noteText.text = methodNote[0] :?te.language = "ZH-TW" noteText.text = methodNote[1] : noteText.text = methodNote[2] noteTextPanel.w = 45 noteTextPanel.h = 7 noteText.w = noteTextPanel.w - 4 noteText.h = noteTextPanel.h - 2 func noteDown(btn) noteTextPanel.visible = inherit func noteUp(btn) noteTextPanel.visible = false func listClear() buttonList.Clear() sudoNum.Clear() enAnim.Clear() enLayer.Clear() enButtonAnim.Clear() enButtonLayer.Clear() func resetClick() clickX = -1 clickY = -1 clickX_ = -1 clickY_ = -1 func buttonClick() clickX = clickX_ clickY = clickY_ clickX_ = -1 clickY_ = -1 func ifReadOnly(color_) for i = 0..1 ?color_ = colorReadOnly return true return false func dt(time_) return (totaltime - time_) var musicList = [rocky_plateau_0,rocky_plateau_1,rocky_plateau_2,rocky_plateau_3,rocky_plateau_4] var sudoWindowText = ascii ╔═════╤═════╤═════╦═════╤═════╤═════╗ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╟─────┼─────┼─────╫─────┼─────┼─────╢ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╠═════╪═════╪═════╬═════╪═════╪═════╣ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╟─────┼─────┼─────╫─────┼─────┼─────╢ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╠═════╪═════╪═════╬═════╪═════╪═════╣ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╟─────┼─────┼─────╫─────┼─────┼─────╢ ║ | | ║ | | ║ ║ | | ║ | | ║ ║ | | ║ | | ║ ╚═════╧═════╧═════╩═════╧═════╧═════╝ asciiend var selectBoxText = ascii ┌###┐ ##### └###┘ %% ##### ##### ##### asciiend var methodNote = [ "这看上去像是一个特殊的……数独?填满面板并保持每个行、列和大格中附魔的独特性。\n——研究员JianShang36", "這看上去像是一個特殊的……數獨?填滿面板並保持每個行、列和大格中附魔的獨特性。\n——研究員JianShang36", "This looks like a special... Sudoku? Fill the panel and maintain the uniqueness of the enchantment in each row, column, and grid. \n- Researcher JianShang36" ] var sudoMat0 = [ ^[3,6,4,1,5,2], ^[0,5,2,3,4,6], ^[2,1,5,4,6,3], ^[4,3,6,5,2,1], ^[5,2,1,6,3,4], ^[6,4,3,2,1,5], ] var sudoMat = sudoMat0 var sudoAnimVar = import Games/SudokuEnchant/SudokuEnchantAnim