数独库:数独Sudoku

鸿蒙小游戏项目—数独Sudoku

作者:zdy

系统OpenHarmony

本期,笔者将详细介绍游戏的一个重要功能——数字填入的制作方法。

正文

本期,笔者将详细介绍游戏的一个重要功能——数字填入的制作方法。

这个功能的制作分为两部分。第一个部分是让白色的Button组件(即网格区域中的白色方格)在被用户点击的情况下能获得焦点,效果图如下:

图中橙色的格子代表这个Button组件处于焦点状态(此方

格是最后一个被用户点击的Button组件),可供用户输入数字。显然,这样做的好处在于定位用户想要交互的网格,以方便用户执行数字填入的操作。

第二个部分则是提供数字填入的按钮以及增加填入数字的逻辑代码,效果图如下:

图中,笔者先是点击了网格区域中第二行第一列的白色格子,然后再点击标有数字5的圆形按钮,于是第二行第一列的格子内便生成数字5。如果点击其他圆形按钮,那么方格内就会生成其他数字。

下面笔者将介绍具体的步骤。

让白色方格能通过点击获得焦点

首先,我们先定义一个新的ShapeElement对象,在网格区域中的某个白色的Button组件获得焦点后,这个Button组件就会使用此ShapeElement对象定义背景元素(即变成橙色):

复制

ShapeElement element1=new ShapeElement(); element1.setRgbColor(new RgbColor(255,125,0)); //将RGB的颜色设置为橙色 element1.setStroke(12,new RgbColor(0,0,0));

接着,我们先在GameAbilitySlice中找到上期写入的二重for循环的代码:

复制

for (y=0;y<6;y++){ for (x=0;x < 6; x++) { Button button = new Button(this); number=grid_c0[x][y]; string0=String.valueOf(number); button.setText(string0); button.setTextColor(Color.WHITE); button.setTextSize(75); button.setComponentSize(160, 160); button.setContentPosition(65+160* x, 230+160*y); if (number==0) { button.setText(""); button.setBackground(element0); button.setTextColor(Color.BLACK); }else{ button.setBackground(element3); } layout1.addComponent(button); } }

这段代码是本项目中非常重要的代码,他相当于整个

相关推荐

相关文章