Introduction
This app uses System.Speech
and System.Speech.Synthesize
namespaces. There is nothing too special with these as they have been used in a few apps here at CodeProject and a few other sites. The applications that can be thought of using System.Speech
are unimaginable. I came up with this idea from a few apps that are here at CodeProject. I ran one of the apps and my grandchildren were amazed at the computer talking. So I added their names to the program and ran it. They were surprised to hear their names. Their attention spans were as short as this >.<. Now they are not.
This app is a (CLC) Child's Learning Center and there is nothing more valuable than a child or grandchild's education. This app targets the 3 to 5 year old pre-schoolers. Some children might start to read at 2 years of age and others might start at 6 years. If your child is a little bored, stop the learning process for a couple of weeks and TRY again. Remember, children learn at their own pace.
The requirements for the app are: Children, Adobe's PDF Reader, Powerpoint viewer, both installed to their default locations, go to www.brillkids.com, to get all the PDF and Powerpoint Presentation activity sheets and visual learning tools free. This app was tested on Vista Home Basic w/SP2, .NET 3.5, Visual Studio 2008 Pro w/SP1, 1024X768, and my grandchildren.
There are many Child Learning Applications out there, but this one is Free. It works, and my grandchildren's attention spans have increased 10 fold. They interact with the computer by doing, seeing, and hearing what they have just done. Repeating the same steps, 3 times, helps the child remember.
Putting this app together was a learning process for me. I had to think of what I would like to see as a child, different colors, animal pictures, letters, numbers, pretty fruit, and the computer talking. I am by no means, a designer or a teacher, but I am someone who believes that if something works, don't Fix-It. I didn't believe it at first, this actually works.
The Design
Introduction
First was the Parent-Child interactivity mode. I added a TextBox
to hold the child's name. I then added a GroupBox
to hold five CheckBoxes
and a couple of Buttons
to display the different activities. Then I added the activity GroupBoxes
with alphabet buttons, number buttons, a few pictureBoxes and a label. Putting this all together starts the learning process.
Problems and Code Usage
I had a problem when clicking on a checkbox and checking it, then clicking on another checkbox, having it checked and the previous checkbox, unchecked, while displaying the correct groupbox for the current checkbox. Confused??? So was I after I wrote that long-winded sentence, but it makes perfectly good sense to me, now. This turned out to be somewhat simple enough without any overflow exceptions being thrown. I then added two more checkboxes to the Numbers GroupBox, using the same method, I was getting overflow exceptions. After a few trial and error attempts, I came up with these two examples:
Private Sub chkPlus_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles chkPlus.CheckedChanged
If chkPlus.Checked Then
lblSign.Text = "+"
chkMinus.Checked = False
Else
lblSign.Text = "-"
chkMinus.Checked = True
End If
End Sub
Private Sub chkMinus_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles chkMinus.CheckedChanged
If chkMinus.Checked Then
lblSign.Text = "-"
chkPlus.Checked = False
Else
lblSign.Text = "+"
chkPlus.Checked = True
End If
End Sub
Clicking on one checkbox switches from one checkbox to the other, and visa-versa.
My next problem was with the simple addition (1 + 1 = 2). I haven't been programming that long and when I typed 1 in the first textbox and 1 in the next textbox then added them together, I got 'cannot convert string to Integer'. I just forgot to convert the text numbers to integers. After all the fuss, I came up with this:
Private Sub btnPlus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnPlus.Click
ansPlus = (CInt(txtNum1.Text) + CInt(txtNum2.Text))
End Sub
Private Sub btnMinus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnMinus.Click
ansMinus = (CInt(txtNum1.Text) - CInt(txtNum2.Text))
End Sub
Private Sub btnEnter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnEnter.Click
If chkPlus.Checked Then
If CInt(txtAnswer.Text) = ansPlus Then
strSay = CInt(txtNum1.Text) & " plus " & CInt(txtNum2.Text) & _
" equals " & CInt(txtAnswer.Text)
InitializeSpeaker()
speaker.SpeakAsync(strSay)
MessageBox.Show("Correct :) " & txtName.Text)
Else
MessageBox.Show("Try Again :( " & txtName.Text)
End If
Else
If CInt(txtAnswer.Text) = ansMinus Then
strSay = CInt(txtNum1.Text) & " minus " & CInt(txtNum2.Text) & _
" equals " & CInt(txtAnswer.Text)
InitializeSpeaker()
speaker.SpeakAsync(strSay)
MessageBox.Show("Correct :) " & txtName.Text)
Else
MessageBox.Show("Try Again :( " & txtName.Text)
End If
End If
End Sub
Applying the spelling routine was pretty straight forward. I created 'wordlist.txt' file to hold all my 2 and 3 letter words, I then added a ListBox
and made it invisible as it is not used for any type of selection. I added two more buttons, btnNext
, btnPrevious
to navigate the word list in the Listbox
. Here is what I came up with that works fairly well:
Private Sub LoadListWords()
Try
Dim sr As StreamReader = New StreamReader(wordlistPath)
Do While sr.Peek() >= 0
strWord = sr.ReadLine
Me.lstWords.Items.Add(strWord)
Loop
sr.Close()
sr = Nothing
lstWords.SelectedIndex = 0
wordIndex = 0
Catch ex As Exception
MessageBox.Show("Error : " & ex.Message)
End Try
End Sub
Private Sub btnPrevious_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnPrevious.Click
If wordIndex <= 0 Then Exit Sub
lstWords.SetSelected(wordIndex, False)
wordIndex -= 1
lstWords.SetSelected(wordIndex, True)
lblSpell.Text = lstWords.SelectedItem.ToString()
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnNext.Click
If wordIndex >= lstWords.Items.Count - 1 Then Exit Sub
lstWords.SetSelected(wordIndex, False)
wordIndex += 1
lstWords.SetSelected(wordIndex, True)
lblSpell.Text = lstWords.SelectedItem.ToString()
End Sub
Private Sub btnSPClear_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSPClear.Click
strSay = ""
txtSpell.Text = ""
End Sub
Private Sub btnSPSay_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSPSay.Click
InitializeSpeaker()
speaker.SpeakAsync(strSay)
strGood = strCorrect & txtName.Text
If strSay = txtSpell.Text Then
speaker.SpeakAsync(strGood)
Else
End If
End Sub
Background
After I put everything together and got it working correctly, then came the testing. I started with my oldest granddaughter, who is 4 years old and pretty much set in her ways already. To my amazement, she took right to it. Now, when she comes over, this is the first thing she wants to do. She already knew how to sing the alphabet song so I started teaching her the letters of the alphabet with the A is For...
part of the program. Next is writing the letters. You can download all child activities from www.brillkids.com. They are free and well worth it.
History
- Date uploaded: July 9th, 2009 Version: 1.0.0.0