zoukankan      html  css  js  c++  java
  • 棋盘覆盖

    import java.applet.Applet;
    import java.awt.event.*;
    import java.awt.*;


    public class ChessBoard extends Applet implements ActionListener{

    /**
    * @param args
    */
    private int size=4;
    private Button btnStart;
    private int sx = 40;
    private int sy = 80;
    private int dr = 0, dc = 1;
    private int tile = 1;//L型骨牌号
    private int board[][];
    Label label_Size, label_dr, label_dc;
    TextField text_Size, text_dr, text_dc;
    public void init()
    {
    label_Size = new Label("K值:");
    add(label_Size);
    text_Size = new TextField("2",4);
    text_Size.addActionListener(this);
    add(text_Size);
    label_dr = new Label("dr:");
    add(label_dr);
    text_dr = new TextField("0",4);
    text_dr.addActionListener(this);
    add(text_dr);
    label_dc = new Label("dc:");
    add(label_dc);
    text_dc = new TextField("1",4);
    text_dc.addActionListener(this);
    add(text_dc);
    btnStart = new Button("执行");
    btnStart.addActionListener(this);
    add(btnStart);

    }

    public void paint(Graphics g)
    {
    g.setColor(Color.BLUE);
    int ex = 40*(size+1);
    int ey = 80+40*size;
    for(int i= 0;i<= size;i++)
    g.drawLine(sx+40*i, sy, sx+40*i,ey);
    for(int i= 0;i<= size;i++)
    g.drawLine(sx, sy+40*i, ex,sy+40*i);
    int w = (size+4)*40;
    int h = (size+3)*40;
    this.setSize(w, h);
    board = new int[size][size];
    chessBoard(0,0,dc,dr,size);
    for(int i = 0;i<size;i++)
    for(int j = 0;j<size;j++)
    {
    int r = (25*board[i][j])%255;
    int gr = (35*board[i][j])%255;
    int b = (45*board[i][j])%255;
    Color color = new Color(r, gr, b);
    g.setColor(color);
    g.fillRect(sx+i*40,sy+j*40,40,40);
    }
    }
    void chessBoard(int tr,int tc,int dr,int dc,int size)
    {
    if(size == 1)
    return;
    else{
    int t = tile++;//
    int s = size/2;
    //覆盖左上角子棋盘
    if(dr < tr + s&&dc < tc + s){
    //特殊方格在此棋盘
    chessBoard(tr,tc,dr,dc,s);
    }
    else{//此棋盘中无特殊方格
    //用t号L骨牌覆盖右下角
    board[tr + s - 1][tc + s -1] = t;

    //覆盖其余方格
    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{//此棋盘中无特殊方格
    //用t号骨牌覆盖坐下角
    board[tr + s - 1][tc + s ] = t;
    //覆盖其余方格
    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{//此棋盘中无特殊方格
    //用t号骨牌覆盖右上角
    board[tr + s][tc + s - 1] = t;
    //覆盖其余方格
    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{//此棋盘中无特殊方格
    //用t号骨牌覆盖左上角
    board[tr + s][tc + s] = t;

    //覆盖其他方格
    chessBoard(tr + s,tc + s,tr + s,tc + s,s);
    }
    }
    }

    public void actionPerformed(ActionEvent e)
    {
    size = (int) Math.pow(2,Integer.parseInt(text_Size.getText()));
    dr = Integer.parseInt(text_dr.getText());
    dc = Integer.parseInt(text_dc.getText());
    this.repaint();
    }
    }

  • 相关阅读:
    python 20 规范化目录
    python 19 包、logging模块
    python 17 Json、os、sys、hashlib等内置模块
    python 16 time、datetime、random模块
    python 15 带参装饰器
    python 14 装饰器
    [LeetCode]36. Compare Version Numbers版本号比较
    [LeetCode]35. Valid Parentheses有效括号
    [LeetCode]34. Add Binary二进制相加
    [LeetCode]33. Longest Palindromic Substring最长回文子串
  • 原文地址:https://www.cnblogs.com/FredCong/p/2785311.html
Copyright © 2011-2022 走看看