java 排版_Java 排版问题

展开全部

算法: 假设是一个3*3的网格. 那么就可以用二维数组来存储各个网62616964757a686964616fe59b9ee7ad9431333365656566格的颜色

343e2600d3f809732fa8ffe74309d7bf.png

假设紫色为0 ,那么二位数组就是int[][] map={{0,1,0},{2,3,4},{5,6,0}};

记忆时间完毕 ,然后颜色全部恢复成白色

9cd22a6593d1f841b264f293b0ef17d9.png

判断用户点击的位置,如果位置在紫色的上面 ,那么就可以恢复该方块的显示.

61b90474bbea9d707841b8aef9a73d17.png界面的思路一:

根据要求,可以这样设置,.比如界面设置为绝对布局,然后在同一个位置,放2个JPanel.

jp1 放在底下 , 里面显示各种颜色的圆圈

jp2 放在上面.  里面放按钮对圆圈进行遮挡,

注意一: jp1和jp2位置要相同,大小要相同,

注意二:绝对布局需要设置每个组件的大小和位置界面思路二:  [偷懒的方案]

用一个JPanel 里面填充9个按钮, 按钮都自带背景色., 然后记忆完成,按钮的背景色就清除,界面思路三: [绘图法]

在一个JPanel上绘制图形,圆形/正方形, 然后用白色填充. 记录用户点击的位置,然后判断是否点击到了正确的方块上,是就显示出来

重点代码:public void mousePressed(MouseEvent e) {

if (showMap) {

return;

}

clickTimes++;//答题次数记录 [可以添加逻辑,回答几次还没成功 就 提示 挑战失败]

//得到鼠标的点击位置

int x = e.getX();

int y = e.getY();

if (map[y / 100][x / 100] == value) { // 判断是否点击正确

score++;//得分+1

selected[y / 100][x / 100] = true;//设置为true,显示该方块

repaint();//重绘jpanel

if (score == 3) {

JOptionPane.showMessageDialog(this, "全部答对", "恭喜", JOptionPane.INFORMATION_MESSAGE);

return;

}

} else {

//System.out.println("没点击中");

}

}

效果图

a188db10990b94a174bf9a1a69e63e10.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值