1. Show studyboardThe following subroutines use some variables. The declarations go in the Class_Globals subroutine:
When the study button is clicked the first thing we do is show the empty studyboard.
Private instrow As Int = 0 Private is_study As Boolean = False Private studypce As String
The board gets filled with empty pieces.
Private Sub show_studyboard pnlmain.RemoveAllViews For r = 0 To 7 For c = 0 To 7 Private pnl As Panel = set_panel(r,c) pnl.GetView(0).As(Label).Text = "EEE" pnlmain.AddView(pnl,30dip+(c*40dip),30dip+(r*40dip),40dip,40dip) board(r,c) = pnl.GetView(0).As(Label).Text put_bitmap_in_cell(r,c,pnl,board(r,c)) grid(r,c) = cletters.SubString2(c,c+1) & rnumbers.SubString2(r,r+1) Next Next set_sides(cnvs,tpfont) End Sub
2. Show instructionsThe taken panel (pnltaken) is used to give instructions and to present the chess pieces to select from.
Here's the code:
This is how it looks:
Private Sub show_pieces_with_instructions pnltaken.RemoveAllViews Private lbl As Label lbl.Initialize("") lbl.Text = "Select a piece and tap on a board cell" lbl.Typeface = Typeface.DEFAULT_BOLD lbl.TextSize = 18 lbl.Visible = True pnltaken.AddView(lbl,5dip,5dip+(instrow*40dip),300dip,40dip) ' black For i = 0 To 4 Dim piece As String = bpcs1.Get(i) Dim leftpos As Int = 10dip+(i*50dip) set_piece_panel_with_image(piece, leftpos,40dip) Next Dim piece As String = bpcs2.Get(0) Dim leftpos As Int = 260dip set_piece_panel_with_image(piece, leftpos,40dip) ' white For i = 0 To 4 Dim piece As String = wpcs1.Get(i) Dim leftpos As Int = 10dip+(i*50dip) set_piece_panel_with_image(piece, leftpos,90dip) Next Dim piece As String = wpcs2.Get(0) Dim leftpos As Int = 260dip set_piece_panel_with_image(piece, leftpos,90dip) Private lbl As Label lbl.Initialize("") lbl.Text = "Tap the study button to start playing." lbl.Typeface = Typeface.DEFAULT_BOLD lbl.TextSize = 18 lbl.Visible = True pnltaken.AddView(lbl,5dip,140dip,300dip,40dip) End Sub
3. Place a pieceThe piece panels are created in this subroutine:
Private Sub set_piece_panel_with_image(pce As String, lpos As Int,tpos As Int) Private pnl As Panel pnl.Initialize("pieces") pnl.Tag = pce Private lbl As Label lbl.Initialize("") lbl.Text = pce lbl.Visible = False pnl.AddView(lbl,0,0,40dip,40dip) pnltaken.AddView(pnl,lpos,tpos,40dip,40dip) Dim rect As Rect rect.Initialize(0dip,0dip,40dip,40dip) cnvscell.Initialize(pnl) cnvscell.DrawRect(rect, Colors.Black, False, 1dip) Dim bmp As Bitmap bmp.Initialize(File.DirAssets, imagemap.Get(pce)) cnvscell.DrawBitmap(bmp, Null, rect) End Sub
4. Click eventsWhen the player taps on the study button then the study board and the instructions panel are shown.
The second time the study button is clicked (is_study boolean is true) the game can be played with the board setup.
The clvinfo list is refilled and is ready to register the taken pieces and notes.
When the player taps on a piece in the instructions panel then that piece gets a blue border to indicate that its ready to be placed on the board. The variable studypce holds the piece information.
Private Sub btnstudy_Click If is_study = True Then is_study = False show_board_log fill_clvinfo btrow = 0 btcol = 0 wtrow = 2 wtcol = 0 turncolor = "white" notescnt = 1 Return End If is_study = True show_studyboard show_board_log fill_clvinfo instrow = 0 show_pieces_with_instructions End Sub
The second tap on the board is captured in the pnl_Click subroutine.
Private Sub pieces_Click Dim pnl As Panel = Sender Dim pce As String = pnl.tag Log("pieces click: " & pce) cnvscell.Initialize(pnl) show_cell_border(Colors.Blue,10dip,cnvscell) studypce = pce End Sub
Add these lines of code below the line with Log("pnl_click: " ...:
Now you are ready to make chess puzzles and try them out. Or you could find puzzles online and put them in the app for later studying.
If is_study = True Then Dim row As Int = rowcol.SubString2(0,1) Dim col As Int = rowcol.SubString(1) board(row,col) = studypce refresh_board show_pieces_with_instructions Return End If
You can play a game in several time periods and saving the state of the game each time the period stops. The next time you only need to load up the game and continue playing.
If you have a tablet then you might want to look at the screen adjustments in the next section.