Java求雪花堆积效果基本上正确,但是有几个地方需要改改 。
第一点:
// 建议用JFrame来弄,并在关闭时退出程序
JFrame w = new JFrame();// 创建一个面板
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口时退出程序
w.setSize(800, 600);// 设置面板大小
MyJPanel p = new MyJPanel();// 创建了一个画布
p.setBackground(Color.BLACK);// 设置背景颜色为黑色
w.add(p);
第二点:随机数放到run的for循环生成
for (int i = 0; i100; i) {
x[i] = (int) (Math.random() * 800);
y[i] = (int) (Math.random() * 600);
}
java 能否实现桌面下雪花的效果?使用swing?/*
*实现在窗体上随机布满300个雪花("*"),滚动
*在上次的课基础上增加了for循环(一次要产生300个变量),随机数,数组 ;
*下面的序号为步骤
*/ import java.awt.* ; //(3)导入awt包
public class Star {
public static void main(String args[]) {
Frame w = new Frame() ; //(1)绘制窗体
w.setSize(1024,768) ; //(4)把窗体布满全屏
w.setBackground(Color.BLACK) ; //(5)背景为黑颜色
MyPanel mp = new MyPanel() ; //(7)把MyPanel对象mp,添加到窗体w上
w.add(mp) ;
Thread t = new Thread(mp) ;
t.start() ; //(12)启动线程
w.show(); //(2)显示窗体
}
}
//(6)继承Panel类
class MyPanel extends Panel implements Runnable { //(11)实现Runnable接口
int x[] = new int[300] ;
int y[] = new int[300] ; //(8)定义300个数组变量MyPanel(){
for(int i = 0;i300; i) {
x[i] = (int)(Math.random()*1024) ;
y[i] = (int)(Math.random()*768) ; //(9)当程序走到第6步的时候程序就会调用构成函数
} //由于随机数是从0-1之间的数任意产出所以x乘以1024 , y乘以768再转换为int类型
}
public void paint(Graphics g) {
for(int i = 0;i300; i) {
g.setColor(Color.WHITE) ;
g.drawString("*",x[i],y[i]) ;
//g.drawString("*",30,30) ;(7)绘制一个星星在屏幕的x=30,y=30的位置上
} //(10)绘制300个雪花,把坐标30,30,改成x[i],y[i] ;
} //做到这步可以实现在黑色的天空布满300个星星
public void run() {
while(true) { //(13)实现产生300个雪花往下落死循环
for(int i = 0 ; i300; i) {
y[i]; //(14)y坐标不断的 1
if(y[i]768){ //(18)如果y轴坐标大于768时 , 则y = 0 , 回到窗体的顶部
y[i] = 0 ;
}
}
try{ //(16)用try,catch解决线程休眠的异常
Thread.sleep(20) ; //(15)在每次y轴坐标 1后线程休眠20毫秒
}catch(Exception e) {}
repaint() ; //(17)雪花在新的位置重画
}
}
}
求用JAVA制作的飘雪花的效果import java.applet.Applet;
import java.awt.*;
import javax.swing.JFrame;
import java.awt.image.BufferedImage;
import java.util.Random;
public class SnowPic extends Applet implements Runnable{
Thread mainThread;
Image offScreen,gAlc[];
Random rand;
int stopFlag,snows,wind,threadSleep,snowSize;
int[] snowX,snowY;
long stopTime =0;
Dimension dim;
MediaTracker mt;
public SnowPic(){
}
int getParameter(String s1,int s2){
String s=null;
try{
s=getParameter(s1);
}catch(NullPointerException ex){
}
return(s !=null)?Integer.parseInt(s):s2;
}
int getParameter(String s1, int s2, int max, int min){
String s=null;
try{
s=getParameter(s1);
}catch(NullPointerException ex){
}
if(s!=null){
if((s2=Integer.parseInt(s))max){
return max;
}else if (s2min){
return min;
}else{
return s2;
}
}else{
return s2;
}
}
String getParameter(String s1 , String s2){
String s=null;
try{
s=getParameter(s1);
}catch(NullPointerException ex){
}
return (s!=null)?s:s2;
}
public void init(){
rand =new Random();
dim =getSize();
snows=getParameter("snows", 100, 500,0);
snowSize=getParameter("snowSize",3,10,3);
threadSleep =getParameter("threadSleep",80,1000,10);
snowX = new int [snows];
snowY = new int [snows];
for( int i=0;isnows;i){
snowX[i]=rand.nextInt()%(dim.width/2) dim.width/2;
snowY[i]=rand.nextInt()%(dim.height/2) dim.height/2;
}
mt =new MediaTracker(this);
gAlc= new Image[1];
try{
gAlc[0]=getImage(getDocumentBase(), getParameter("graphic","test.gif"));
offScreen=createImage(dim.width, dim.height);
}catch(Exception ex){
gAlc[0]=new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB );
offScreen=new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB );
}
mt.addImage(gAlc[0],0);
try{
mt.waitForID(0);
}catch(InterruptedException ex) {
return;
}
stopFlag =0;
}
public void start(){
if (mainThread==null){
mainThread=new Thread(this);
mainThread.start();
}
}
public void stop(){
mainThread =null;
}
public void run(){
while(mainThread !=null){
try{
Thread.sleep(threadSleep);
}catch(InterruptedException ex) {return;}
repaint();
}
}
public void drawBackSnow(Graphics g){
g.setColor(Color.white);
for(int i=0;isnows;i){
g.fillOval(snowX[i],snowY[i],snowSize,snowSize);
snowX[i] =rand.nextInt()%2 wind;
snowY[i] =(rand.nextInt()%6 5)/5 1;
if(snowX[i]=dim.width) snowX[i]=0;
if(snowX[i]0) snowX[i]=dim.width -1;
if(snowY[i]=dim.height ||snowY[i]0){
snowX[i] =Math.abs(rand.nextInt()%dim.width);
snowY[i] =0;
}
}
wind =rand.nextInt()%5 -2;
}
public void paint(Graphics g){
offScreen.getGraphics().setColor(Color.black);
offScreen.getGraphics().fillRect(0,0,dim.width,dim.height);
offScreen.getGraphics().drawImage(gAlc[0],0,0,this);
drawBackSnow(offScreen.getGraphics());
g.drawImage(offScreen,0,0,null);
}
public void update(Graphics g){
paint(g);
}
public static void main(String args[]){
SnowPic snow=new SnowPic();
snow.setBounds(0,0, 500, 500);
snow.init();
JFrame jf=new JFrame("SnowPic");
jf.setSize(500, 500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(snow);
jf.setVisible(true);
snow.start();
}
}
请参考
详解如何用java实现Koch雪花的绘制Koch雪花其实就是一种Koch曲线 。
Koch曲线是一个数学曲线 , 同时也是早期被描述的一种分形曲线 。它由瑞典数学家Helge von Koch在1904年发表的一篇题为“从初等几何构造的一条没有切线的连续曲线”的论文中提出 。有一种Koch曲线是象雪花一样,被称为Koch雪花(或Koch星),它是由三条Koch曲线围成的等边三角形 。至于更详细的请读者百度百科 。
如图所示:
解决方案
设想从一个线段开始 , 根据下列规则构造一个Koch曲线:
1.三等分一条线段;
2.用一个等边三角形替代第一步划分三等分的中间部分;
3.在每一条直线上,重复第二步 。
Koch曲线是以上步骤地无限重复的极限结果 。
Koch曲线的长度为无穷大,因为以上的变换都是一条线段变四条线段,每一条线段的长度是上一级的1/3 , 因此操作n步的总长度是(4/3)n:若n→∞ , 则总长度趋于无穷 。Koch曲线的分形维数是log 4/log 3 ≈ 1.26,其维数大于线的维数(1),小于Peano填充曲线的维数(2) 。
Koch曲线是连续的,但是处处不可导的 。
Koch雪花的面积是 2* √3 * ssup2;/5 ,这里的s是最初三角形的边长,Koch雪花的面积是原三角形面积的8/5,它成为一条无限长的边界围绕着一个有限的面积的几何对象 。
【java雪花源代码 雪花的代码】java雪花源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于雪花的代码、java雪花源代码的信息别忘了在本站进行查找喔 。
推荐阅读
- aspnet调用oracle存储过程,asp连接oracle数据库
- pdf怎么从彩色转黑白,pdf彩色转成黑白
- vb.netstl文件 vbnet structure
- ios10越狱下载苹果商店,ios1033越狱
- 华为手表服务器地址,华为手表服务器地址查询
- 好的飞行游戏手机游戏,有什么好玩的飞行游戏手机
- c语言lines函数 incline c语言
- erp沙盘模拟系统网址大全最新,erp沙盘模拟实用教程
- ppt如何转换pdf文件,ppt怎么转变pdf