好文档 - 专业文书写作范文服务资料分享网站

Java趣味编程100例

天下 分享 时间: 加入收藏 我要投稿 点赞

Java趣味编程100例

int arr[][]=new int[m][n]; for(int i=0;i=(m+i))) //输出等腰三角形两边空格 System.out.print(\ else if((j==(m-i-1))||(j==(m+i-1))) //计算并输出等腰三角形两个腰 { arr[i][j]=1; System.out.printf(\ } else if((i+j)%2==0&&m%2==0||(i+j)%2==1&&m%2==1) //中间默认数字0用空格替换 System.out.print(\ else //计算并输出中间数字 { arr[i][j]=arr[i-1][j-1]+arr[i-1][j+1]; System.out.printf(\ } }

System.out.println(); //输出换行 } } }

(2)运行结果

运行程序,结果如图1.13所示。

图1.13 程序输出结果

1.6 国际象棋棋盘

1.问题描述

打印出国际象棋棋盘,如图1.14所示。

·16 ·

第1章 变幻多姿的图表

2.问题分析

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

(1)确定程序框架 这是一个绘图案例,这里我们采用JFrame创建窗口,然

图1.14 国际象棋棋盘

后在窗口里添加JLabel标签组件,通过前面的问题分析可知,

JLabel标签要设置一些属性实现黑白方块,然后显示窗口,实现如图1.14所示的效果。程序框架代码如下:

public class Ch1_6 { public static void main(String[] args) { JFrame f=new JFrame(\国际象棋棋盘\ //窗口属性设置

JLabel l = new JLabel(); //生成标签实例 //标签属性设置 f.add(l); //添加标签 f.setVisible(true); //显示窗口 } }

(2)窗口属性设置

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

//窗口设置大小

f.setSize(168,195); //边框的长和宽 //窗口设置位置

Point point=new Point(350,200);

f.setLocation(point);ublic class Ch1_6

(3)标签属性设置

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

int grids=8; int gridsize=20;

for(int i=0; i

//行数和列数

//单元格的高和宽

·17·

Java趣味编程100例

}

{ }

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)); //设置边界为黑色 ……

(4)完整程序

现在我们就需要把刚才的程序进行组合,构成我们的完整程序:

import java.awt.Color; import java.awt.Point;

import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel;

public class Ch1_6 { 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

//创建窗口

//边框的长和宽

//行数和列数

//单元格的高和宽 //外循环控制行 //内循环控制列 //生成标签实例 //设置标签大小 //设置标签位置

//设置方格为黑色 //设置为不透明

·18 ·

第1章 变幻多姿的图表

}

} else { l.setBackground(Color.white); //设置方格为白色 l.setOpaque(true); //设置为不透明 } l.setBorder(BorderFactory.createLineBorder(Color.black)); //设置边界为黑色 f.add(l); //添加标签 } }

f.setVisible(true); //显示窗口 }

(5)运行结果

运行程序,结果如图1.15所示。

图1.15 国际象棋棋盘

1.7 心 形 图

1.问题描述

打印心形图案,如图1.16所示。

图1.16 心形图案

·19·

Java趣味编程100例

2.问题分析

心形图案的实现,重点是心形函数r=a(1–sinθ),据说这是笛卡尔死前寄出的最后一封情书的内容,这里面隐藏着一个刻骨铭心的秘密:“一生只为等待能手绘这个函数给我的人”。心形函数要做直角坐标系转换,然后投影到xOy平面上,就可以调用画椭圆方法来实现画心形图案。

(1)确定程序框架

为了提高图像的显示效果,须采用双缓冲技术。首先初始化缓冲区,接着绘制图像,然后再显示在Applet窗口中。程序框架代码如下:

public class Ch1_7 extends Applet {

int width, height; Image image;

Graphics g1;

public void init() { setBackground(Color.black); this.setSize(350, 310); width = getSize().width; height = getSize().height; image = createImage(width, height); g1 = image.getGraphics(); }

public void paint(Graphics g) { g1.clearRect(0, 0, width, height); g1.setColor(Color.red);

//在缓冲区绘制心形图案 …… //显示缓存区的可变Image对象 g.drawImage(image, 0, 0, this); } }

//缓冲区对象

//Applet初始化时调用 //设置背景

//获得窗口宽度 //创建图像对象

//绘图方法

(2)绘制图案

由前面的问题分析可知,心形函数为r=a(1–sinθ),要做直角坐标系转换,然后投影到xOy平面上,坐标确定下来后调用画椭圆方法来画心形图案上的点。程序代码如下:

for(i = 0; i <= 90; i++) //控制横向变化 for(j = 0; j <= 90; j++) //控制竖向变化 { //转换为直角坐标 r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18; x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + width / 2; //为了在中间显示,加了偏移量 y = -r * Math.sin(Math.PI / 45 * j) + height / 4; //为了在中间显示,加了偏移量 g1.fillOval((int) x, (int)y, 2,2); //绘制点} ·20 ·

3xzmo2sqie0fvan2h1kt
领取福利

微信扫码领取福利

微信扫码分享