收藏 分销(赏)

李棋盘覆盖.doc

上传人:pc****0 文档编号:7418388 上传时间:2025-01-03 格式:DOC 页数:9 大小:170KB 下载积分:10 金币
下载 相关 举报
李棋盘覆盖.doc_第1页
第1页 / 共9页
李棋盘覆盖.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
测试09-01 540913110114 李枫 算法设计与分析实验报告 专 业: 测试技术09-01 学 号: 540913110114 姓 名: 李枫 指导老师: 宋胜利 李璞 一、实验目的与要求 1、理解算法的概念 2、实现棋盘化以及“L”型棋盘覆盖 二、实验流程:  1、编程任务:设计棋盘覆盖的一个简单算法 2、输入数据:输入棋盘大小,特殊方格的行号和列号 3、结果输出:将计算结果输出显示棋盘 三、实验代码: import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.border.TitledBorder; import java.awt.*; import java.awt.event.*; public class TestChessBoard { // 变量定义部分 int title; int x; int y;// 特殊方格行列号 int Size;// 方格宽度 JLabel[][] cube;// 小方格数组 JPanel LabelPanel; JTextField size; JTextField xCount; JTextField yCount; JButton sumbit; JFrame frame; JLabel label1; Color colors[] = { Color.green, Color.BLACK, Color.BLUE, Color.cyan, Color.ORANGE, Color.PINK, Color.yellow }; int cColor = 0;// 用于colors数组计数 TestChessBoard() { title = 0; frame = new JFrame(); Container contentPane = frame.getContentPane(); contentPane.setLayout(new GridLayout(3, 1)); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(3, 2)); label1 = new JLabel("棋盘方格宽度:", JLabel.CENTER); label1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); size = new JTextField("4"); JLabel label2 = new JLabel("请输入特殊方格横坐标:", JLabel.CENTER); label2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); xCount = new JTextField("0"); JLabel label3 = new JLabel("请输入棋盘方格纵坐标:", JLabel.CENTER); label3.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); yCount = new JTextField("0"); buttonPanel.add(label1); buttonPanel.add(size); buttonPanel.add(label2); buttonPanel.add(xCount); buttonPanel.add(label3); buttonPanel.add(yCount); buttonPanel.setBorder(BorderFactory .createBevelBorder(BevelBorder.LOWERED)); cube = new JLabel[20][20]; LabelPanel = new JPanel(); LabelPanel.setLayout(new GridLayout(4, 4)); LabelPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory .createLineBorder(Color.RED, 2), "棋盘", TitledBorder.CENTER, TitledBorder.TOP)); for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) { cube[i][j] = makelabel(); LabelPanel.add(cube[i][j]); } sumbit = new JButton("点击刷新确认棋盘"); JPanel sumbitPanel = new JPanel(); sumbitPanel.add(sumbit); sumbitPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); contentPane.add(LabelPanel); contentPane.add(buttonPanel); contentPane.add(sumbitPanel); sumbit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("点击刷新确认棋盘")) { String str = new String(); str = xCount.getText(); x = Integer.parseInt(str); str = yCount.getText(); y = Integer.parseInt(str); str = size.getText(); Size = Integer.parseInt(str); LabelPanel.removeAll(); // String str=new String(); str = size.getText(); Size = Integer.parseInt(str); LabelPanel.setLayout(new GridLayout(Size, Size)); for (int i = 0; i < Size; i++) for (int j = 0; j < Size; j++) { if (i == x - 1 && j == y - 1) { cube[i][j] = makelabel(); cube[i][j].setText("特殊"); } else cube[i][j] = makelabel(); LabelPanel.add(cube[i][j]); } // cube[i-1][j-1]=makelabel(); // cube[i-1][j-1].setText("特殊"); // label1.setText(label1.getText()+"n"+"您输入的棋盘如上"); frame.pack(); frame.setBounds(new Rectangle(500, 200, 500, 400)); if (x > Size || y > Size || x <= 0 || y <= 0) { int type = JOptionPane.ERROR_MESSAGE; JOptionPane.showMessageDialog(frame, new String( “您输入的特殊方格不合法,请确认后重新输入!”, new String("Error"), type); sumbit.setText("点击刷新确认棋盘"); } else { xCount.setEditable(false); size.setEditable(false); yCount.setEditable(false); sumbit.setText("开始计算"); } } if (e.getActionCommand().equals("开始计算")) { String str = new String(); str = xCount.getText(); x = Integer.parseInt(str) - 1; str = yCount.getText(); y = Integer.parseInt(str) - 1; str = size.getText(); Size = Integer.parseInt(str); title = 0; chessBoard(0, 0, x, y, Size); cube[x][y].setOpaque(true); cube[x][y].setBackground(Color.WHITE); cube[x][y].setText("特殊"); sumbit.setText("点击刷新确认棋盘"); xCount.setEditable(true); size.setEditable(true); yCount.setEditable(true); } } }); frame.pack(); frame.setVisible(true); // frame.setSize(300, 500); frame.setBounds(new Rectangle(500, 200, 500, 400)); frame.addWindowListener(new WindowAdapter() { public void WindowClosing(WindowEvent e) { System.exit(0); } }); } void chessBoard(int tr, int tc, int dr, int dc, int size) { if (size == 1) return; int t = ++title; int s = size / 2; String str = Integer.toString(t); int ci = ((cColor++) % 7); if (dr < tr + s && dc < tc + s) { chessBoard(tr, tc, dr, dc, s); } else { cube[tr + s - 1][tc + s - 1].setOpaque(true); cube[tr + s - 1][tc + s - 1].setBackground(colors[ci]); cube[tr + s - 1][tc + s - 1].setText(str); chessBoard(tr, tc, tr + s - 1, tc + s - 1, s); } if (dr < tr + s && dc >= tc + s) { chessBoard(tr, tc + s, dr, dc, s); } else { cube[tr + s - 1][tc + s].setOpaque(true); cube[tr + s - 1][tc + s].setBackground(colors[ci]); cube[tr + s - 1][tc + s].setText(str); chessBoard(tr, tc + s, tr + s - 1, tc + s, s); } if (dr >= tr + s && dc < tc + s) { chessBoard(tr + s, tc, dr, dc, s); } else { cube[tr + s][tc + s - 1].setOpaque(true); cube[tr + s][tc + s - 1].setBackground(colors[ci]); cube[tr + s][tc + s - 1].setText(str); chessBoard(tr + s, tc, tr + s, tc + s - 1, s); } if (dr >= tr + s && dc >= tc + s) { chessBoard(tr + s, tc + s, dr, dc, s); } else { cube[tr + s][tc + s].setOpaque(true); cube[tr + s][tc + s].setBackground(colors[ci]); cube[tr + s][tc + s].setText(str); chessBoard(tr + s, tc + s, tr + s, tc + s, s); } } public JLabel makelabel() { JLabel l = new JLabel("0", JLabel.CENTER); l.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); l.setPreferredSize(new Dimension(5, 5)); return l; } public static void main(String[] argv) { new TestChessBoard(); } } 四、实验截图 实验初始截图: 非法输入截图: 正确输入后的运行截图: 9
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服