目的?
- 如何让孩子觉得有意思呢?
- 促进学习
- 促进孩子思考
- 让孩子不死记硬背,而是明白数学的基本原理,记规律
1 第1个小游戏
数数
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim keycode(0 To 255) As Byte
GetKeyboardState keycode(0)
If keycode(38) > 127 Then '上
Range("D9") = Range("d9") + 1
ElseIf keycode(39) > 127 Then '右
ElseIf keycode(40) > 127 Then '下
If Range("d10") > 0 Then
Range("D10") = Range("d10") - 1
End If
ElseIf keycode(37) > 127 Then '左
End If
End Sub
加减法
Sub jiafa1()
Range("K9").Value = ""
Range("K9") = Range("g9") + Range("i9")
'以后还可以做打分
End Sub
Sub jianfa1()
Range("K10").Value = ""
Range("K10") = Range("g10") - Range("i10")
'以后还可以做打分
End Sub
2 第2个小游戏
设计目的
- 本来是想让孩子,形象了解,1位数,变成2位数,进而变成3位数,十位,百位进位的变化规律
- 本来只是想纯展示,让他熟悉,19后面应该是20,29后面应该是30
- 让他明白,两位数是十位上变化+ 个位上变化
表格和资源
- EXCEL原始表大概如下,可以看 sheets
- 声音资源,我现在是放在同目录下的,但是现在使用的 sndPlaySound32("绝对路径")
- 图片直接画图一下,贴到表里即可。
如果对自己插入的图片,不知道具体的图片名,可以这样遍历
Sub test101()
Dim sp As Shapes
'For Each sp In Worksheets("3位数").Shapes '不能这样遍历
For i = 1 To Worksheets("3位数").Shapes.Count
Debug.Print Worksheets("3位数").Shapes(i).Name
Next
End Sub
想达到效果
- 每次到9,19,29等会停下来,等待输入,家长可以问孩子答案,然后输入
- 输入的数字显示在灰色格子,同时判断
- 如果是对的,就会出现正确的图片和音效
- 如果是错误,就会出现错误的图片和音效
- 然后继续往下,最多到129,暂时学这么多就够了
- 可以调整,数字变化的时间间隔,实测0.7-1秒对孩子比较合适
- 以及最大的数,可以到999或更大
- 声音文件,需要写本地的绝对路径
Private Declare PtrSafe Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszName As String, ByVal uFlags As Long) As Long
Sub getShapeName()
Dim sp As Shapes
'For Each sp In Worksheets("3位数").Shapes '不能这样遍历
For i = 1 To Worksheets("3位数").Shapes.Count
Debug.Print Worksheets("3位数").Shapes(i).Name
Next
End Sub
Sub 自动显示3位数8()
Dim t1
Range("D8:f8") = ""
Count = 0
countT = 0
countF = 0
t1 = Timer
Range("e14") = ""
Range("e16") = ""
Worksheets("3位数").Shapes("Picture 2").Visible = False
Worksheets("3位数").Shapes("Picture 3").Visible = False
Worksheets("3位数").Shapes("Picture 4").Visible = False
Worksheets("3位数").Shapes("Picture 5").Visible = False
Do While Count < 130
If Timer - t1 > 0.2 Then
If Len(Count) = 1 Then
Range("f8") = Right(Count, 1)
ElseIf Len(Count) = 2 Then
Range("f8") = Right(Count, 1)
Range("E8") = Left(Count, 1)
ElseIf Len(Count) = 3 Then
Range("f8") = Right(Count, 1)
Range("E8") = Mid(Count, 2, 1)
Range("d8") = Left(Count, 1)
End If
If Right(Count, 1) = 9 Then
Call sndPlaySound32("F:\cowork\俄罗斯方块\start1.wav", 0&)
x = InputBox("下一个数字是几?")
'之后还需要严格判断 输入的内容是否正确,否则输入不合规或不输入会报错,还需要处理
Range("e14") = CInt(x)
If CInt(x) = CInt(Count + 1) Then
Debug.Print "CInt(x)= " & CInt(x)
Debug.Print "Count + 1= " & Count + 1
Worksheets("3位数").Shapes("Picture 5").Visible = True
Worksheets("3位数").Shapes("Picture 4").Visible = False
Call sndPlaySound32("F:\cowork\俄罗斯方块\true1.wav", 0&)
countT = countT + 1
Range("E16") = countT
Else
Worksheets("3位数").Shapes("Picture 5").Visible = False
Worksheets("3位数").Shapes("Picture 4").Visible = True
Call sndPlaySound32("F:\cowork\俄罗斯方块\false2.wav", 0&)
countF = countF + 1
End If
End If
Count = Count + 1
t1 = Timer
End If
DoEvents
Loop
Call sndPlaySound32("F:\cowork\俄罗斯方块\true2.wav", 0&)
End Sub
备忘:做的时候出了很多低级错误,之后再总结学习
- 网上找的声音方法,很多都不好用,不知道原因
- 之后需要总结下