棋盘覆盖实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析实验报告
专业:
学号:
姓名:
指导老师:
实验一:棋盘覆盖
一、实验目的与要求
1、理解算法的概念
2、实现棋盘化以及棋盘覆盖
二、实验题:
1、编程任务:设计棋盘覆盖的一个简单算法
2、输入数据:输入特殊方格的行号和特殊方格的列号以及棋盘的大小
3、结果输出:将计算结果输出显示棋盘
解:
1,实现解释。
本程序采用java实现的,要输入期盘覆盖的行数,然后随机出现一个黑色的特殊方格,然后用其他的颜色覆盖。
出现初始画面:如图:然后点击操作:
出现对话框:然后输入棋盘覆盖的行数:
输入行数,如:8,然后点击确定:运行如下
实验源码如下:
package two;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.*;
/**
*
* @author 郑金光
*/
public class FenZi {
public static void main(String args[])
{
new MyChessBoard();
}
}
class MyChessBoard extends JFrame implements ActionListener { int dimen; //棋盘规模
int x_pos; //特殊点横坐标
int y_pos; //特殊点竖坐标
Container p;
public MyChessBoard() {
super();
x_pos = 0;
y_pos = 0;
dimen = 0;
setTitle("棋盘覆盖");
setBackground(Color.YELLOW);
setBounds(300,150,510,480);
centreOnScreen();
//setResizable(false);
p = getContentPane();
JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("操作");
JMenuItem jitem1 = new JMenuItem("开始");
JMenuItem jitem2 = new JMenuItem("退出");
jm.add(jitem1);
jm.add(jitem2);
jmb.add(jm);
setJMenuBar(jmb);
jitem1.addActionListener(this);
jitem2.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void centreOnScreen() { //使窗体显示在屏幕中央
Dimension displaySize = getToolkit().getScreenSize();
Dimension winSize = getSize();
int x = (displaySize.width - winSize.width) / 2;
int y = (displaySize.height - winSize.height) / 2;
if(x < 0) {
x = 0;
}
if(y < 0) {
y = 0;
}
setLocation(x, y);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="退出") {
System.exit(0);
}
else if(e.getActionCommand()=="开始") {
//在此输入方阵大小
JOptionPane jop = new JOptionPane();
jop.setV isible(true);
do{
dimen = Integer.parseInt(JOptionPane.showInputDialog(p,"输入方阵的行数:","输入棋盘的行数:(提示是2的指数)",RMA TION_MESSAGE));
if(dimen/2==0)
dimen=Integer.parseInt(JOptionPane.showInputDialog(p,"请你重新输入:","输入棋盘的行数:(提示是2的指数)",RMA TION_MESSAGE));
}while(dimen/2==0);
System.out.println(dimen);
x_pos = (int)(dimen*Math.random()); //随机生成特殊点位置
y_pos = (int)(dimen*Math.random());