We are starting off this lesson by finishing our Sudoku Puzzle Solver Application. When you select New Puzzle on the form, you are presented with the following dialog.

NewPuzzleGame

We have reviewed the code for generating a Computer Generated Game Standard and now we will review;

  • Manual Entry from Book
  • Your Saved Puzzles

 

Manual Entry from Book:

If you are a Sudoku player you most likely have purchased one of the many Sudoku books from the book store or news stand. I have Sudoku for your Coffee Break by Will Shortz. Good book with lots of puzzles of varying degrees of difficulty. I have finished many of the puzzles in this book and found only two that could not be solved (so – far). Many of the demanding or hard puzzles require patience, a pencil and an eraser. Or you can enter them into the puzzle solver and work on the screen. Here is how it works.

New Game Manual from Book

When the Manual from book option is selected, the user is presented with a simple HTML message box telling them what to do. When they click OK the game screen changes to a blank puzzle.

Manual Enter Puzzle

In the image above I have entered a demanding game from my Sudoku book mentioned above. As you can see all I have to enter is the clues provided in the book in the proper cells. If I enter the clues in the wrong cell, the puzzle will not solve so I can check to see if the puzzle is solvable by clicking Show Solution. Spoiler Alert! the solution is displayed on the screen.

Manual Puzzle Solved

The code that makes this happen has already been explained in the the previous lessons so I am not going to repeat it here. Click the previous lessons hyperlink if you wish to see it.

Edit February 18, 2016: Sorry everyone, there is a change to the code which I did not include in the previous lesson. When the user selects manual from book on the new game dialog the following code is run

if Choice = "Manual Enter from Book" then
    pt="W"
   script_play("StartNewPuzzle")
   script_play("ManualPuzzleDialog")
    goto assign   
end if

This code branches to the go to label assign. Here is the change.

assign:
tbl = table.open("sudokupuzzlesolver")
tbl.change_begin()
tbl.cl1 = "1"
tbl.Cl2 = "2"
tbl.Cl3 = "3"
tbl.cl4 = "4"
tbl.cl5 = "5"
tbl.cl6 = "6"
tbl.cl7 = "7"
tbl.cl8 = "8"
tbl.cl9 = "9"
tbl.Vl1 = 9
tbl.vl2 = 8
tbl.Vl3 = 7
tbl.vl4 = 6
tbl.Vl5 = 1
tbl.vl6 = 2
tbl.vl7 = 3
tbl.Vl8 = 4
tbl.vl9 = 5
tbl.change_end(.t.)
tbl.close()
sys_send_keys("{F5}")

ui_freeze(.f.)
form.load("PuzzleCreator","dialog","","right","middle")
PuzzleCreator.Activate()
PuzzleCreator.Show()
PuzzleCreator.close()
xbasic_wait_for_idle()
script_play("BuildRandomGame")

Notice when I call the PuzzleCreator form I am loading it as a dialog. This insures the action must be complete before the user can continue. When the form is closed, the Build Random Game runs and all is good.  This is the end of the edit

Your Saved Puzzles:

This procedure is also the same but includes one additional step.

When Your Saved Puzzles is clicked the user is presented with a pick list dialog of saved games.

Your Saved Game Dialog

If the user clicks cancel they are returned to the previous screen and nothing has changed. If they select from the list that game is appended from the saved game table into the solver table. The clues are reset as they initially were and the user then clicks Lock Cells and Fill in Block Values to start play. Here is the code starting with the dialog.

The first code is on the New Game Button and is run when the user selects Your Saved Puzzles

if Choice = "Your Saved Puzzles" then
    pt = "W"
    script_play("playYourSavedPuzzle")
    if spuzzle = "" then
        goto nogame
    end if
    script_play("StartNewPuzzle")
    script_play("BuildRandomGame")
    goto assign   
end if
nogame:
End

Again the code which runs after the goto label assign has already been reviewed so click the hyperlink above if you need to review it.

Lets look the script “playYourSavedPuzzle”.

DIM SHARED spuzzle as C
DIM SHARED varC_result as C
auto_list_spuzzle = table.external_record_content_get("savedpuzzles","Date+\" \"+Comments","","")
Dim format as p 
Format.tab_stops=""
'Apply 'owner draw' formatting information to the list
auto_list_spuzzle = a5_owner_draw_list_fmt(auto_list_spuzzle,Format)
        
temp_count = w_count(auto_list_spuzzle,crlf())
DELETE a_spuzzle
DIM a_spuzzle[temp_count] as c
a_spuzzle.initialize(auto_list_spuzzle)
heading_string = "Select a saved puzzle from the list below."
ok_button_label = "&Continue"
cancel_button_label = "&Cancel"
varC_result = ui_dlg_box("SelectPuzzleDialog",<<%dlg%
{region}
{text=115,1:heading_string};
{endregion};
{region}
[%d;O={@@}%.100,5spuzzle^#a_spuzzle];
{endregion};
{line=1,0};
{region}
<*15=ok_button_label!OK> <15=cancel_button_label!CANCEL>
{endregion};
%dlg%,<<%code%
if a_dlg_button = "CANCEL" then
    spuzzle =  ""
end if
%code%)
if spuzzle = "" then
    End
else
    DIM Append as P
    
    
    a_tbl = table.open("sudokupuzzlesolver")
    append.t_db = "savedpuzzles.dbf"
    append.m_key = "Id"
    append.t_key = "Id"
    append.m_filter = ""
    append.t_filter = "Date+\" \"+Comments = Var->spuzzle"
    append.type = "Unique, replace existing"
    append.m_count = 183
    append.m_case1 = "EITHER"
    append.m_field1 = "ID"
    append.m_exp1 = "@savedpuzzles->ID"
    append.m_case2 = "EITHER"
    append.m_field2 = "CREATED_DATE"
    append.m_exp2 = "Date()"
    append.m_case3 = "EITHER"
    append.m_field3 = "COMMENTS"
    append.m_exp3 = "@savedpuzzles->COMMENTS"
    append.m_case4 = "EITHER"
    append.m_field4 = "B1S1"
    append.m_exp4 = "@savedpuzzles->B1S1"
    append.m_case5 = "EITHER"
    append.m_field5 = "B1S2"
    append.m_exp5 = "@savedpuzzles->B1S2"
    append.m_case6 = "EITHER"
    append.m_field6 = "B1S3"
    append.m_exp6 = "@savedpuzzles->B1S3"
    append.m_case7 = "EITHER"
    append.m_field7 = "B1S4"
    append.m_exp7 = "@savedpuzzles->B1S4"
    append.m_case8 = "EITHER"
    append.m_field8 = "B1S5"
    append.m_exp8 = "@savedpuzzles->B1S5"
    append.m_case9 = "EITHER"
    append.m_field9 = "B1S6"
    append.m_exp9 = "@savedpuzzles->B1S6"
    append.m_case10 = "EITHER"
    append.m_field10 = "B1S7"
    append.m_exp10 = "@savedpuzzles->B1S7"
    append.m_case11 = "EITHER"
    append.m_field11 = "B1S8"
    append.m_exp11 = "@savedpuzzles->B1S8"
    append.m_case12 = "EITHER"
    append.m_field12 = "B1S9"
    append.m_exp12 = "@savedpuzzles->B1S9"
    append.m_case13 = "EITHER"
    append.m_field13 = "B2S1"
    append.m_exp13 = "@savedpuzzles->B2S1"
    append.m_case14 = "EITHER"
    append.m_field14 = "B2S2"
    append.m_exp14 = "@savedpuzzles->B2S2"
    append.m_case15 = "EITHER"
    append.m_field15 = "B2S3"
    append.m_exp15 = "@savedpuzzles->B2S3"
    append.m_case16 = "EITHER"
    append.m_field16 = "B2S4"
    append.m_exp16 = "@savedpuzzles->B2S4"
    append.m_case17 = "EITHER"
    append.m_field17 = "B2S5"
    append.m_exp17 = "@savedpuzzles->B2S5"
    append.m_case18 = "EITHER"
    append.m_field18 = "B2S6"
    append.m_exp18 = "@savedpuzzles->B2S6"
    append.m_case19 = "EITHER"
    append.m_field19 = "B2S7"
    append.m_exp19 = "@savedpuzzles->B2S7"
    append.m_case20 = "EITHER"
    append.m_field20 = "B2S8"
    append.m_exp20 = "@savedpuzzles->B2S8"
    append.m_case21 = "EITHER"
    append.m_field21 = "B2S9"
    append.m_exp21 = "@savedpuzzles->B2S9"
    append.m_case22 = "EITHER"
    append.m_field22 = "B3S1"
    append.m_exp22 = "@savedpuzzles->B3S1"
    append.m_case23 = "EITHER"
    append.m_field23 = "B3S2"
    append.m_exp23 = "@savedpuzzles->B3S2"
    append.m_case24 = "EITHER"
    append.m_field24 = "B3S3"
    append.m_exp24 = "@savedpuzzles->B3S3"
    append.m_case25 = "EITHER"
    append.m_field25 = "B3S4"
    append.m_exp25 = "@savedpuzzles->B3S4"
    append.m_case26 = "EITHER"
    append.m_field26 = "B3S5"
    append.m_exp26 = "@savedpuzzles->B3S5"
    append.m_case27 = "EITHER"
    append.m_field27 = "B3S6"
    append.m_exp27 = "@savedpuzzles->B3S6"
    append.m_case28 = "EITHER"
    append.m_field28 = "B3S7"
    append.m_exp28 = "@savedpuzzles->B3S7"
    append.m_case29 = "EITHER"
    append.m_field29 = "B3S8"
    append.m_exp29 = "@savedpuzzles->B3S8"
    append.m_case30 = "EITHER"
    append.m_field30 = "B3S9"
    append.m_exp30 = "@savedpuzzles->B3S9"
    append.m_case31 = "EITHER"
    append.m_field31 = "B4S1"
    append.m_exp31 = "@savedpuzzles->B4S1"
    append.m_case32 = "EITHER"
    append.m_field32 = "B4S2"
    append.m_exp32 = "@savedpuzzles->B4S2"
    append.m_case33 = "EITHER"
    append.m_field33 = "B4S3"
    append.m_exp33 = "@savedpuzzles->B4S3"
    append.m_case34 = "EITHER"
    append.m_field34 = "B4S4"
    append.m_exp34 = "@savedpuzzles->B4S4"
    append.m_case35 = "EITHER"
    append.m_field35 = "B4S5"
    append.m_exp35 = "@savedpuzzles->B4S5"
    append.m_case36 = "EITHER"
    append.m_field36 = "B4S6"
    append.m_exp36 = "@savedpuzzles->B4S6"
    append.m_case37 = "EITHER"
    append.m_field37 = "B4S7"
    append.m_exp37 = "@savedpuzzles->B4S7"
    append.m_case38 = "EITHER"
    append.m_field38 = "B4S8"
    append.m_exp38 = "@savedpuzzles->B4S8"
    append.m_case39 = "EITHER"
    append.m_field39 = "B4S9"
    append.m_exp39 = "@savedpuzzles->B4S9"
    append.m_case40 = "EITHER"
    append.m_field40 = "B5S1"
    append.m_exp40 = "@savedpuzzles->B5S1"
    append.m_case41 = "EITHER"
    append.m_field41 = "B5S2"
    append.m_exp41 = "@savedpuzzles->B5S2"
    append.m_case42 = "EITHER"
    append.m_field42 = "B5S3"
    append.m_exp42 = "@savedpuzzles->B5S3"
    append.m_case43 = "EITHER"
    append.m_field43 = "B5S4"
    append.m_exp43 = "@savedpuzzles->B5S4"
    append.m_case44 = "EITHER"
    append.m_field44 = "B5S5"
    append.m_exp44 = "@savedpuzzles->B5S5"
    append.m_case45 = "EITHER"
    append.m_field45 = "B5S6"
    append.m_exp45 = "@savedpuzzles->B5S6"
    append.m_case46 = "EITHER"
    append.m_field46 = "B5S7"
    append.m_exp46 = "@savedpuzzles->B5S7"
    append.m_case47 = "EITHER"
    append.m_field47 = "B5S8"
    append.m_exp47 = "@savedpuzzles->B5S8"
    append.m_case48 = "EITHER"
    append.m_field48 = "B5S9"
    append.m_exp48 = "@savedpuzzles->B5S9"
    append.m_case49 = "EITHER"
    append.m_field49 = "B6S1"
    append.m_exp49 = "@savedpuzzles->B6S1"
    append.m_case50 = "EITHER"
    append.m_field50 = "B6S2"
    append.m_exp50 = "@savedpuzzles->B6S2"
    append.m_case51 = "EITHER"
    append.m_field51 = "B6S3"
    append.m_exp51 = "@savedpuzzles->B6S3"
    append.m_case52 = "EITHER"
    append.m_field52 = "B6S4"
    append.m_exp52 = "@savedpuzzles->B6S4"
    append.m_case53 = "EITHER"
    append.m_field53 = "B6S5"
    append.m_exp53 = "@savedpuzzles->B6S5"
    append.m_case54 = "EITHER"
    append.m_field54 = "B6S6"
    append.m_exp54 = "@savedpuzzles->B6S6"
    append.m_case55 = "EITHER"
    append.m_field55 = "B6S7"
    append.m_exp55 = "@savedpuzzles->B6S7"
    append.m_case56 = "EITHER"
    append.m_field56 = "B6S8"
    append.m_exp56 = "@savedpuzzles->B6S8"
    append.m_case57 = "EITHER"
    append.m_field57 = "B6S9"
    append.m_exp57 = "@savedpuzzles->B6S9"
    append.m_case58 = "EITHER"
    append.m_field58 = "B7S1"
    append.m_exp58 = "@savedpuzzles->B7S1"
    append.m_case59 = "EITHER"
    append.m_field59 = "B7S2"
    append.m_exp59 = "@savedpuzzles->B7S2"
    append.m_case60 = "EITHER"
    append.m_field60 = "B7S3"
    append.m_exp60 = "@savedpuzzles->B7S3"
    append.m_case61 = "EITHER"
    append.m_field61 = "B7S4"
    append.m_exp61 = "@savedpuzzles->B7S4"
    append.m_case62 = "EITHER"
    append.m_field62 = "B7S5"
    append.m_exp62 = "@savedpuzzles->B7S5"
    append.m_case63 = "EITHER"
    append.m_field63 = "B7S6"
    append.m_exp63 = "@savedpuzzles->B7S6"
    append.m_case64 = "EITHER"
    append.m_field64 = "B7S7"
    append.m_exp64 = "@savedpuzzles->B7S7"
    append.m_case65 = "EITHER"
    append.m_field65 = "B7S8"
    append.m_exp65 = "@savedpuzzles->B7S8"
    append.m_case66 = "EITHER"
    append.m_field66 = "B7S9"
    append.m_exp66 = "@savedpuzzles->B7S9"
    append.m_case67 = "EITHER"
    append.m_field67 = "B8S1"
    append.m_exp67 = "@savedpuzzles->B8S1"
    append.m_case68 = "EITHER"
    append.m_field68 = "B8S2"
    append.m_exp68 = "@savedpuzzles->B8S2"
    append.m_case69 = "EITHER"
    append.m_field69 = "B8S3"
    append.m_exp69 = "@savedpuzzles->B8S3"
    append.m_case70 = "EITHER"
    append.m_field70 = "B8S4"
    append.m_exp70 = "@savedpuzzles->B8S4"
    append.m_case71 = "EITHER"
    append.m_field71 = "B8S5"
    append.m_exp71 = "@savedpuzzles->B8S5"
    append.m_case72 = "EITHER"
    append.m_field72 = "B8S6"
    append.m_exp72 = "@savedpuzzles->B8S6"
    append.m_case73 = "EITHER"
    append.m_field73 = "B8S7"
    append.m_exp73 = "@savedpuzzles->B8S7"
    append.m_case74 = "EITHER"
    append.m_field74 = "B8S8"
    append.m_exp74 = "@savedpuzzles->B8S8"
    append.m_case75 = "EITHER"
    append.m_field75 = "B8S9"
    append.m_exp75 = "@savedpuzzles->B8S9"
    append.m_case76 = "EITHER"
    append.m_field76 = "B9S1"
    append.m_exp76 = "@savedpuzzles->B9S1"
    append.m_case77 = "EITHER"
    append.m_field77 = "B9S2"
    append.m_exp77 = "@savedpuzzles->B9S2"
    append.m_case78 = "EITHER"
    append.m_field78 = "B9S3"
    append.m_exp78 = "@savedpuzzles->B9S3"
    append.m_case79 = "EITHER"
    append.m_field79 = "B9S4"
    append.m_exp79 = "@savedpuzzles->B9S4"
    append.m_case80 = "EITHER"
    append.m_field80 = "B9S5"
    append.m_exp80 = "@savedpuzzles->B9S5"
    append.m_case81 = "EITHER"
    append.m_field81 = "B9S6"
    append.m_exp81 = "@savedpuzzles->B9S6"
    append.m_case82 = "EITHER"
    append.m_field82 = "B9S7"
    append.m_exp82 = "@savedpuzzles->B9S7"
    append.m_case83 = "EITHER"
    append.m_field83 = "B9S8"
    append.m_exp83 = "@savedpuzzles->B9S8"
    append.m_case84 = "EITHER"
    append.m_field84 = "B9S9"
    append.m_exp84 = "@savedpuzzles->B9S9"
    append.m_case85 = "EITHER"
    append.m_field85 = "B1S1V"
    append.m_exp85 = "@savedpuzzles->B1S1V"
    append.m_case86 = "EITHER"
    append.m_field86 = "B1S2V"
    append.m_exp86 = "@savedpuzzles->B1S2V"
    append.m_case87 = "EITHER"
    append.m_field87 = "B1S3V"
    append.m_exp87 = "@savedpuzzles->B1S3V"
    append.m_case88 = "EITHER"
    append.m_field88 = "B1S4V"
    append.m_exp88 = "@savedpuzzles->B1S4V"
    append.m_case89 = "EITHER"
    append.m_field89 = "B1S5V"
    append.m_exp89 = "@savedpuzzles->B1S5V"
    append.m_case90 = "EITHER"
    append.m_field90 = "B1S6V"
    append.m_exp90 = "@savedpuzzles->B1S6V"
    append.m_case91 = "EITHER"
    append.m_field91 = "B1S7V"
    append.m_exp91 = "@savedpuzzles->B1S7V"
    append.m_case92 = "EITHER"
    append.m_field92 = "B1S8V"
    append.m_exp92 = "@savedpuzzles->B1S8V"
    append.m_case93 = "EITHER"
    append.m_field93 = "B1S9V"
    append.m_exp93 = "@savedpuzzles->B1S9V"
    append.m_case94 = "EITHER"
    append.m_field94 = "B2S1V"
    append.m_exp94 = "@savedpuzzles->B2S1V"
    append.m_case95 = "EITHER"
    append.m_field95 = "B2S2V"
    append.m_exp95 = "@savedpuzzles->B2S2V"
    append.m_case96 = "EITHER"
    append.m_field96 = "B2S3V"
    append.m_exp96 = "@savedpuzzles->B2S3V"
    append.m_case97 = "EITHER"
    append.m_field97 = "B2S4V"
    append.m_exp97 = "@savedpuzzles->B2S4V"
    append.m_case98 = "EITHER"
    append.m_field98 = "B2S5V"
    append.m_exp98 = "@savedpuzzles->B2S5V"
    append.m_case99 = "EITHER"
    append.m_field99 = "B2S6V"
    append.m_exp99 = "@savedpuzzles->B2S6V"
    append.m_case100 = "EITHER"
    append.m_field100 = "B2S7V"
    append.m_exp100 = "@savedpuzzles->B2S7V"
    append.m_case101 = "EITHER"
    append.m_field101 = "B2S8V"
    append.m_exp101 = "@savedpuzzles->B2S8V"
    append.m_case102 = "EITHER"
    append.m_field102 = "B2S9V"
    append.m_exp102 = "@savedpuzzles->B2S9V"
    append.m_case103 = "EITHER"
    append.m_field103 = "B3S1V"
    append.m_exp103 = "@savedpuzzles->B3S1V"
    append.m_case104 = "EITHER"
    append.m_field104 = "B3S2V"
    append.m_exp104 = "@savedpuzzles->B3S2V"
    append.m_case105 = "EITHER"
    append.m_field105 = "B3S3V"
    append.m_exp105 = "@savedpuzzles->B3S3V"
    append.m_case106 = "EITHER"
    append.m_field106 = "B3S4V"
    append.m_exp106 = "@savedpuzzles->B3S4V"
    append.m_case107 = "EITHER"
    append.m_field107 = "B3S5V"
    append.m_exp107 = "@savedpuzzles->B3S5V"
    append.m_case108 = "EITHER"
    append.m_field108 = "B3S6V"
    append.m_exp108 = "@savedpuzzles->B3S6V"
    append.m_case109 = "EITHER"
    append.m_field109 = "B3S7V"
    append.m_exp109 = "@savedpuzzles->B3S7V"
    append.m_case110 = "EITHER"
    append.m_field110 = "B3S8V"
    append.m_exp110 = "@savedpuzzles->B3S8V"
    append.m_case111 = "EITHER"
    append.m_field111 = "B3S9V"
    append.m_exp111 = "@savedpuzzles->B3S9V"
    append.m_case112 = "EITHER"
    append.m_field112 = "B4S1V"
    append.m_exp112 = "@savedpuzzles->B4S1V"
    append.m_case113 = "EITHER"
    append.m_field113 = "B4S2V"
    append.m_exp113 = "@savedpuzzles->B4S2V"
    append.m_case114 = "EITHER"
    append.m_field114 = "B4S3V"
    append.m_exp114 = "@savedpuzzles->B4S3V"
    append.m_case115 = "EITHER"
    append.m_field115 = "B4S4V"
    append.m_exp115 = "@savedpuzzles->B4S4V"
    append.m_case116 = "EITHER"
    append.m_field116 = "B4S5V"
    append.m_exp116 = "@savedpuzzles->B4S5V"
    append.m_case117 = "EITHER"
    append.m_field117 = "B4S6V"
    append.m_exp117 = "@savedpuzzles->B4S6V"
    append.m_case118 = "EITHER"
    append.m_field118 = "B4S7V"
    append.m_exp118 = "@savedpuzzles->B4S7V"
    append.m_case119 = "EITHER"
    append.m_field119 = "B4S8V"
    append.m_exp119 = "@savedpuzzles->B4S8V"
    append.m_case120 = "EITHER"
    append.m_field120 = "B4S9V"
    append.m_exp120 = "@savedpuzzles->B4S9V"
    append.m_case121 = "EITHER"
    append.m_field121 = "B5S1V"
    append.m_exp121 = "@savedpuzzles->B5S1V"
    append.m_case122 = "EITHER"
    append.m_field122 = "B5S2V"
    append.m_exp122 = "@savedpuzzles->B5S2V"
    append.m_case123 = "EITHER"
    append.m_field123 = "B5S3V"
    append.m_exp123 = "@savedpuzzles->B5S3V"
    append.m_case124 = "EITHER"
    append.m_field124 = "B5S4V"
    append.m_exp124 = "@savedpuzzles->B5S4V"
    append.m_case125 = "EITHER"
    append.m_field125 = "B5S5V"
    append.m_exp125 = "@savedpuzzles->B5S5V"
    append.m_case126 = "EITHER"
    append.m_field126 = "B5S6V"
    append.m_exp126 = "@savedpuzzles->B5S6V"
    append.m_case127 = "EITHER"
    append.m_field127 = "B5S7V"
    append.m_exp127 = "@savedpuzzles->B5S7V"
    append.m_case128 = "EITHER"
    append.m_field128 = "B5S8V"
    append.m_exp128 = "@savedpuzzles->B5S8V"
    append.m_case129 = "EITHER"
    append.m_field129 = "B5S9V"
    append.m_exp129 = "@savedpuzzles->B5S9V"
    append.m_case130 = "EITHER"
    append.m_field130 = "B6S1V"
    append.m_exp130 = "@savedpuzzles->B6S1V"
    append.m_case131 = "EITHER"
    append.m_field131 = "B6S2V"
    append.m_exp131 = "@savedpuzzles->B6S2V"
    append.m_case132 = "EITHER"
    append.m_field132 = "B6S3V"
    append.m_exp132 = "@savedpuzzles->B6S3V"
    append.m_case133 = "EITHER"
    append.m_field133 = "B6S4V"
    append.m_exp133 = "@savedpuzzles->B6S4V"
    append.m_case134 = "EITHER"
    append.m_field134 = "B6S5V"
    append.m_exp134 = "@savedpuzzles->B6S5V"
    append.m_case135 = "EITHER"
    append.m_field135 = "B6S6V"
    append.m_exp135 = "@savedpuzzles->B6S6V"
    append.m_case136 = "EITHER"
    append.m_field136 = "B6S7V"
    append.m_exp136 = "@savedpuzzles->B6S7V"
    append.m_case137 = "EITHER"
    append.m_field137 = "B6S8V"
    append.m_exp137 = "@savedpuzzles->B6S8V"
    append.m_case138 = "EITHER"
    append.m_field138 = "B6S9V"
    append.m_exp138 = "@savedpuzzles->B6S9V"
    append.m_case139 = "EITHER"
    append.m_field139 = "B7S1V"
    append.m_exp139 = "@savedpuzzles->B7S1V"
    append.m_case140 = "EITHER"
    append.m_field140 = "B7S2V"
    append.m_exp140 = "@savedpuzzles->B7S2V"
    append.m_case141 = "EITHER"
    append.m_field141 = "B7S3V"
    append.m_exp141 = "@savedpuzzles->B7S3V"
    append.m_case142 = "EITHER"
    append.m_field142 = "B7S4V"
    append.m_exp142 = "@savedpuzzles->B7S4V"
    append.m_case143 = "EITHER"
    append.m_field143 = "B7S5V"
    append.m_exp143 = "@savedpuzzles->B7S5V"
    append.m_case144 = "EITHER"
    append.m_field144 = "B7S6V"
    append.m_exp144 = "@savedpuzzles->B7S6V"
    append.m_case145 = "EITHER"
    append.m_field145 = "B7S7V"
    append.m_exp145 = "@savedpuzzles->B7S7V"
    append.m_case146 = "EITHER"
    append.m_field146 = "B7S8V"
    append.m_exp146 = "@savedpuzzles->B7S8V"
    append.m_case147 = "EITHER"
    append.m_field147 = "B7S9V"
    append.m_exp147 = "@savedpuzzles->B7S9V"
    append.m_case148 = "EITHER"
    append.m_field148 = "B8S1V"
    append.m_exp148 = "@savedpuzzles->B8S1V"
    append.m_case149 = "EITHER"
    append.m_field149 = "B8S2V"
    append.m_exp149 = "@savedpuzzles->B8S2V"
    append.m_case150 = "EITHER"
    append.m_field150 = "B8S3V"
    append.m_exp150 = "@savedpuzzles->B8S3V"
    append.m_case151 = "EITHER"
    append.m_field151 = "B8S4V"
    append.m_exp151 = "@savedpuzzles->B8S4V"
    append.m_case152 = "EITHER"
    append.m_field152 = "B8S5V"
    append.m_exp152 = "@savedpuzzles->B8S5V"
    append.m_case153 = "EITHER"
    append.m_field153 = "B8S6V"
    append.m_exp153 = "@savedpuzzles->B8S6V"
    append.m_case154 = "EITHER"
    append.m_field154 = "B8S7V"
    append.m_exp154 = "@savedpuzzles->B8S7V"
    append.m_case155 = "EITHER"
    append.m_field155 = "B8S8V"
    append.m_exp155 = "@savedpuzzles->B8S8V"
    append.m_case156 = "EITHER"
    append.m_field156 = "B8S9V"
    append.m_exp156 = "@savedpuzzles->B8S9V"
    append.m_case157 = "EITHER"
    append.m_field157 = "B9S1V"
    append.m_exp157 = "@savedpuzzles->B9S1V"
    append.m_case158 = "EITHER"
    append.m_field158 = "B9S2V"
    append.m_exp158 = "@savedpuzzles->B9S2V"
    append.m_case159 = "EITHER"
    append.m_field159 = "B9S3V"
    append.m_exp159 = "@savedpuzzles->B9S3V"
    append.m_case160 = "EITHER"
    append.m_field160 = "B9S4V"
    append.m_exp160 = "@savedpuzzles->B9S4V"
    append.m_case161 = "EITHER"
    append.m_field161 = "B9S5V"
    append.m_exp161 = "@savedpuzzles->B9S5V"
    append.m_case162 = "EITHER"
    append.m_field162 = "B9S6V"
    append.m_exp162 = "@savedpuzzles->B9S6V"
    append.m_case163 = "EITHER"
    append.m_field163 = "B9S7V"
    append.m_exp163 = "@savedpuzzles->B9S7V"
    append.m_case164 = "EITHER"
    append.m_field164 = "B9S8V"
    append.m_exp164 = "@savedpuzzles->B9S8V"
    append.m_case165 = "EITHER"
    append.m_field165 = "B9S9V"
    append.m_exp165 = "@savedpuzzles->B9S9V"
    append.m_case166 = "EITHER"
    append.m_field166 = "CL1"
    append.m_exp166 = "@savedpuzzles->CL1"
    append.m_case167 = "EITHER"
    append.m_field167 = "CL2"
    append.m_exp167 = "@savedpuzzles->CL2"
    append.m_case168 = "EITHER"
    append.m_field168 = "CL3"
    append.m_exp168 = "@savedpuzzles->CL3"
    append.m_case169 = "EITHER"
    append.m_field169 = "CL4"
    append.m_exp169 = "@savedpuzzles->CL4"
    append.m_case170 = "EITHER"
    append.m_field170 = "CL5"
    append.m_exp170 = "@savedpuzzles->CL5"
    append.m_case171 = "EITHER"
    append.m_field171 = "CL6"
    append.m_exp171 = "@savedpuzzles->CL6"
    append.m_case172 = "EITHER"
    append.m_field172 = "CL7"
    append.m_exp172 = "@savedpuzzles->CL7"
    append.m_case173 = "EITHER"
    append.m_field173 = "CL8"
    append.m_exp173 = "@savedpuzzles->CL8"
    append.m_case174 = "EITHER"
    append.m_field174 = "CL9"
    append.m_exp174 = "@savedpuzzles->CL9"
    append.m_case175 = "EITHER"
    append.m_field175 = "VL1"
    append.m_exp175 = "@savedpuzzles->VL1"
    append.m_case176 = "EITHER"
    append.m_field176 = "VL2"
    append.m_exp176 = "@savedpuzzles->VL2"
    append.m_case177 = "EITHER"
    append.m_field177 = "VL3"
    append.m_exp177 = "@savedpuzzles->VL3"
    append.m_case178 = "EITHER"
    append.m_field178 = "VL4"
    append.m_exp178 = "@savedpuzzles->VL4"
    append.m_case179 = "EITHER"
    append.m_field179 = "VL5"
    append.m_exp179 = "@savedpuzzles->VL5"
    append.m_case180 = "EITHER"
    append.m_field180 = "VL6"
    append.m_exp180 = "@savedpuzzles->VL6"
    append.m_case181 = "EITHER"
    append.m_field181 = "VL7"
    append.m_exp181 = "@savedpuzzles->VL7"
    append.m_case182 = "EITHER"
    append.m_field182 = "VL8"
    append.m_exp182 = "@savedpuzzles->VL8"
    append.m_case183 = "EITHER"
    append.m_field183 = "VL9"
    append.m_exp183 = "@savedpuzzles->VL9"
    append.t_count = 0
    a_tbl.append()
    a_tbl.close()
end if

 

It starts with our pick list dialog. I created this list using the xBasic genie for creating a dialog box. You will find it is very easy to follow the on screen prompts provided by Alpha Software. If the user clicks CANCEL our variable spuzzle is set to nul and the script ends otherwise it  runs our append operation. Here, I used the Append Operation genie to build my append then used the toolbar button to convert it to xBasic. Copied the provided code and pasted it into my script.

Our next lesson was prompted by my granddaughter. She recently came by all excited because she got a rubix cube. She is now at the age where curiosity and problem solving are high on her agenda. Her mom, my daughter told her I solved the rubix cube when it first came out so she wanted me to help her. I told her she could find solutions on the web and she stated they were confusing and did not work for her. I went to the internet and watched a few of the video’s myself and saw her problem. These video’s state one thing and do another, so if you know the  working of the cube you can see the steps they did not make clear and then solve your puzzle, but if you are not already an expert, their offered solution most likely will not work for you. So I decided to write a program to help her.

TCMagicCube-01

In our next few lessons we will look at the code necessary to emulate the movements of the cube and how to track solutions. I hope all of you will join us and follow along.