当前位置: 首页 > article >正文

excel版数独游戏(已完成)

前段时间一个朋友帮那小孩解数独游戏,让我帮解,我看他用电子表格做,只能显示,不能显示重复,也没有协助解题功能,于是我说帮你做个电子表格版的“解题助手”吧,不能直接解题,但该有的辅助功能都有。于是花了两天时间,用excel的宏功能做了一个,分享出来,有爱好者可下载玩玩。

主要功能:

1、编辑数独题目,辅助解题。

2、内置100道数独题目,跟其他数独游戏一样。

下面简单介绍一下这个小游戏。

界面说明:

功能和功能与市场上一般的数独游戏没什么差别,只是多了一个自定义题目的功能,这个功能很多游戏都没有。内置题目没有答案,所以不会告诉解法对不对,其实也能做,懒的做。下面把这个游戏功能和实现方法简单讲一下。

题目显示区:这个没什么好说的,就是题目显示和解题操作区。

编辑操作区:由于要实现自定义题目,所以要有编辑功能,但在编辑的时候所有填写的数字是黑色,解题的时候显示红色,因为没有答案所以必须区分哪些是原内容,哪些是你填写的内容。所以编辑的时候要点击“编辑解锁”,才可以编辑。题目编辑完成后点击“编辑锁定”,已填写的内容为黑色且不可修改,可填写区域字体为红色。“重玩”就是把所有解题填写的内容清空,已输入的题目不动。“清空”就是把所有内容全部删除,并进入题目编辑状态。

功能实现:

锁定编辑:就是利用宏实现了电子表格的锁定功能,让编辑题目已填写的内容不可修改。

代码:

Sub 对工作表保护()
    Dim rng As Range
    Dim cell As Range
    Sheets(1).Unprotect
    Sheets(1).Cells.Locked = False
    
        
    For Each cell In Range("B2:J10")
        If cell.value <> "" And cell.Font.Color = vbBlack Then
            cell.Locked = True
        Else
            cell.Font.Color = vbRed
            
        End If
    Next
    'Range("k11:l11").Locked = True
    'Range("b11:j11").Font.Color = vbRed
    Range("b11:o11").Locked = True
    
    Sheets(1).Protect
End Sub

编辑解锁:点击后可编辑所有单元格,这个功能可用于修改编辑错误的内容。代码很简单。

Sub 解锁()
    Sheets(1).Unprotect
    Sheets(1).Cells.Locked = False

End Sub

重玩:就是将题目原有单元格保留,删除已填写内容。

Sub 重玩()
    Dim 选择 As VbMsgBoxResult
    Dim rng As Range
    Dim cell As Range
    选择 = MsgBox("重玩将删除所有已解部分?", vbInformation + vbYesNo, "警告")
    If 选择 = vbYes Then
        Call 解锁
    
        For Each cell In Range("B2:J10")
            If cell.Font.Color = vbRed Then
                cell.ClearContents
                cell.Interior.Color = vbWhite
            Else
                cell.Interior.Color = vbWhite
                cell.Locked = True
           
            End If
        Next

    End If
    Range("b11:j11").Font.Color = vbRed
    Sheets(1).Protect
End Sub

清空:清空所有内容,可重新编辑。

Sub 清空()
    Dim 选择 As VbMsgBoxResult
    选择 = MsgBox("清空所有内容,无法恢复,确定?", vbInformation + vbYesNo, "清空警告")
    If 选择 = vbYes Then
        Sheets(1).Unprotect
        Sheets(1).Cells.Locked = False
        
        Range("b2:j10").ClearContents
        Range("b2:j10").Font.Size = 18
        Range("b2:j10").Font.Color = vbBlack
        Cells.Interior.Color = vbWhite
        
    End If
    Range("b11:j11").Font.Color = vbRed
    
End Sub

填写操作区:这个就是点击单元格后,要在该单元格填写的数字,这里面每个数字功能类似。

Sub 填3()

    Dim selectedRange As Range
    Set selectedRange = Selection
    selectedRange.value = 3
    Call 完成弹窗
End Sub

辅助显示区:这个功能是点击题目上有单元格后,在题目内所有的该数字都会显示出来,起到辅助判定的目的,就像最上面的图,点击1后,题目内所有的1背景色都改为线蓝色。

Sub 查找2()
    Dim rng As Range
    Dim cell As Range
    Call 解锁
    count = 0
    Range("B2:J10").Interior.Color = vbWhite
    For Each cell In Range("B2:J10")
        If cell.value = "2" Then
            cell.Interior.Color = vbCyan
            count = count + 1
        End If
               
    Next
    If count = 9 Then
        Range("c11").Font.Color = vbWhite
    End If
    Call 对工作表保护
End Sub

完成显示区:如果哪个数字已经全部填写完成,该数字会消失。如图,所有的9个1都找到,1就不再显示。

该功能的实现是通过点击辅助显示区内的数字实现的,代码也在里面。

还有其他很多宏代码,不一一展示,需要的可自行下载研究。比较麻烦的是查重功能,就是如果同一行列宫内有数字重复,则提示,我没写出来,是通过录制宏后,研究代码后改写的。

下载链接:

https://download.csdn.net/download/kim5659/90021131


http://www.kler.cn/a/405485.html

相关文章:

  • element-plus的组件数据配置化封装 - table
  • 46并发编程(线程、进程)
  • 使用redis-shake工具进行redis的数据同步
  • 音视频pts/dts
  • 使用低成本的蓝牙HID硬件模拟鼠标和键盘来实现自动化脚本
  • 键盘上打出反引号符号(´),即单个上标的撇号(这个符号与反引号 ` 不同,反引号通常位于键盘的左上角)
  • 5种常见的k8s云原生数据管理方案详解
  • 使用uniapp编写APP的文件上传
  • 【Linux驱动开发】裸机点亮LED灯实验
  • 向量数据库FAISS之二:基础进阶版
  • c与c++比较
  • 高性能服务器模型之Reactor(单线程版本)
  • Windows电脑本地部署llamafile并接入Qwen大语言模型远程AI对话实战
  • 【高阶数据结构】图论
  • JavaScript DOM使用
  • 《Python游戏编程入门》注-第6章3
  • mysql 与 mybatis 错误记录
  • LC 543. Diameter of Binary Tree
  • 【linux】(16)date命令
  • Collecting package metadata (current_repodata.json): ...working... done
  • 【算法】计算程序执行时间(C/C++)
  • AI赋能电商:构建高效、智能化的新零售生态
  • 【ubuntu】开机进入initramfs,无法开机
  • SpringBoot中小企业人事管理系统:设计模式
  • 【unity小技巧】Unity 四叉树算法实现空间分割、物体存储并进行查询和碰撞检测
  • qt+opengl 三维物体加入摄像机