随机数,美丽的地方就在于不确定。
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; } }
相关推荐
在Linux操作系统中,shell脚本是编写自动化...这些技巧的使用能够让shell脚本的编写更加丰富多彩,同时提升脚本的灵活性和实用性。在处理需要随机性的自动化任务时,合理利用这些方法能够显著提高脚本的效率和可靠性。
通过理解并灵活运用这些技巧,开发者可以创建出各种具有随机性的功能,让程序更加丰富多彩。在易语言中,虽然语法与JavaScript不同,但其核心思想是相通的,同样可以通过类似的逻辑来实现随机数的生成。
画板组件提供了丰富的绘图函数,如填充颜色、线条绘制、文字输出等,可以用来构建验证码的各种形状和颜色。 2. **随机数生成**:为了生成不规则且难以预测的验证码,程序需要使用随机数生成器。易语言提供了生成...
此外,MATLAB还提供了颜色映射(colormap)和色彩条(colorbar)等功能,可以让生成的图像更加丰富多彩。程序可能使用`colormap`来改变图像的颜色方案,或者使用`colorbar`来显示颜色与值的对应关系。 在程序运行...
总的来说,掌握Scratch中的显示与隐藏功能,不仅可以提升编程技能,还能激发创意,创造出丰富多彩的互动故事和游戏。通过实践,孩子们能够更好地理解和应用编程逻辑,为未来的学习打下坚实的基础。
结合烹饪、户外活动或其他娱乐项目,可以创建一个丰富多彩的活动日程。选择适合所有参与者的游戏和活动,确保考虑年龄、兴趣和身体状况,让大家都能参与进来,享受聚会的乐趣。通过这样的互动,不仅可以放松身心,还...
《C++实现2048游戏详解》 2048是一款广受欢迎的数字合并游戏,玩家通过上、下、...在实践中,还可以根据自己的兴趣和需求,进一步优化代码结构,提高游戏性能,甚至加入网络对战等功能,使2048游戏变得更加丰富多彩。
易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业的用户也能快速上手编程。...在实践中不断探索和改进,你将能更好地运用易语言创造丰富多彩的视觉效果。
该程序基于Visual Basic (VB)语言开发,允许用户根据自身需求进行定制,使得年会活动更加丰富多彩。 首先,让我们深入理解这款程序的核心功能。随机抽奖是程序的基础,它利用VB内置的随机数生成函数,确保每次抽奖...
这些库提供了高效且灵活的图形绘制功能,能够帮助开发者创建出丰富多彩的动态效果。 2. **粒子系统**:彩球飘动的效果可能采用了粒子系统的设计,粒子系统是一种模拟复杂动态效果的方法,通过大量简单对象(粒子)...
9. **颜色控制**:虽然标准的C语言不直接支持彩色输出,但通过一些终端控制序列(如ANSI转义码),可以在某些平台上实现颜色输出,让烟花效果更丰富多彩。 10. **程序优化**:为了使烟花效果更加流畅,可能需要考虑...
5. **颜色和随机数**: 为了使烟花效果更加丰富多彩,可能会用到Java的色彩类Color以及随机数生成器Random。烟花的颜色、大小、速度等属性可以通过随机数来生成,增加视觉的随机性和多样性。 6. **HTML集成**: "test...
在IT领域,JavaScript(简称JS)是一种广泛使用的前端编程语言,尤其在网页开发中,它为用户界面提供了丰富的动态效果和交互性。本资源“多边形多彩折纸构图动态圆球js特效动画.zip”包含了一个利用JavaScript实现的...
《43-Flappybird-少儿编程scratch项目源代码文件案例素材》是一个针对儿童和初学者设计的游戏开发案例,旨在教授使用Scratch编程语言创建一...同时,团队合作也能进一步培养沟通协作的能力,使得学习过程更加丰富多彩。
在Python编程语言中,标准库提供了许多有用的功能模块,其中包括turtle模块和random模块。turtle库主要用于图形绘制,而random库则用于生成各种...通过掌握这些基础功能,可以创建出丰富多彩的图形和模拟随机现象。
烟花的发射方向、速度和颜色变化可以通过随机数实现,VB的`Randomize`函数和`Rnd`函数能帮助我们生成随机参数,使烟花展示更加丰富多彩。 4. **坐标系统和数学运算**: 在二维坐标系中,烟花的运动轨迹可以通过...
蒙特卡洛方法的应用实例丰富多彩,例如,可以通过向正方形内随机投掷点来估算不规则图形的面积,比例为落入图形内的点数除以总投掷点数。这种方法类似于民意测验,通过小样本调查来推断整体趋势。 在科技计算领域,...
通过本教程的学习,读者不仅能够掌握基础的Python编程知识,还能学会如何利用Python进行图形化界面设计,以及如何通过随机数生成丰富多彩的效果。 #### 二、基础知识回顾 在开始之前,我们先简要回顾一下几个关键...
### 使用VB制作下雪特效景象知识点详解 #### 一、知识点概述 在计算机图形学领域,特效编程一直是吸引用户注意并提升用户体验的重要手段之一。...通过不断地实践和改进,开发者可以创造出更加丰富多彩的应用程序。
Python中,可以通过`random`模块生成随机颜色,或者使用`colorsys`模块将RGB颜色转换为HSV(色相、饱和度、亮度)模型,以实现更丰富的色彩变化。 3. **随机数生成**:烟花的发射位置、方向、速度和颜色等属性都...