棋盘覆盖算法代码.docx

上传人:太** 文档编号:63083703 上传时间:2022-11-23 格式:DOCX 页数:15 大小:30.59KB
返回 下载 相关 举报
棋盘覆盖算法代码.docx_第1页
第1页 / 共15页
棋盘覆盖算法代码.docx_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《棋盘覆盖算法代码.docx》由会员分享,可在线阅读,更多相关《棋盘覆盖算法代码.docx(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、棋盘覆盖数字版输出Javpackage 棋盘;import r;夫author Rollen-Holt棋盘覆盖算法 特殊棋盘我们采用。来表示public classQipan 火火* param tr表示棋盘左上角行号param tc表示棋盘左上角列号* param dr表示特殊棋盘的行号夫param de表示特殊棋盘的列号* param SIZE=2Ako棋盘的规格为2人k*2人k夫 夫/static int board;static int ti tie = 1; / titl表示L型骨牌的编号 southFan1add(TrLab1);southPanel.add(TrText);sou

2、thPanel.add(TcLabel);southFan1.add(TcTxt);southPanel.add(DrLabel);southPanel.add(DrText);southPanel.add(DcLabel);southFan1.add(DeText);southPan1add(SizLab1);southPan1add(SizTxt);southPanel.add(OKButton);getContentPane () .add(southPanal,BorderLayout.NORTH);stDfaultClosOpration(JFrame.EXIT_ON_CLOSE);

3、class gridLayout public gridLayout () / 设置特殊方块cntrPan1.stLayout(new GridLayout(0,size);button = new JButtonsize size;for (int i = 0; i size; i+)(for (int j = 0; j siz;j + + )buttonij = new JButton();if (i = dr & j = de) (buttonij.stBackground(Color.BLACK);button i j . setText ( H棋盘覆盖 n );buttonij.st

4、Enabld(false);centerPanel.add(buttonij);private void sip()for (int i=0;isize;i+)for(int j=0;jsize;j+); public void ChssBoard (int tr, int tc, int dr, int de, int size) /算法实现if (size = 1) /棋盘方格大小为1,说明递归到最 里层return;int t = tile+; / 每次递增 1Random rd = new Random ();red=rd.nextFloat ();green=rd.nextFloat

5、 ();blue=rd.nextFloat ();Color col = new Color(red,grn,blu);sip ();int s = size / 2; /棋盘中间的行、列号(相等的) /检查特殊方块是否在左上角子棋盘中if (dr tr + s & de tc + s) / 在ChessBoard(tr, tc, dr, de, s);else /不在,将该子棋盘右下角的方块视为特殊方块buttontr + s - 1tc + s - 1stBackground(col);buttontr + s - 1tc + s - 1stEnabld(false);buttontr +

6、 s - 1tc + s -1 stTxt(htmlH+t+Hn);1, tc + s - 1,1, tc + s - 1,ChessBoard(trA tc, tr + ss);sleep ();/检查特殊方块是否在右上角子棋盘中if (dr = tc + s) / 在ChessBoard(trA tc + s, dr, de, s);else /不在,将该子棋盘左下角的方块视为特殊方块buttontr + s - 1tc + s . setBackground(col);buttontr + s - 1tc + s.setEnabled(false);buttontr + s - 1tc

7、+ s . setText(H= tr + s & de tc + s) / 在ChessBoard(tr + s, tc, dr, de, s);else /不在,将该子棋盘右上角的方块视为特殊方块 (buttontr + stc + s -1 . setBackground(col);buttontr + stc + s -1stEnabld(false);buttontr + s tc + s -1.setText(nn+t+nn);ChssBoard (tr + s, tc, tr + s, tc + s - 1, sleep ();/检查特殊方块是否在右下角子棋盘中if (dr =

8、tr + s & de = tc + s) / 在ChssBoard(tr + s, tc + sr dr, de, s);else /不在,将该子棋盘左上角的方块视为特殊方块 buttontr + s tc + s .setBackground(col);buttontr + stc + s.setEnabled(false); buttontr + s tc +s stTxt ($12巳=乜,n + t + nn);ChssBoard (tr + s, tc + s, tr + s, tc + s, s);sleep ();)public class OKButtonAction impl

9、ementsActionListener /点下一个按钮时的事件响应public void actionPrformd(ActionEvnt e) e . getSource () ; /获取点击的事件,即是点下了哪个按钮JButton whichButtonJButton whichButton(JButton)String whichName =whichButton.getActionCommand();if (whichName . equals (开始” )getContantPane () .add(centrPan1,BordrLayout.CENTER);int tR =工nt

10、gar.parselnt(TrText.getText();int tC =Integer.parselnt(TcText.getText();int dR =工ntgar.parselnt(DrText.getText();int dC =Integer.parselnt(DcTxt.getText();int Size = 1;for (inti=0;iInteger.parselnt(SizeText.getT;xt();i+)Siz*=2;tr = tR;tc = tC;dr = dR;de = dC;size = Size;try gridLayout grid = new grid

11、Layout();grid.ChessBoard(tr, tc, dr, de, size);centerPanel. updateUI (); catch (Exception EX) EXprintStackTrac();panel.removeAll();OKButton.setEnabled(false);if (whichName . equals (取消或重来” ) /当 你点下一个提示按钮时的事件响应JLabel label = new JLab1();labelsetHorizontaiAlignment(JLabel.CENTER);lab 1 . stTxt ( nhtml

12、xf ont siza= 10 1您取消了操作,请重新输入pan1add(lab1,cntrPan1 );getContentPane () .add(panel,BorderLayout.CENTER);panelupdateUI();tile=l;centrPan1removAll();OKButtonsetEnabled(true);public static void main (String args) /主函 数方法实现chessBoard chess = new chessBoard();chessstVisibl(七rue);Runtim run = Runtime.getRu

13、ntime();run. gc();/手动清除数据垃圾public static void ChessBoard (int tr, int tc, int dr, int de, int size) if (siz=1) return;int t = ti tle+; / / t表示L型骨牌的编号int s = size / 2; / 分割棋盘/覆盖左上角棋盘if (dr tr + s & de tc + s) /说明特殊方格在此小棋盘中ChessBoard(trA tc, dr, de, s); else /说明特殊方格不在此小棋盘中/用t号L型棋盘覆盖这个小棋盘的右下角 boardtr +

14、 s - 1 tc + s - 1 = t;/覆盖其余棋盘ChessBoard (tr, tc, tr + s - 1, tc + s - 1,/覆盖右上角棋盘if (dr = tr + s & de = tr + s & de = tc + s) ChessBoard(tr + s, tc + s, dr, de, s); else boardtr + s tc + s boardtr + s tc + s t;ChessBoard (tr + s, tc + s, tr + s, tc + s.public static void main(String args) /假设特殊方格的位置为

15、第三行第三列int Size,row,col;Seannr scan = new Scanner (Systm.;System.out.printIn ( HEnter the size of ChessBoard:);Size = scan.nextlnt ();board = new intSize Size;System.out.printIn (Entr the location of Board:”);row = scan.nextlnt ();col = scan.nextlnt ();boardrowcol = 0;ChessBoard(0 r 0 r row, col, Siz

16、);for (int i = 0; i Size; +i) for (int j = 0; j Siz;j +) System.out.print(boardi j + ” n );System.out.printin();棋盘覆盖方块版输出Javpackage xx;import j ava.awt.BorderLayout;import java.awt.Color;import javcawtDimnsion;import j avaawtFlowLayout;import javaawtFont;import j ava.awt.GridLayout;import javaawtToo

17、lkit;import j ava.awt.event.ActionEvent;import java.awt.vntActionListnr;import java.util.Random;importj avax.printattributestandard.JobHoldUntil;import javaxswing工mag工con;import javax.swing.JButton;import ; import j avax.swing.JLabel;import 1;import j avax swingJTxtAra;import j avax.swing.JTextField

18、;public class chssBoard extends JFrame private int tr, tc, dr, de, siz;/定义各成员变量 int tile = 1;float red,grn,blue;JPanel cntrPan1;JPanel southPanel;JButton button;JTextField TrText, TcText, DrText, DeText, SizeText;JLabel TrLabelA TcLabelA DrLabel, DcLabelASizLab1;JButton OKButton;JButton CancelButton

19、;JPan1 pan1 = new JPan1();public chessBoard() super();setTitle (“棋盘覆盖”);this.setResizable(false);cntrPan1 = new JPan1();southPanel = new JPan1();OKButton = new JButton (开始”);OKButton.addActionListnr(newOKButtonAction () ) ; /设置监听CancelButton = new JButton (取消或重来”);CancelButton.addActionListnr(newOKB

20、uttonAction();setBounds (300, 10, 1000z 1000) ; /设置窗口大小与位置TrText = new JTxtFiId ( “0,2) ;/定义各组件TcText = new JTextField(n0n,2);DrText = new JTextField(n0n,2);DeText = new JTxtFiId(” 0,2);SizTxt = new JTxtFiId(”2,2);TrLabel = new JLab1 (起始方格坐标x :H ;TcLabel = new JLabel ( 起始方格坐标y:H ;DrLabel = new JLab1

21、 (特殊方格坐标x :H ;DcLabel = new JLab 1 ( 特殊方格坐标y:n );SizLab1 = new JLab1 ( 棋盘规模siz(2八k): );TrTxtstEnabld(false);TcTxtstEnabld(false);int tR = Integer.parselnt(TrTxt.gtTxt();int tC = Integer.parselnt(TcText.getText();int dR = Integer.parselnt(DrText.getText();int dC = 工ntgar.parselnt(DeText.gtTxt();int Size = 1;for (inti=0;iInteger.parselnt(SizeTaxt.getText() ) ; i + +)Siz*=2;tr = tR;tc = tC;dr = dR;de = dC;siz=Size;southPanel. add (CaneIButton) ; /添力各组件至ll窗

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com