java打印国际象棋棋盘的方法

所属分类: 软件编程 / java 阅读数: 25
收藏 0 赞 0 分享

本文实例为大家分享了java打印出国际象棋棋盘的具体代码,供大家参考,具体内容如下

问题分析

观察国际象棋棋盘的图案,可以发现其中的规律:棋盘由八行八列黑白方块相间组成,可以用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方块还是白方块。这里我们使用了Swing的标签组件JLable,通过设置JLabel组件的背景色和透明度来实现黑白方块。

(1)确定程序框架

这是一个绘图案例,这里我们采用JFrame创建窗口,然后在窗口里添加JLabel标签组件,通过前面的问题分析可知,JLabel标签要设置一些属性实现黑白方块,然后显示窗口.

程序框架代码如下:

import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class First 
{ 
 public static void main(String[] args) 
 {
 JFrame f=new JFrame("国际象棋棋盘");//窗口属性设置
 JLabel lab = new JLabel(); //生成标签实例
 
  f.add(lab); //添加标签
  f.setVisible(true); //显示窗口
 }
 
}

(2)窗口属性设置

窗口属性设置包括窗口大小、位置等设置,其中窗口大小要满足能够容纳黑白方格,这里指定黑白方格大小为:20*20,那么窗口属性大小大概为:168*195。窗口位置可以随便指定,这里指定为:(350,200)。程序代码如下:

//窗口设置大小
f.setSize(168,195); //边框的长和宽
  
//窗口设置位置
Point point=new Point(350,200);
f.setLocation(point);

(3)标签属性设置

标签的属性主要是标签的位置及背景色,棋盘是由八行八列黑白方块相间组成,可以通过双重循环来实现,用i控制行,j来控制列,位置很容易设置,根据i+j的和的变化来设置背景色,表示黑方块还是白方块。程序代码如下:

int grids=8; //行数和列数
int gridsize=20; //单元格的高和宽
  
for(int i=0; i<grids; i++)
{
 for(int j=0; j<grids; j++)
 {
 JLabel l = new JLabel(); //生成标签实例
 l.setSize(gridsize,gridsize); //设置标签大小
 l.setLocation(i*gridsize,j*gridsize); //设置标签位置
 if((i+j)%2==0)
 { //当小方格的坐标和刚好是偶数时,
 l.setBackground(Color.black); //设置方格为黑色
 l.setOpaque(true); //设置为不透明 
 }
 else
 {
 l.setBackground(Color.white); //设置方格为白色
 l.setOpaque(true); //设置为不透明 
 }
 l.setBorder(BorderFactory.createLineBorder(Color.black)); //设置边界为黑色
 }
}

完整代码:

import java.awt.Color;
import java.awt.Point;
 
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class First 
{ 
 public static void main(String[] args) 
 {
 JFrame f=new JFrame("国际象棋棋盘"); //创建窗口
 f.setSize(168,195); //窗口设置大小 //边框的长和宽 
 //窗口设置位置
 Point point=new Point(350,200);
 f.setLocation(point);
 int grids=8;  //行数和列数
 int gridsize=20; //单元格的高和宽
  
 for(int i=0; i<grids; i++) //外循环控制行
 {
 for(int j=0; j<grids; j++) //内循环控制列
 {
 JLabel l = new JLabel(); //生成标签实例
 l.setSize(gridsize,gridsize); //设置标签大小
 l.setLocation(i*gridsize,j*gridsize); //设置标签位置
 if((i+j)%2==0)
 { //当小方格的坐标和刚好是偶数时,
 l.setBackground(Color.black); //设置方格为黑色
 l.setOpaque(true); //设置为不透明 
 }
 else
 {
 l.setBackground(Color.white); //设置方格为白色
 l.setOpaque(true); //设置为不透明 
 }
 l.setBorder(BorderFactory.createLineBorder(Color.black)); //设置边界为黑色
 f.add(l); //添加标签
 }
 }
 f.setVisible(true); //显示窗口
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

SpringBoot环境搭建及第一个程序运行(小白教程)

这篇文章主要介绍了SpringBoot环境搭建及第一个程序运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

过滤器 和 拦截器的 6个区别(别再傻傻分不清了)

这篇文章主要介绍了过滤器 和 拦截器的 6个区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

SpringBoot整合SpringTask实现定时任务的流程

这篇文章主要介绍了SpringBoot整合SpringTask实现定时任务的流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

vscode快速引入第三方jar包发QQ邮件

这篇文章主要介绍了vscode快速引入第三方jar包发QQ邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Java Enum和String及int的相互转化示例

这篇文章主要介绍了Java Enum和String及int的相互转化示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring boot如何快速的配置多个Redis数据源

这篇文章主要介绍了Spring boot如何快速的配置多个Redis数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JAVA 对接腾讯云直播的实现

这篇文章主要介绍了JAVA 对接腾讯云直播的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

JavaSE static final及abstract修饰符实例解析

这篇文章主要介绍了JavaSE static final及abstract修饰符实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

SpringBoot定时任务参数运行代码实例解析

这篇文章主要介绍了SpringBoot定时任务运行代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring Boot调用 Shell 脚本实现看门狗功能

这篇文章主要介绍了Spring Boot调用 Shell 脚本实现看门狗功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多