随机数,美丽的地方就在于不确定。
java里面生成随机数大体上来分为两种:
1.调用Math类的静态方法random()去生成一个在0-1之间的double型随机数,如果需要整型,那么就用以下代码(int)(Math.random()*10)的方法来生成一个0-9的随机数。
2.用Random类中生成随机数的方法,如生成一个随机整数就可以用一下代码生成new Random().nextInt(10) 生成的随机数是0-9的,你可以改变里面的参数来生成范围不同的随机数。
接下来我给大家分享下我眼中的随机数~~~~
----------------------------------------------------卖萌分割线/(-w-) \---------------------------------------------------------
在图形界面设计中的画布对象中g.filloval(x,y,width,height);以及设置画布颜色g.setColor(new Color(r,g,b));
我们将在这两个方法中的参数中用随机数去谱写华美的篇章。
首先我在颜色设置上动手脚~
g.setColor(new Color(100,100,100);这样的颜色是简单单调的,那要是换成g.setColor(new Color(new Random().nextInt(255),new Random().nextInt(255),new Random().nextInt(255)),你可以想象到每次产生的图形是不一样的颜色,这样就会有丰富多彩的圆了。
但是一个平面的圆始终不能给我们带来想要的视觉享受,那么如果用上循环,你可以得到意想不到的收获
private void draw3DBall(){ for(int i=0;i<25;i++){ g.setColor(new Color(colorValue1+i*5,colorValue2+i*5,colorValue3+i*5)); g.fillOval(x+i, y+i, 50-i*2, 50-i*2); //colorValue1,colorValue2,colorValue3是三个随机数 } }
这样画出来的图形不在是圆了,这是一个球!
在颜色上做完手脚,让我们把视线转移到g.filloval()里面的参数里:
我先来介绍下这四个参数吧。java中画的圆是以长度为width,宽度为height,左上角坐标为(x,y)矩形内切出来的圆。也就是说你只要给这四个赋予随机数,那么你画出来的圆就是随机大小,随机分布的!
如果就这样画出来-= -那也太没品味了~
我们这里线程(Thread)让它动起来~@@
public void run() { while(true){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(flag){ continue; } delete3DBall(); x+=VX; y+=VY; //撞击返回 if(x>jpPl.getWidth()-50||x<0){ VX = -VX; } if(y>jpPl.getHeight()-50||y<0){ VY = -VY; } draw3DBall(); } } /** * 绘制新的圆球 */ private void draw3DBall(){ for(int i=0;i<25;i++){ g.setColor(new Color(colorValue1+i*5,colorValue2+i*5,colorValue3+i*5)); g.fillOval(x+i, y+i, 50-i*2, 50-i*2); } } /** * 用背景色覆盖原来的圆球 */ private void delete3DBall(){ for(int i=0;i<25;i++){ g.setColor(jpPl.getBackground()); g.fillOval(x+i, y+i, 50-i*2, 50-i*2); } }
球动的原理就是不断改变坐标(x,y),也就是说我们在线程中每一次循环改变一次x,y的值,而这样的该变量*线程休眠时间 = 球运动的速度 ;为了让每个球运动方式不同,我们又可以每个球的线程中x,y的增量不同,这样我们又用到了随机数!
最后的效果就是:
程序源代码:
package cn.jinyejun.My3DBall; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; /** * 3DBall Play * * @author 金晔俊 * */ public class WinPlay { private JFrame jf; private JPanel jpPl; private Graphics g; private ArrayList<GameThread> list = new ArrayList<GameThread>(); public WinPlay() { initUI(); System.out.println(g); } private void initUI() { jf = new JFrame(); jf.setTitle("3D Ball Play"); jf.setLayout(new BorderLayout()); jf.setSize(600, 500); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); // 开始、暂停、继续 按钮组; JPanel jp = new JPanel(); jp.setLayout(new FlowLayout()); JButton jbuSt = new JButton("Start"); jbuSt.setFocusable(false); JButton jbuPs = new JButton("pause"); jbuPs.setFocusable(false); JButton jbuCt = new JButton("continue"); jbuCt.setFocusable(false); jp.add(jbuSt); jp.add(jbuPs); jp.add(jbuCt); jf.add(jp, BorderLayout.NORTH); // 3D球显示区域 jpPl = new JPanel(); jpPl.setBackground(Color.WHITE); jpPl.setPreferredSize(new Dimension(500, 500)); jf.add(jpPl); jf.setVisible(true); // 获取JpPl画布 g = jpPl.getGraphics(); jbuSt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { GameThread gt = new GameThread(jpPl, g); list.add(gt); gt.start(); } }); jbuPs.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (int i = 0; i < list.size(); i++) { list.get(i).setFlag(true); } } }); jbuCt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (int i = 0; i < list.size(); i++) { list.get(i).setFlag(false); } } }); } public static void main(String[] args) { new WinPlay(); } }
package cn.jinyejun.My3DBall; import java.awt.Color; import java.awt.Graphics; import java.util.Random; import javax.swing.JPanel; public class GameThread extends Thread{ private JPanel jpPl; private Graphics g; private int x,y; private int VX = new Random().nextInt(5)+1,VY = new Random().nextInt(5)+1; private boolean flag = false; private int colorValue1 = Math.abs(new Random().nextInt(255)-5*25); private int colorValue2 = Math.abs(new Random().nextInt(255)-5*25); private int colorValue3 = Math.abs(new Random().nextInt(255)-5*25); public GameThread(JPanel jpPl,Graphics g) { this.jpPl = jpPl; this.g = g; } @Override public void run() { while(true){ try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(flag){ continue; } delete3DBall(); x+=VX; y+=VY; //撞击返回 if(x>jpPl.getWidth()-50||x<0){ VX = -VX; } if(y>jpPl.getHeight()-50||y<0){ VY = -VY; } draw3DBall(); } } /** * 绘制新的圆球 */ private void draw3DBall(){ for(int i=0;i<25;i++){ g.setColor(new Color(colorValue1+i*5,colorValue2+i*5,colorValue3+i*5)); g.fillOval(x+i, y+i, 50-i*2, 50-i*2); } } /** * 用背景色覆盖原来的圆球 */ private void delete3DBall(){ for(int i=0;i<25;i++){ g.setColor(jpPl.getBackground()); g.fillOval(x+i, y+i, 50-i*2, 50-i*2); } } public void setFlag(boolean flag) { this.flag = flag; } }
相关推荐
随机数随机数随机数随机数随机数随机数随机数随机数
js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数js随机数...
国密随机数检测工具,随机数检测
1. 设计并实现一个随机数生成电路,每2秒随机生成一个0~999之间的数字,并在数码管上显示生成的随机数。2. 为系统设置一个复位键,复位后数码管显示“000”,2秒后再开始每2秒生成并显示随机数,要求使用按键复位。
c语言随机数c语言随机数
产生随机数并运算产生随机数并运算产生随机数并运算产生随机数并运算产生随机数并运算产生随机数并运算
使用博图V15软件编程,S7-1500PLC进行随机数产生,并通过触摸屏趋势图显示。随机数主要通过截取时间和使用全球库函数
Java生成32位随机数,短位随机数工具类
随机数 和 全屏,进度条 的使用 随机数和全屏,进度条的使用 随机数和全屏,进度条的使用
C#实现的随机数检测---扑克检测,C#实现的随机数检测---扑克检测
js随机数js随机数js随机数
利用移位寄存器产生均匀随机数,再利用Box-Muller产生高斯随机数。
VC++软件中的小程序,用于产生随机数,在点击后能够产生随机的整数
可以生成制定范围内的随机数。有GUI界面
java 随机数 java 随机数 java 随机数
软件功能强大,无需编程,通过简单的操作,即可设定随机数参数、创建个性化的随机数窗口和生动的随机数动画,创建您需要的几乎所有的随机数,使得随机数的创建变得更加自由,更加轻松,更加便利。 随机数设计专家...
到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))到文本 (取随机数 (0, 30))...
Math对象的取整方法和获取随机数方法Math对象的取整方法和获取随机数方法Math对象的取整方法和获取随机数方法Math对象的取整方法和获取随机数方法Math对象的取整方法和获取随机数方法Math对象的取整方法和获取随机数...
采用Verilog源码的形式写的随机数发生器,如果需要产生均匀随机数,需要采用SHA256进一步处理