20130706 谢尔宾斯基三角形
我自认为自己是一个编程新手。我是一个不怎么有耐心,自制力又有点差的人。平常做什么事,没有人督促的话很难坚持到底。也许是因为这个原因,在学习上有没有下什么苦功夫,靠一些小聪明,算是顺利的来到了大二。
这种情况有了改变,还是在这一学期,在听过一个交流会之后,迷茫的我突然找到了方向。知道了自己应该做什么,近期的目标就是想学到一些东西,不想再做一个编程上的无知者。
我不太喜欢定什么目标,我比较喜欢走一步看一步,因为我始终相信,计划赶不上变化,我相信,只要做好自己手头上的事情,有什么理由不成功呢?
所以从什么都不知道,到现在可以通过自己的努力做出一些简单的东西,我仍旧感到很有成就感。
以下是谢尔宾斯基三角形的代码:
package dyh20130706;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Triangle extends JFrame{
public static void main(String[] args) {
//实例化一个 窗体的类
Triangle dmb=new Triangle();
//调用界面初始化方法
dmb.initGUI();
}
//定义界面初始化的方法
public void initGUI(){
//定义窗体的属性
this.setTitle("递归画三角形");
this.setLocation(300,150);
this.setSize(500, 500);
this.setResizable(true);
this.setDefaultCloseOperation(3);
this.setVisible(true);
//窗体可见之后,在窗体上添加画布对象
Graphics g=this.getGraphics();
triListener tl =new triListener(g);
this.addMouseListener(tl);
}
}
以下是监听器的代码:
package dyh20130706;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class triListener implements MouseListener{
private Graphics g;
public triListener(Graphics g){
this.g=g;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
double x1=200;
double y1=100;
double x2,y2,x3,y3;
int a1,b1,a2,b2,a3,b3;
x2=x1-150;
y2=y1+150*Math.sqrt(3);
x3=x1+150;
y3=y1+150*Math.sqrt(3);
a1=(int)x1;
b1=(int)y1;
a2=(int)x2;
b2=(int)y2;
a3=(int)x3;
b3=(int)y3;
g.drawLine(a1,b1,a2,b2);
g.drawLine(a2,b2,a3,b3);
g.drawLine(a1,b1,a3,b3);
draw(a1,b1,a2,b2,a3,b3,6);
}
//定义一个画三角形的方法
public void draw(int X1,int Y1,int X2,int Y2,int X3,int Y3,int count){
int A1,B1,A2,B2,A3,B3;
if(count>0){
count--;
A1=(X1+X2)/2;
B1=(Y1+Y2)/2;
A2=(X2+X3)/2;
B2=(Y2+Y3)/2;
A3=(X1+X3)/2;
B3=(Y1+Y3)/2;
g.drawLine(A1, B1, A2, B2);
g.drawLine(A2, B2, A3, B3);
g.drawLine(A1, B1, A3, B3);
this.draw(X1, Y1, A1, B1, A3, B3, count);
//this.draw(X2, Y2, A1, B1, A2, B2, count);
//this.draw(X3, Y3, A2, B2, A3, B3, count);
}
else{
return;
}
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}