数独库:数独Sudoku 2024-04-01 11:41:45 0 0 鸿蒙小游戏项目—数独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); } } 这段代码是本项目中非常重要的代码,他相当于整个 收藏(0)