用VBA做一个儿童识字,数字考察游戏(持续更新中)

92 篇文章 53 订阅

 

目的?

  • 如何让孩子觉得有意思呢?
  • 促进学习
  • 促进孩子思考
  • 让孩子不死记硬背,而是明白数学的基本原理,记规律

 

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

 

备忘:做的时候出了很多低级错误,之后再总结学习

  • 网上找的声音方法,很多都不好用,不知道原因
  • 之后需要总结下

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值