We left off in the middle of a lengthy script which is run when a new game is started. You can review that script here Programming in Alpha Software Lesson 3. After the randomization runs we then save the solution to our currentpuzzlesolution table. My intent is to use the solution as a move checker similar to the move checker I used in our chess program. Currently that routine is not complete. I will review the code and process once it is done. Next we post the scrambled puzzle to our Sudokupuzzlesolver table and use an if statement for each field to determine if the cell contains a clue or not. If so the clue value is posted if not, we blank the field in the transaction table. Once the script is run the game board looks like this
Each field on the board is blank except for the random clues. The way the Sudoku game works is you must arrange the number without moving the clue fields. In fact, difficulty is determined by the number and location of clues. To insure the clues cannot be moved or changed we next run the Lock Clues button. The OnPush event looks like this.
script_play("Random1")
ui_yield()
xbasic_wait_for_idle()
script_play("Random2")
ui_yield()
xbasic_wait_for_idle()
tbl = table.open("sudokupuzzlesolver")
nbrtrys = 1
if tbl.b1s1v > 0 Then
sk1 = "T"
else
sk1 = "F"
end if
sv2:
if tbl.b1s2v > 0 Then
sk2 = "T"
else
sk2 = "F"
end if
if tbl.b1s3v > 0 Then
sk3 = "T"
else
sk3 = "F"
end if
if tbl.b1s4v > 0 Then
sk4 = "T"
else
sk4 = "F"
end if
if tbl.b1s5v > 0 Then
sk5 = "T"
else
sk5 = "F"
end if
if tbl.b1s6v > 0 Then
sk6 = "T"
else
sk6 = "F"
end if
if tbl.b1s7v > 0 Then
sk7 = "T"
else
sk7 = "F"
end if
if tbl.b1s8v > 0 Then
sk8 = "T"
else
sk8 = "F"
end if
if tbl.b1s9v > 0 Then
sk9 = "T"
else
sk9 = "F"
end if
if tbl.b2s1v > 0 Then
sk10 = "T"
else
sk10 = "F"
end if
if tbl.b2s2v > 0 Then
sk11 = "T"
else
sk11 = "F"
end if
if tbl.b2s3v > 0 Then
sk12 = "T"
else
sk12 = "F"
end if
if tbl.b2s4v > 0 Then
sk13 = "T"
else
sk13 = "F"
end if
if tbl.b2s5v > 0 Then
sk14 = "T"
else
sk14 = "F"
end if
if tbl.b2s6v > 0 Then
sk15 = "T"
else
sk15 = "F"
end if
if tbl.b2s7v > 0 Then
sk16 = "T"
else
sk16 = "F"
end if
if tbl.b2s8v > 0 Then
sk17 = "T"
else
sk17 = "F"
end if
if tbl.b2s9v > 0 Then
sk18 = "T"
else
sk18 = "F"
end if
if tbl.b3s1v > 0 Then
sk19 = "T"
else
sk19 = "F"
end if
if tbl.b3s2v > 0 Then
sk20 = "T"
else
sk20 = "F"
end if
if tbl.b3s3v > 0 Then
sk21 = "T"
else
sk21 = "F"
end if
if tbl.b3s4v > 0 Then
sk22 = "T"
else
sk22 = "F"
end if
if tbl.b3s5v > 0 Then
sk23 = "T"
else
sk23 = "F"
end if
if tbl.b3s6v > 0 Then
sk24 = "T"
else
sk24 = "F"
end if
if tbl.b3s7v > 0 Then
sk25 = "T"
else
sk25 = "F"
end if
if tbl.b3s8v > 0 Then
sk26 = "T"
else
sk26 = "F"
end if
if tbl.b3s9v > 0 Then
sk27 = "T"
else
sk27 = "F"
end if
if tbl.b4s1v > 0 Then
sk28 = "T"
else
sk28 = "F"
end if
if tbl.b4s2v > 0 Then
sk29 = "T"
else
sk29 = "F"
end if
if tbl.b4s3v > 0 Then
sk30 = "T"
else
sk30 = "F"
end if
if tbl.b4s4v > 0 Then
sk31 = "T"
else
sk31 = "F"
end if
if tbl.b4s5v > 0 Then
sk32 = "T"
else
sk32 = "F"
end if
if tbl.b4s6v > 0 Then
sk33 = "T"
else
sk33 = "F"
end if
if tbl.b4s7v > 0 Then
sk34 = "T"
else
sk34 = "F"
end if
if tbl.b4s8v > 0 Then
sk35 = "T"
else
sk35 = "F"
end if
if tbl.b4s9v > 0 Then
sk36 = "T"
else
sk36 = "F"
end if
if tbl.b5s1v > 0 Then
sk37 = "T"
else
sk37 = "F"
end if
if tbl.b5s2v > 0 Then
sk38 = "T"
else
sk38 = "F"
end if
if tbl.b5s3v > 0 Then
sk39 = "T"
else
sk39 = "F"
end if
if tbl.b5s4v > 0 Then
sk40 = "T"
else
sk40 = "F"
end if
if tbl.b5s5v > 0 Then
sk41 = "T"
else
sk41 = "F"
end if
if tbl.b5s6v > 0 Then
sk42 = "T"
else
sk42 = "F"
end if
if tbl.b5s7v > 0 Then
sk43 = "T"
else
sk43 = "F"
end if
if tbl.b5s8v > 0 Then
sk44 = "T"
else
sk44 = "F"
end if
if tbl.b5s9v > 0 Then
sk45 = "T"
else
sk45 = "F"
end if
if tbl.b6s1v > 0 Then
sk46 = "T"
else
sk46 = "F"
end if
if tbl.b6s2v > 0 Then
sk47 = "T"
else
sk47 = "F"
end if
if tbl.b6s3v > 0 Then
sk48 = "T"
else
sk48 = "F"
end if
if tbl.b6s4v > 0 Then
sk49 = "T"
else
sk49 = "F"
end if
if tbl.b6s5v > 0 Then
sk50 = "T"
else
sk50 = "F"
end if
if tbl.b6s6v > 0 Then
sk51 = "T"
else
sk51 = "F"
end if
if tbl.b6s7v > 0 Then
sk52 = "T"
else
sk52 = "F"
end if
if tbl.b6s8v > 0 Then
sk53 = "T"
else
sk53 = "F"
end if
if tbl.b6s9v > 0 Then
sk54 = "T"
else
sk54 = "F"
end if
if tbl.b7s1v > 0 Then
sk55 = "T"
else
sk55 = "F"
end if
if tbl.b7s2v > 0 Then
sk56 = "T"
else
sk56 = "F"
end if
if tbl.b7s3v > 0 Then
sk57 = "T"
else
sk57 = "F"
end if
if tbl.b7s4v > 0 Then
sk58 = "T"
else
sk58 = "F"
end if
if tbl.b7s5v > 0 Then
sk59 = "T"
else
sk59 = "F"
end if
if tbl.b7s6v > 0 Then
sk60 = "T"
else
sk60 = "F"
end if
if tbl.b7s7v > 0 Then
sk61 = "T"
else
sk61 = "F"
end if
if tbl.b7s8v > 0 Then
sk62 = "T"
else
sk62 = "F"
end if
if tbl.b7s9v > 0 Then
sk63 = "T"
else
sk63 = "F"
end if
if tbl.b8s1v > 0 Then
sk64 = "T"
else
sk64 = "F"
end if
if tbl.b8s2v > 0 Then
sk65 = "T"
else
sk65 = "F"
end if
if tbl.b8s3v > 0 Then
sk66 = "T"
else
sk66 = "F"
end if
if tbl.b8s4v > 0 Then
sk67 = "T"
else
sk67 = "F"
end if
if tbl.b8s5v > 0 Then
sk68 = "T"
else
sk68 = "F"
end if
if tbl.b8s6v > 0 Then
sk69 = "T"
else
sk69 = "F"
end if
if tbl.b8s7v > 0 Then
sk70 = "T"
else
sk70 = "F"
end if
if tbl.b8s8v > 0 Then
sk71 = "T"
else
sk71 = "F"
end if
if tbl.b8s9v > 0 Then
sk72 = "T"
else
sk72 = "F"
end if
if tbl.b9s1v > 0 Then
sk73 = "T"
else
sk73 = "F"
end if
if tbl.b9s2v > 0 Then
sk74 = "T"
else
sk74 = "F"
end if
if tbl.b9s3v > 0 Then
sk75 = "T"
else
sk75 = "F"
end if
if tbl.b9s4v > 0 Then
sk76 = "T"
else
sk76 = "F"
end if
if tbl.b9s5v > 0 Then
sk77 = "T"
else
sk77 = "F"
end if
if tbl.b9s6v > 0 Then
sk78 = "T"
else
sk78 = "F"
end if
if tbl.b9s7v > 0 Then
sk79 = "T"
else
sk79 = "F"
end if
if tbl.b9s8v > 0 Then
sk80 = "T"
else
sk80 = "F"
end if
if tbl.b9s9v > 0 Then
sk81 = "T"
else
sk81 = "F"
end if
tbl.close()
dim text as c
dim text2 as c
dim text3 as c
text = " 1. Finished... ."
text2 = "2. You can solve the puzzle the hard way by filling in the missing values,"
text3 = "3. Or you can click on 'Fill in block values' to get you started."
font_color = "Dark Teal"
dim formatted_text as c
formatted_text = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text
dim formatted_text2 as c
formatted_text2 = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text2
dim formatted_text3 as c
formatted_text3 = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text3
'Dialog Starts Here
dim xdialogStyle as p
xdialogStyle.color = "white"
xdialogStyle.accentcolor = "Dark Rose"
ui_dlg_box("TakeCharge Puzzle Generator",<<%dlg%
{windowstyle=Gradient Radial Top Left}
{lf=2};
{blueframe=1,1:It's your choice!}
{region}
{lf};
{sp=4}{text=%O={@@}%80,1:formatted_text};
{sp=4}{text=%O={@@}%80,1:formatted_text2};
{sp=4}{text=%O={@@}%80,1:formatted_text3};
{lf};
{endregion};
{lf};
{sp=2}<%I=$$code.execution.done;B=T;O={J=C} {I=1} OK ; %78,1OK>
%dlg%)
This script calls two scripts Random1 and Random2
Random1 sets the variable value for each of our puzzle clue fields. These fields are used to allow the user to create their own puzzle so in order for the code to work in that case we make it work in all cases. The default value of the fields are 1 through 9 but they can be in any order. The user can also create word puzzles which would make them letters instead of numbers. This script converts the values to 1 through 9 and insures there are no duplicates. Here is the code.
sk1 = "F"
sk2 = "F"
sk3 = "F"
sk4 = "F"
sk5 = "F"
sk6 = "F"
sk7 = "F"
sk8 = "F"
sk9 = "F"
sk10 = "F"
sk11 = "F"
sk12 = "F"
sk13 = "F"
sk14 = "F"
sk15 = "F"
sk16 = "F"
sk17 = "F"
sk18 = "F"
sk19 = "F"
sk20 = "F"
sk21 = "F"
sk22 = "F"
sk23 = "F"
sk24 = "F"
sk25 = "F"
sk26 = "F"
sk27 = "F"
sk28 = "F"
sk29 = "F"
sk30 = "F"
sk31 = "F"
sk32 = "F"
sk33 = "F"
sk34 = "F"
sk35 = "F"
sk36 = "F"
sk37 = "F"
sk38 = "F"
sk39 = "F"
sk40 = "F"
sk41 = "F"
sk42 = "F"
sk43 = "F"
sk44 = "F"
sk45 = "F"
sk46 = "F"
sk47 = "F"
sk48 = "F"
sk49 = "F"
sk50 = "F"
sk51 = "F"
sk52 = "F"
sk53 = "F"
sk54 = "F"
sk55 = "F"
sk56 = "F"
sk57 = "F"
sk58 = "F"
sk59 = "F"
sk60 = "F"
sk61 = "F"
sk62 = "F"
sk63 = "F"
sk64 = "F"
sk65 = "F"
sk66 = "F"
sk67 = "F"
sk68 = "F"
sk69 = "F"
sk70 = "F"
sk71 = "F"
sk72 = "F"
sk73 = "F"
sk74 = "F"
sk75 = "F"
sk76 = "F"
sk77 = "F"
sk78 = "F"
sk79 = "F"
sk80 = "F"
sk81 = "F"
nbrtrys = 0
tbl = table.open("sudokupuzzlesolver")
tbl.fetch_first()
rd1:
tbl.change_begin()
tbl.VL1 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl1 = 0 then
goto rd1
end if
rd2:
tbl.change_begin()
tbl.VL2 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl2 = 0 .or. tbl.vl2 = tbl.vl1 then
goto rd2
end if
rd3:
tbl.change_begin()
tbl.VL3 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl3 = 0 .or. tbl.vl3 = tbl.vl2 .or. tbl.vl3 = tbl.vl1 then
goto rd3
end if
rd4:
tbl.change_begin()
tbl.VL4 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl4 = 0 .or. tbl.vl4 = tbl.vl3 .or. tbl.vl4 = tbl.vl2 .or. tbl.vl4 = tbl.vl1 then
goto rd4
end if
rd5:
tbl.change_begin()
tbl.VL5 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl5 = 0 .or. tbl.vl5 = tbl.vl4 .or. tbl.vl5 = tbl.Vl3 .or. tbl.vl5 = tbl.vl2 .or. tbl.vl5 = tbl.vl1 then
goto rd5
end if
rd6:
tbl.change_begin()
tbl.VL6 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl6 = 0 .or. tbl.vl6 = tbl.vl5 .or. tbl.vl6 = tbl.vl4 .or. tbl.vl6 = tbl.vl3 .or. tbl.vl6 = tbl.vl2 .or. tbl.vl6 = tbl.vl1 then
goto rd6
end if
rd7:
tbl.change_begin()
tbl.VL7 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl7 = 0 .or. tbl.vl7 = tbl.vl6 .or. tbl.vl7 = tbl.vl5 .or. tbl.vl7 = tbl.vl4 .or. tbl.vl7 = tbl.vl3 .or. tbl.vl7 = tbl.vl2 .or. tbl.vl7 = tbl.vl1 then
goto rd7
end if
rd8:
tbl.change_begin()
tbl.VL8 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl8 = 0 .or. tbl.vl8 = tbl.vl7 .or. tbl.vl8 = tbl.vl6 .or. tbl.vl8 = tbl.vl5 .or. tbl.vl8 = tbl.vl4 .or. tbl.vl8 = tbl.vl3 .or. tbl.vl8 = tbl.vl2 .or. tbl.vl8 = tbl.vl1 then
goto rd8
end if
rd9:
tbl.change_begin()
tbl.VL9 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl9 = 0 .or. tbl.vl9 = tbl.vl8 .or. tbl.vl9 = tbl.vl7 .or. tbl.vl9 = tbl.vl6 .or. tbl.vl9 = tbl.vl5 .or. tbl.vl9 = tbl.vl4 .or. tbl.vl9 = tbl.vl3 .or. tbl.vl9 = tbl.vl2 .or. tbl.vl9 = tbl.vl1 then
goto rd9
end if
tbl.close()
xbasic_wait_for_idle()
Our scripts starts off by setting each sk variable back to “F”. Next it assigns a random number value of 1 through 9 for each of the vl fields. Once vl1 equals a valid number it goes to rd2. The valid value for vl2 cannot = 0 or the value in vl1. If it does, it loops until a valid answer is reached then goes to rd3 and so on.
Once complete control is passed to the calling script and Random2 is run.
Random2 uses the values we just assigned to the vl fields 1 through 9 and places them in each field on our puzzle board. The vl field value must equal the value of the associated cl field so an if statement is used for each line of the update.
update.field1 = "B1S1V" update.expr1 = "if(B1s1=cl1,vl1,if(b1s1=cl2,vl2,if(b1s1=cl3,vl3,if(b1s1=cl4,vl4,if(b1s1=cl5,vl5,if(b1s1=cl6,vl6,if(b1s1=cl7,vl7,if(b1s1=cl8,vl8,if(b1s1=cl9,vl9,b1s1v)))))))))"
This update is run for each of the 81 fields. here is the entire update code.
tbl = table.open("sudokupuzzlesolver")
update.fields = 81
update.field1 = "B1S1V"
update.expr1 = "if(B1s1=cl1,vl1,if(b1s1=cl2,vl2,if(b1s1=cl3,vl3,if(b1s1=cl4,vl4,if(b1s1=cl5,vl5,if(b1s1=cl6,vl6,if(b1s1=cl7,vl7,if(b1s1=cl8,vl8,if(b1s1=cl9,vl9,b1s1v)))))))))"
update.field2 = "B1S2V"
update.expr2 = "if(B1s2=cl1,vl1,if(b1s2=cl2,vl2,if(b1s2=cl3,vl3,if(b1s2=cl4,vl4,if(b1s2=cl5,vl5,if(b1s2=cl6,vl6,if(b1s2=cl7,vl7,if(b1s2=cl8,vl8,if(b1s2=cl9,vl9,b1s2v)))))))))"
update.field3 = "B1S3V"
update.expr3 = "if(B1s3=cl1,vl1,if(b1s3=cl2,vl2,if(b1s3=cl3,vl3,if(b1s3=cl4,vl4,if(b1s3=cl5,vl5,if(b1s3=cl6,vl6,if(b1s3=cl7,vl7,if(b1s3=cl8,vl8,if(b1s3=cl9,vl9,b1s3v)))))))))"
update.field4 = "B1S4V"
update.expr4 = "if(B1s4=cl1,vl1,if(b1s4=cl2,vl2,if(b1s4=cl3,vl3,if(b1s4=cl4,vl4,if(b1s4=cl5,vl5,if(b1s4=cl6,vl6,if(b1s4=cl7,vl7,if(b1s4=cl8,vl8,if(b1s4=cl9,vl9,b1s4v)))))))))"
update.field5 = "B1S5V"
update.expr5 = "if(B1s5=cl1,vl1,if(b1s5=cl2,vl2,if(b1s5=cl3,vl3,if(b1s5=cl4,vl4,if(b1s5=cl5,vl5,if(b1s5=cl6,vl6,if(b1s5=cl7,vl7,if(b1s5=cl8,vl8,if(b1s5=cl9,vl9,b1s5v)))))))))"
update.field6 = "B1S6V"
update.expr6 = "if(B1s6=cl1,vl1,if(b1s6=cl2,vl2,if(b1s6=cl3,vl3,if(b1s6=cl4,vl4,if(b1s6=cl5,vl5,if(b1s6=cl6,vl6,if(b1s6=cl7,vl7,if(b1s6=cl8,vl8,if(b1s6=cl9,vl9,b1s6v)))))))))"
update.field7 = "B1S7V"
update.expr7 = "if(B1s7=cl1,vl1,if(b1s7=cl2,vl2,if(b1s7=cl3,vl3,if(b1s7=cl4,vl4,if(b1s7=cl5,vl5,if(b1s7=cl6,vl6,if(b1s7=cl7,vl7,if(b1s7=cl8,vl8,if(b1s7=cl9,vl9,b1s7v)))))))))"
update.field8 = "B1S8V"
update.expr8 = "if(B1s8=cl1,vl1,if(b1s8=cl2,vl2,if(b1s8=cl3,vl3,if(b1s8=cl4,vl4,if(b1s8=cl5,vl5,if(b1s8=cl6,vl6,if(b1s8=cl7,vl7,if(b1s8=cl8,vl8,if(b1s8=cl9,vl9,b1s8v)))))))))"
update.field9 = "B1S9V"
update.expr9 = "if(B1s9=cl1,vl1,if(b1s9=cl2,vl2,if(b1s9=cl3,vl3,if(b1s9=cl4,vl4,if(b1s9=cl5,vl5,if(b1s9=cl6,vl6,if(b1s9=cl7,vl7,if(b1s9=cl8,vl8,if(b1s9=cl9,vl9,b1s9v)))))))))"
update.field10 = "B3S1V"
update.expr10 = "if(b3s1=cl1,vl1,if(b3s1=cl2,vl2,if(b3s1=cl3,vl3,if(b3s1=cl4,vl4,if(b3s1=cl5,vl5,if(b3s1=cl6,vl6,if(b3s1=cl7,vl7,if(b3s1=cl8,vl8,if(b3s1=cl9,vl9,b3s1v)))))))))"
update.field11 = "B3S2V"
update.expr11 = "if(b3s2=cl1,vl1,if(b3s2=cl2,vl2,if(b3s2=cl3,vl3,if(b3s2=cl4,vl4,if(b3s2=cl5,vl5,if(b3s2=cl6,vl6,if(b3s2=cl7,vl7,if(b3s2=cl8,vl8,if(b3s2=cl9,vl9,b3s2v)))))))))"
update.field12 = "B3S3V"
update.expr12 = "if(b3s3=cl1,vl1,if(b3s3=cl2,vl2,if(b3s3=cl3,vl3,if(b3s3=cl4,vl4,if(b3s3=cl5,vl5,if(b3s3=cl6,vl6,if(b3s3=cl7,vl7,if(b3s3=cl8,vl8,if(b3s3=cl9,vl9,b3s3v)))))))))"
update.field13 = "B3S4V"
update.expr13 = "if(b3s4=cl1,vl1,if(b3s4=cl2,vl2,if(b3s4=cl3,vl3,if(b3s4=cl4,vl4,if(b3s4=cl5,vl5,if(b3s4=cl6,vl6,if(b3s4=cl7,vl7,if(b3s4=cl8,vl8,if(b3s4=cl9,vl9,b3s4v)))))))))"
update.field14 = "B3S5V"
update.expr14 = "if(b3s5=cl1,vl1,if(b3s5=cl2,vl2,if(b3s5=cl3,vl3,if(b3s5=cl4,vl4,if(b3s5=cl5,vl5,if(b3s5=cl6,vl6,if(b3s5=cl7,vl7,if(b3s5=cl8,vl8,if(b3s5=cl9,vl9,b3s5v)))))))))"
update.field15 = "B3S6V"
update.expr15 = "if(b3s6=cl1,vl1,if(b3s6=cl2,vl2,if(b3s6=cl3,vl3,if(b3s6=cl4,vl4,if(b3s6=cl5,vl5,if(b3s6=cl6,vl6,if(b3s6=cl7,vl7,if(b3s6=cl8,vl8,if(b3s6=cl9,vl9,b3s6v)))))))))"
update.field16 = "B3S7V"
update.expr16 = "if(b3s7=cl1,vl1,if(b3s7=cl2,vl2,if(b3s7=cl3,vl3,if(b3s7=cl4,vl4,if(b3s7=cl5,vl5,if(b3s7=cl6,vl6,if(b3s7=cl7,vl7,if(b3s7=cl8,vl8,if(b3s7=cl9,vl9,b3s7v)))))))))"
update.field17 = "B3S8V"
update.expr17 = "if(b3s8=cl1,vl1,if(b3s8=cl2,vl2,if(b3s8=cl3,vl3,if(b3s8=cl4,vl4,if(b3s8=cl5,vl5,if(b3s8=cl6,vl6,if(b3s8=cl7,vl7,if(b3s8=cl8,vl8,if(b3s8=cl9,vl9,b3s8v)))))))))"
update.field18 = "B3S9V"
update.expr18 = "if(b3s9=cl1,vl1,if(b3s9=cl2,vl2,if(b3s9=cl3,vl3,if(b3s9=cl4,vl4,if(b3s9=cl5,vl5,if(b3s9=cl6,vl6,if(b3s9=cl7,vl7,if(b3s9=cl8,vl8,if(b3s9=cl9,vl9,b3s9v)))))))))"
update.field19 = "B4S1V"
update.expr19 = "if(b4s1=cl1,vl1,if(b4s1=cl2,vl2,if(b4s1=cl3,vl3,if(b4s1=cl4,vl4,if(b4s1=cl5,vl5,if(b4s1=cl6,vl6,if(b4s1=cl7,vl7,if(b4s1=cl8,vl8,if(b4s1=cl9,vl9,b4s1v)))))))))"
update.field20 = "B4S2V"
update.expr20 = "if(b4s2=cl1,vl1,if(b4s2=cl2,vl2,if(b4s2=cl3,vl3,if(b4s2=cl4,vl4,if(b4s2=cl5,vl5,if(b4s2=cl6,vl6,if(b4s2=cl7,vl7,if(b4s2=cl8,vl8,if(b4s2=cl9,vl9,b4s2v)))))))))"
update.field21 = "B4S3V"
update.expr21 = "if(b4s3=cl1,vl1,if(b4s3=cl2,vl2,if(b4s3=cl3,vl3,if(b4s3=cl4,vl4,if(b4s3=cl5,vl5,if(b4s3=cl6,vl6,if(b4s3=cl7,vl7,if(b4s3=cl8,vl8,if(b4s3=cl9,vl9,b4s3v)))))))))"
update.field22 = "B4S4V"
update.expr22 = "if(b4s4=cl1,vl1,if(b4s4=cl2,vl2,if(b4s4=cl3,vl3,if(b4s4=cl4,vl4,if(b4s4=cl5,vl5,if(b4s4=cl6,vl6,if(b4s4=cl7,vl7,if(b4s4=cl8,vl8,if(b4s4=cl9,vl9,b4s4v)))))))))"
update.field23 = "B4S5V"
update.expr23 = "if(b4s5=cl1,vl1,if(b4s5=cl2,vl2,if(b4s5=cl3,vl3,if(b4s5=cl4,vl4,if(b4s5=cl5,vl5,if(b4s5=cl6,vl6,if(b4s5=cl7,vl7,if(b4s5=cl8,vl8,if(b4s5=cl9,vl9,b4s5v)))))))))"
update.field24 = "B4S6V"
update.expr24 = "if(b4s6=cl1,vl1,if(b4s6=cl2,vl2,if(b4s6=cl3,vl3,if(b4s6=cl4,vl4,if(b4s6=cl5,vl5,if(b4s6=cl6,vl6,if(b4s6=cl7,vl7,if(b4s6=cl8,vl8,if(b4s6=cl9,vl9,b4s6v)))))))))"
update.field25 = "B4S7V"
update.expr25 = "if(b4s7=cl1,vl1,if(b4s7=cl2,vl2,if(b4s7=cl3,vl3,if(b4s7=cl4,vl4,if(b4s7=cl5,vl5,if(b4s7=cl6,vl6,if(b4s7=cl7,vl7,if(b4s7=cl8,vl8,if(b4s7=cl9,vl9,b4s7v)))))))))"
update.field26 = "B4S8V"
update.expr26 = "if(b4s8=cl1,vl1,if(b4s8=cl2,vl2,if(b4s8=cl3,vl3,if(b4s8=cl4,vl4,if(b4s8=cl5,vl5,if(b4s8=cl6,vl6,if(b4s8=cl7,vl7,if(b4s8=cl8,vl8,if(b4s8=cl9,vl9,b4s8v)))))))))"
update.field27 = "B4S9V"
update.expr27 = "if(b4s9=cl1,vl1,if(b4s9=cl2,vl2,if(b4s9=cl3,vl3,if(b4s9=cl4,vl4,if(b4s9=cl5,vl5,if(b4s9=cl6,vl6,if(b4s9=cl7,vl7,if(b4s9=cl8,vl8,if(b4s9=cl9,vl9,b4s9v)))))))))"
update.field28 = "B5S1V"
update.expr28 = "if(b5s1=cl1,vl1,if(b5s1=cl2,vl2,if(b5s1=cl3,vl3,if(b5s1=cl4,vl4,if(b5s1=cl5,vl5,if(b5s1=cl6,vl6,if(b5s1=cl7,vl7,if(b5s1=cl8,vl8,if(b5s1=cl9,vl9,b5s1v)))))))))"
update.field29 = "B5S2V"
update.expr29 = "if(b5s2=cl1,vl1,if(b5s2=cl2,vl2,if(b5s2=cl3,vl3,if(b5s2=cl4,vl4,if(b5s2=cl5,vl5,if(b5s2=cl6,vl6,if(b5s2=cl7,vl7,if(b5s2=cl8,vl8,if(b5s2=cl9,vl9,b5s2v)))))))))"
update.field30 = "B5S3V"
update.expr30 = "if(b5s3=cl1,vl1,if(b5s3=cl2,vl2,if(b5s3=cl3,vl3,if(b5s3=cl4,vl4,if(b5s3=cl5,vl5,if(b5s3=cl6,vl6,if(b5s3=cl7,vl7,if(b5s3=cl8,vl8,if(b5s3=cl9,vl9,b5s3v)))))))))"
update.field31 = "B5S4V"
update.expr31 = "if(b5s4=cl1,vl1,if(b5s4=cl2,vl2,if(b5s4=cl3,vl3,if(b5s4=cl4,vl4,if(b5s4=cl5,vl5,if(b5s4=cl6,vl6,if(b5s4=cl7,vl7,if(b5s4=cl8,vl8,if(b5s4=cl9,vl9,b5s4v)))))))))"
update.field32 = "B5S5V"
update.expr32 = "if(b5s5=cl1,vl1,if(b5s5=cl2,vl2,if(b5s5=cl3,vl3,if(b5s5=cl4,vl4,if(b5s5=cl5,vl5,if(b5s5=cl6,vl6,if(b5s5=cl7,vl7,if(b5s5=cl8,vl8,if(b5s5=cl9,vl9,b5s5v)))))))))"
update.field33 = "B5S6V"
update.expr33 = "if(b5s6=cl1,vl1,if(b5s6=cl2,vl2,if(b5s6=cl3,vl3,if(b5s6=cl4,vl4,if(b5s6=cl5,vl5,if(b5s6=cl6,vl6,if(b5s6=cl7,vl7,if(b5s6=cl8,vl8,if(b5s6=cl9,vl9,b5s6v)))))))))"
update.field34 = "B5S7V"
update.expr34 = "if(b5s7=cl1,vl1,if(b5s7=cl2,vl2,if(b5s7=cl3,vl3,if(b5s7=cl4,vl4,if(b5s7=cl5,vl5,if(b5s7=cl6,vl6,if(b5s7=cl7,vl7,if(b5s7=cl8,vl8,if(b5s7=cl9,vl9,b5s7v)))))))))"
update.field35 = "B5S8V"
update.expr35 = "if(b5s8=cl1,vl1,if(b5s8=cl2,vl2,if(b5s8=cl3,vl3,if(b5s8=cl4,vl4,if(b5s8=cl5,vl5,if(b5s8=cl6,vl6,if(b5s8=cl7,vl7,if(b5s8=cl8,vl8,if(b5s8=cl9,vl9,b5s8v)))))))))"
update.field36 = "B5S9V"
update.expr36 = "if(b5s9=cl1,vl1,if(b5s9=cl2,vl2,if(b5s9=cl3,vl3,if(b5s9=cl4,vl4,if(b5s9=cl5,vl5,if(b5s9=cl6,vl6,if(b5s9=cl7,vl7,if(b5s9=cl8,vl8,if(b5s9=cl9,vl9,b5s9v)))))))))"
update.field37 = "B6S1V"
update.expr37 = "if(b6s1=cl1,vl1,if(b6s1=cl2,vl2,if(b6s1=cl3,vl3,if(b6s1=cl4,vl4,if(b6s1=cl5,vl5,if(b6s1=cl6,vl6,if(b6s1=cl7,vl7,if(b6s1=cl8,vl8,if(b6s1=cl9,vl9,b6s1v)))))))))"
update.field38 = "B6S2V"
update.expr38 = "if(b6s2=cl1,vl1,if(b6s2=cl2,vl2,if(b6s2=cl3,vl3,if(b6s2=cl4,vl4,if(b6s2=cl5,vl5,if(b6s2=cl6,vl6,if(b6s2=cl7,vl7,if(b6s2=cl8,vl8,if(b6s2=cl9,vl9,b6s2v)))))))))"
update.field39 = "B6S3V"
update.expr39 = "if(b6s3=cl1,vl1,if(b6s3=cl2,vl2,if(b6s3=cl3,vl3,if(b6s3=cl4,vl4,if(b6s3=cl5,vl5,if(b6s3=cl6,vl6,if(b6s3=cl7,vl7,if(b6s3=cl8,vl8,if(b6s3=cl9,vl9,b6s3v)))))))))"
update.field40 = "B6S4V"
update.expr40 = "if(b6s4=cl1,vl1,if(b6s4=cl2,vl2,if(b6s4=cl3,vl3,if(b6s4=cl4,vl4,if(b6s4=cl5,vl5,if(b6s4=cl6,vl6,if(b6s4=cl7,vl7,if(b6s4=cl8,vl8,if(b6s4=cl9,vl9,b6s4v)))))))))"
update.field41 = "B6S5V"
update.expr41 = "if(b6s5=cl1,vl1,if(b6s5=cl2,vl2,if(b6s5=cl3,vl3,if(b6s5=cl4,vl4,if(b6s5=cl5,vl5,if(b6s5=cl6,vl6,if(b6s5=cl7,vl7,if(b6s5=cl8,vl8,if(b6s5=cl9,vl9,b6s5v)))))))))"
update.field42 = "B6S6V"
update.expr42 = "if(b6s6=cl1,vl1,if(b6s6=cl2,vl2,if(b6s6=cl3,vl3,if(b6s6=cl4,vl4,if(b6s6=cl5,vl5,if(b6s6=cl6,vl6,if(b6s6=cl7,vl7,if(b6s6=cl8,vl8,if(b6s6=cl9,vl9,b6s6v)))))))))"
update.field43 = "B6S7V"
update.expr43 = "if(b6s7=cl1,vl1,if(b6s7=cl2,vl2,if(b6s7=cl3,vl3,if(b6s7=cl4,vl4,if(b6s7=cl5,vl5,if(b6s7=cl6,vl6,if(b6s7=cl7,vl7,if(b6s7=cl8,vl8,if(b6s7=cl9,vl9,b6s7v)))))))))"
update.field44 = "B6S8V"
update.expr44 = "if(b6s8=cl1,vl1,if(b6s8=cl2,vl2,if(b6s8=cl3,vl3,if(b6s8=cl4,vl4,if(b6s8=cl5,vl5,if(b6s8=cl6,vl6,if(b6s8=cl7,vl7,if(b6s8=cl8,vl8,if(b6s8=cl9,vl9,b6s8v)))))))))"
update.field45 = "B6S9V"
update.expr45 = "if(b6s9=cl1,vl1,if(b6s9=cl2,vl2,if(b6s9=cl3,vl3,if(b6s9=cl4,vl4,if(b6s9=cl5,vl5,if(b6s9=cl6,vl6,if(b6s9=cl7,vl7,if(b6s9=cl8,vl8,if(b6s9=cl9,vl9,b6s9v)))))))))"
update.field46 = "B7S1V"
update.expr46 = "if(b7s1=cl1,vl1,if(b7s1=cl2,vl2,if(b7s1=cl3,vl3,if(b7s1=cl4,vl4,if(b7s1=cl5,vl5,if(b7s1=cl6,vl6,if(b7s1=cl7,vl7,if(b7s1=cl8,vl8,if(b7s1=cl9,vl9,b6s1v)))))))))"
update.field47 = "B7S2V"
update.expr47 = "if(b7s2=cl1,vl1,if(b7s2=cl2,vl2,if(b7s2=cl3,vl3,if(b7s2=cl4,vl4,if(b7s2=cl5,vl5,if(b7s2=cl6,vl6,if(b7s2=cl7,vl7,if(b7s2=cl8,vl8,if(b7s2=cl9,vl9,b7s2v)))))))))"
update.field48 = "B7S3V"
update.expr48 = "if(b7s3=cl1,vl1,if(b7s3=cl2,vl2,if(b7s3=cl3,vl3,if(b7s3=cl4,vl4,if(b7s3=cl5,vl5,if(b7s3=cl6,vl6,if(b7s3=cl7,vl7,if(b7s3=cl8,vl8,if(b7s3=cl9,vl9,b7s3v)))))))))"
update.field49 = "B7S4V"
update.expr49 = "if(b7s4=cl1,vl1,if(b7s4=cl2,vl2,if(b7s4=cl3,vl3,if(b7s4=cl4,vl4,if(b7s4=cl5,vl5,if(b7s4=cl6,vl6,if(b7s4=cl7,vl7,if(b7s4=cl8,vl8,if(b7s4=cl9,vl9,b7s4v)))))))))"
update.field50 = "B7S5V"
update.expr50 = "if(b7s5=cl1,vl1,if(b7s5=cl2,vl2,if(b7s5=cl3,vl3,if(b7s5=cl4,vl4,if(b7s5=cl5,vl5,if(b7s5=cl6,vl6,if(b7s5=cl7,vl7,if(b7s5=cl8,vl8,if(b7s5=cl9,vl9,b7s5v)))))))))"
update.field51 = "B7S6V"
update.expr51 = "if(b7s6=cl1,vl1,if(b7s6=cl2,vl2,if(b7s6=cl3,vl3,if(b7s6=cl4,vl4,if(b7s6=cl5,vl5,if(b7s6=cl6,vl6,if(b7s6=cl7,vl7,if(b7s6=cl8,vl8,if(b7s6=cl9,vl9,b7s6v)))))))))"
update.field52 = "B7S7V"
update.expr52 = "if(b7s7=cl1,vl1,if(b7s7=cl2,vl2,if(b7s7=cl3,vl3,if(b7s7=cl4,vl4,if(b7s7=cl5,vl5,if(b7s7=cl6,vl6,if(b7s7=cl7,vl7,if(b7s7=cl8,vl8,if(b7s7=cl9,vl9,b7s7v)))))))))"
update.field53 = "B7S8V"
update.expr53 = "if(b7s8=cl1,vl1,if(b7s8=cl2,vl2,if(b7s8=cl3,vl3,if(b7s8=cl4,vl4,if(b7s8=cl5,vl5,if(b7s8=cl6,vl6,if(b7s8=cl7,vl7,if(b7s8=cl8,vl8,if(b7s8=cl9,vl9,b7s8v)))))))))"
update.field54 = "B7S9V"
update.expr54 = "if(b7s9=cl1,vl1,if(b7s9=cl2,vl2,if(b7s9=cl3,vl3,if(b7s9=cl4,vl4,if(b7s9=cl5,vl5,if(b7s9=cl6,vl6,if(b7s9=cl7,vl7,if(b7s9=cl8,vl8,if(b7s9=cl9,vl9,b7s9v)))))))))"
update.field55 = "B8S1V"
update.expr55 = "if(b8s1=cl1,vl1,if(b8s1=cl2,vl2,if(b8s1=cl3,vl3,if(b8s1=cl4,vl4,if(b8s1=cl5,vl5,if(b8s1=cl6,vl6,if(b8s1=cl7,vl7,if(b8s1=cl8,vl8,if(b8s1=cl9,vl9,b8s1v)))))))))"
update.field56 = "B8S2V"
update.expr56 = "if(b8s2=cl1,vl1,if(b8s2=cl2,vl2,if(b8s2=cl3,vl3,if(b8s2=cl4,vl4,if(b8s2=cl5,vl5,if(b8s2=cl6,vl6,if(b8s2=cl7,vl7,if(b8s2=cl8,vl8,if(b8s2=cl9,vl9,b8s2v)))))))))"
update.field57 = "B8S3V"
update.expr57 = "if(b8s3=cl1,vl1,if(b8s3=cl2,vl2,if(b8s3=cl3,vl3,if(b8s3=cl4,vl4,if(b8s3=cl5,vl5,if(b8s3=cl6,vl6,if(b8s3=cl7,vl7,if(b8s3=cl8,vl8,if(b8s3=cl9,vl9,b8s3v)))))))))"
update.field58 = "B8S4V"
update.expr58 = "if(b8s4=cl1,vl1,if(b8s4=cl2,vl2,if(b8s4=cl3,vl3,if(b8s4=cl4,vl4,if(b8s4=cl5,vl5,if(b8s4=cl6,vl6,if(b8s4=cl7,vl7,if(b8s4=cl8,vl8,if(b8s4=cl9,vl9,b8s4v)))))))))"
update.field59 = "B8S5V"
update.expr59 = "if(b8s5=cl1,vl1,if(b8s5=cl2,vl2,if(b8s5=cl3,vl3,if(b8s5=cl4,vl4,if(b8s5=cl5,vl5,if(b8s5=cl6,vl6,if(b8s5=cl7,vl7,if(b8s5=cl8,vl8,if(b8s5=cl9,vl9,b8s5v)))))))))"
update.field60 = "B8S6V"
update.expr60 = "if(b8s6=cl1,vl1,if(b8s6=cl2,vl2,if(b8s6=cl3,vl3,if(b8s6=cl4,vl4,if(b8s6=cl5,vl5,if(b8s6=cl6,vl6,if(b8s6=cl7,vl7,if(b8s6=cl8,vl8,if(b8s6=cl9,vl9,b8s6v)))))))))"
update.field61 = "B8S7V"
update.expr61 = "if(b8s7=cl1,vl1,if(b8s7=cl2,vl2,if(b8s7=cl3,vl3,if(b8s7=cl4,vl4,if(b8s7=cl5,vl5,if(b8s7=cl6,vl6,if(b8s7=cl7,vl7,if(b8s7=cl8,vl8,if(b8s7=cl9,vl9,b8s7v)))))))))"
update.field62 = "B8S8V"
update.expr62 = "if(b8s8=cl1,vl1,if(b8s8=cl2,vl2,if(b8s8=cl3,vl3,if(b8s8=cl4,vl4,if(b8s8=cl5,vl5,if(b8s8=cl6,vl6,if(b8s8=cl7,vl7,if(b8s8=cl8,vl8,if(b8s8=cl9,vl9,b8s8v)))))))))"
update.field63 = "B8S9V"
update.expr63 = "if(b8s9=cl1,vl1,if(b8s9=cl2,vl2,if(b8s9=cl3,vl3,if(b8s9=cl4,vl4,if(b8s9=cl5,vl5,if(b8s9=cl6,vl6,if(b8s9=cl7,vl7,if(b8s9=cl8,vl8,if(b8s9=cl9,vl9,b8s9v)))))))))"
update.field64 = "B9S1V"
update.expr64 = "if(b9s1=cl1,vl1,if(b9s1=cl2,vl2,if(b9s1=cl3,vl3,if(b9s1=cl4,vl4,if(b9s1=cl5,vl5,if(b9s1=cl6,vl6,if(b9s1=cl7,vl7,if(b9s1=cl8,vl8,if(b9s1=cl9,vl9,b9s1v)))))))))"
update.field65 = "B9S2V"
update.expr65 = "if(b9s2=cl1,vl1,if(b9s2=cl2,vl2,if(b9s2=cl3,vl3,if(b9s2=cl4,vl4,if(b9s2=cl5,vl5,if(b9s2=cl6,vl6,if(b9s2=cl7,vl7,if(b9s2=cl8,vl8,if(b9s2=cl9,vl9,b9s2v)))))))))"
update.field66 = "B9S3V"
update.expr66 = "if(b9s3=cl1,vl1,if(b9s3=cl2,vl2,if(b9s3=cl3,vl3,if(b9s3=cl4,vl4,if(b9s3=cl5,vl5,if(b9s3=cl6,vl6,if(b9s3=cl7,vl7,if(b9s3=cl8,vl8,if(b9s3=cl9,vl9,b9s3v)))))))))"
update.field67 = "B9S4V"
update.expr67 = "if(b9s4=cl1,vl1,if(b9s4=cl2,vl2,if(b9s4=cl3,vl3,if(b9s4=cl4,vl4,if(b9s4=cl5,vl5,if(b9s4=cl6,vl6,if(b9s4=cl7,vl7,if(b9s4=cl8,vl8,if(b9s4=cl9,vl9,b9s4v)))))))))"
update.field68 = "B9S5V"
update.expr68 = "if(b9s5=cl1,vl1,if(b9s5=cl2,vl2,if(b9s5=cl3,vl3,if(b9s5=cl4,vl4,if(b9s5=cl5,vl5,if(b9s5=cl6,vl6,if(b9s5=cl7,vl7,if(b9s5=cl8,vl8,if(b9s5=cl9,vl9,b9s5v)))))))))"
update.field69 = "B9S6V"
update.expr69 = "if(b9s6=cl1,vl1,if(b9s6=cl2,vl2,if(b9s6=cl3,vl3,if(b9s6=cl4,vl4,if(b9s6=cl5,vl5,if(b9s6=cl6,vl6,if(b9s6=cl7,vl7,if(b9s6=cl8,vl8,if(b9s6=cl9,vl9,b9s6v)))))))))"
update.field70 = "B9S7V"
update.expr70 = "if(b9s7=cl1,vl1,if(b9s7=cl2,vl2,if(b9s7=cl3,vl3,if(b9s7=cl4,vl4,if(b9s7=cl5,vl5,if(b9s7=cl6,vl6,if(b9s7=cl7,vl7,if(b9s7=cl8,vl8,if(b9s7=cl9,vl9,b9s7v)))))))))"
update.field71 = "B9S8V"
update.expr71 = "if(b9s8=cl1,vl1,if(b9s8=cl2,vl2,if(b9s8=cl3,vl3,if(b9s8=cl4,vl4,if(b9s8=cl5,vl5,if(b9s8=cl6,vl6,if(b9s8=cl7,vl7,if(b9s8=cl8,vl8,if(b9s8=cl9,vl9,b9s8v)))))))))"
update.field72 = "B9S9V"
update.expr72 = "if(b9s9=cl1,vl1,if(b9s9=cl2,vl2,if(b9s9=cl3,vl3,if(b9s9=cl4,vl4,if(b9s9=cl5,vl5,if(b9s9=cl6,vl6,if(b9s9=cl7,vl7,if(b9s9=cl8,vl8,if(b9s9=cl9,vl9,b9s9v)))))))))"
update.field73 = "B2S1V"
update.expr73 = "if(B2s1=cl1,vl1,if(b2s1=cl2,vl2,if(b2s1=cl3,vl3,if(b2s1=cl4,vl4,if(b2s1=cl5,vl5,if(b2s1=cl6,vl6,if(b2s1=cl7,vl7,if(b2s1=cl8,vl8,if(b2s1=cl9,vl9,b2s1v)))))))))"
update.field74 = "B2S2V"
update.expr74 = "if(B2s2=cl1,vl1,if(b2s2=cl2,vl2,if(b2s2=cl3,vl3,if(b2s2=cl4,vl4,if(b2s2=cl5,vl5,if(b2s2=cl6,vl6,if(b2s2=cl7,vl7,if(b2s2=cl8,vl8,if(b2s2=cl9,vl9,b2s2v)))))))))"
update.field75 = "B2S3V"
update.expr75 = "if(B2s3=cl1,vl1,if(b2s3=cl2,vl2,if(b2s3=cl3,vl3,if(b2s3=cl4,vl4,if(b2s3=cl5,vl5,if(b2s3=cl6,vl6,if(b2s3=cl7,vl7,if(b2s3=cl8,vl8,if(b2s3=cl9,vl9,b2s3v)))))))))"
update.field76 = "B2S4V"
update.expr76 = "if(B2s4=cl1,vl1,if(b2s4=cl2,vl2,if(b2s4=cl3,vl3,if(b2s4=cl4,vl4,if(b2s4=cl5,vl5,if(b2s4=cl6,vl6,if(b2s4=cl7,vl7,if(b2s4=cl8,vl8,if(b2s4=cl9,vl9,b2s4v)))))))))"
update.field77 = "B2S5V"
update.expr77 = "if(B2s5=cl1,vl1,if(b2s5=cl2,vl2,if(b2s5=cl3,vl3,if(b2s5=cl4,vl4,if(b2s5=cl5,vl5,if(b2s5=cl6,vl6,if(b2s5=cl7,vl7,if(b2s5=cl8,vl8,if(b2s5=cl9,vl9,b2s5v)))))))))"
update.field78 = "B2S6V"
update.expr78 = "if(B2s6=cl1,vl1,if(b2s6=cl2,vl2,if(b2s6=cl3,vl3,if(b2s6=cl4,vl4,if(b2s6=cl5,vl5,if(b2s6=cl6,vl6,if(b2s6=cl7,vl7,if(b2s6=cl8,vl8,if(b2s6=cl9,vl9,b2s6v)))))))))"
update.field79 = "B2S7V"
update.expr79 = "if(B2s7=cl1,vl1,if(b2s7=cl2,vl2,if(b2s7=cl3,vl3,if(b2s7=cl4,vl4,if(b2s7=cl5,vl5,if(b2s7=cl6,vl6,if(b2s7=cl7,vl7,if(b2s7=cl8,vl8,if(b2s7=cl9,vl9,b2s7v)))))))))"
update.field80 = "B2S8V"
update.expr80 = "if(B2s8=cl1,vl1,if(b2s8=cl2,vl2,if(b2s8=cl3,vl3,if(b2s8=cl4,vl4,if(b2s8=cl5,vl5,if(b2s8=cl6,vl6,if(b2s8=cl7,vl7,if(b2s8=cl8,vl8,if(b2s8=cl9,vl9,b2s8v)))))))))"
update.field81 = "B2S9V"
update.expr81 = "if(B2s9=cl1,vl1,if(b2s9=cl2,vl2,if(b2s9=cl3,vl3,if(b2s9=cl4,vl4,if(b2s9=cl5,vl5,if(b2s9=cl6,vl6,if(b2s9=cl7,vl7,if(b2s9=cl8,vl8,if(b2s9=cl9,vl9,b2s9v)))))))))"
tbl.update()
tbl.close()
When finished control is passed back to the calling script which then finishes the routine by checking each field. If blank the sk variable = “F” otherwise it equals “T” Then it displays a simple xDialog box telling the user they can play the game as is or click fill in block values. If the user click Fill in Block values a randomize script runs for each block and enters scrambled values in each of the blank fields in the block.
Lets break for now and the next lesson will look at the Fill in Block Values onPush event as well as the routine for swapping cell values.
Leave a comment