65.9K
CodeProject 正在变化。 阅读更多。
Home

算盘 - 珠算脑

starIconstarIconstarIconstarIconstarIcon

5.00/5 (10投票s)

2023年3月7日

CPOL

2分钟阅读

viewsIcon

7357

downloadIcon

249

实用的算盘应用 - 计算器和玩具

引言

算盘的起源已不可考,但它在东亚已被使用数千年。这个应用程序重现了中国算盘,被称为suanpan,可以用作高效的计算器,或者作为挑战和精神锻炼的练习。

应用程序

在上面的屏幕截图中,该应用程序处于计算器模式,如红/黄色按钮中心右侧所示,并且已移动珠子的值相当于1400

在下面的屏幕截图中,该应用程序处于练习模式,用户需要从运行总计中加/减一个随机值。

  • 按下练习/计算器按钮以切换模式。
  • 按下重置按钮以重置为零(计算器)或重置为上次运行总计(练习)
  • 点击珠子以沿各自的杆上滑动它们

这会很有趣...

代码

有两个重要的类

  1. 类AbacusBeadsRack
  2. 类Abacus_BeadsOrderOfMagnitude

AbacusBeadsRack 类

算盘的每一列(数量级)都有两个部分 - 上半部分称为“天珠”,下半部分称为“地珠”。每个部分由一个珠架组成,该珠架跟踪其自身的Max珠子数量、Value(计数珠子的数量)、eType天珠地珠)、BaseWorth

  • 类型 - 天珠 / 地珠
  • Max - 珠架中的最大珠子数量由类型决定(2 或 5)
  • Value - 当前“计数”的珠子数量
  • Base - 每个计数珠子bead1的单位值
  • Worth - Value*Base(计数珠子数量 * 珠子的基础值)

类Abacus_BeadsOrderOfMagnitude

各列分别代表一个数量级,从最低有效位(最右侧)到最高有效位(最左侧)。它们由上/下天珠地珠珠架组成。所有列的总和是算盘值,或最终总计。

SweepAndPrune(扫掠与剪枝)

DrawAbacus()方法按从右到左的顺序绘制每一列,并创建一个SweepAndPrune数据集,其中包含每个按钮的位置,在var调用cSP中。pic_MouseMove()pic_MouseClick()事件处理程序轮询 cSP,以查找鼠标位置下的元素(按钮珠子),该元素位于屏幕上的鼠标下。

历史

  • 2023年3月7日:最初发布
  • 2023年3月11日:随机数未进行种子设置 - 谜题解决方案低于零或高于 10 亿
  • 2023年3月14日 - 添加了最小尺寸,以便在最小化时销毁时不会失败 - 修复了随机练习生成器 - 添加了更好的“?”解决方案按钮
  • 2023年3月16日 - 添加了随着玩家分数增加而增加的游戏难度级别 - 改进了按钮图形
© . All rights reserved.