【Java】随机数生成器、GObject、事件驱动

学习资源来自——斯坦福大学2008年的公开课

这部分内容主要是使用java进行绘图的操作,个人觉得是挺有趣的一块内容,看完捣鼓捣鼓自己做个拼图之类的小游戏玩玩也是可以的。

8、
随机数生成器:
    private RandomGenerator rgen=RandomGenerator.getInstance();

    
    方法:
        int nextInt(int low, int high)——返回一个介于两者之间的一个随机数
        int nextInt(int n)——返回一个介于0~n-1的随机数
        double nextDouble(double low, double high)——返回一个随机数d    low<=d<high
        double nextDouble()——返回一个随机数d 0<=d<1
        boolean nextBoolean()——返回true的概率为50%
        boolean nextBoolean(double p)——返回为true的概率为p 0<=p<1
        Color nextColor()——随机产生一种颜色
        赋予随机数计数器的第一个值称为种子,种子决定随机数产生的序列,一般用于测试数据
            rgen.setSeed(1);——用于测试使用

模拟骰子:


10—(10)、

super()——调用父类构造函数

acm.graphics——添加进画布中的图形是有堆叠顺序的

GCanvas——拼贴画的背景画布

画布(GCanvas)和图形程序(GraphicsProgram)具有的方法:
        add(object)  向画布中添加对象
        add(object,x,y)  指定显示坐标
        remove(object)  移除对象
        getElementAt(x,y)-frontmost or null  获取对象坐标
        getHidth()  获取宽度
        getHeight()  获取高度
        setBackground(c)-color 设置画布背景颜色

图形程序独有的方法:
        pause(milliseconds)——暂停(单位为毫秒)  
        waitForClick()——等待鼠标点击事件

    CObjects通用方法:
        setLocation(x,y)  
        move(dx,dy)-偏移量  
        getX() getY()-返回对象的x和y坐标  
        getHidth() getHeight()-返回长和宽  
        contains(x,y)-返回真假(在特定的点处是否有存在对象)  
        setColor(c) getColor()-设置/获取对象颜色  
        setVisible(flag)——true/false  
        isVisible()-如果对象可视visible返回true
        sendToFront() sendToBack()——改变z轴顺序(最前,最后)
        sendForward() sendBackward()——在z轴上移动对象

接口(Interface)——一组方法——有一组类它们都有同一组方法
        填充接口:GFillable——setFilled(flag)  isFilled()  setFillColor(c)  getFillColor()
        设置对象窗口:CResizable——setSize(width,height)  setBounds(x,y,width,height)
        缩放接口:GScalable——scale(sf)-缩放比例  scale(sx,sy)-x,y上分别缩放

与排版有关的与字符有关的线:
        基线(baseline)——字符出现位置的线(有些字符会超出)-下滑线
        字符串高度(height):是指两行基准线之间的距离
        上线(ascent)——指最高的字符——让字符居中显示时使用
        下线(decent)——指基线下字符最远能达到的距离

拼贴画示例:

11-(11)、

GPolygon——画出线段组成的对称图形

需要有一个参考点(假想参考点)——一般是图形的中心点
    
    create an empty polygon
        addVertex(x,y)——指定多边形顶点——x、y是相对于参考点的坐标
        addEdge(dx,dy)——添加一个顶点与前一个点有关

GCompound——画复合的图形-把几种图形复合在一起成为一个对象

 事件驱动程序(Event-driven Programs)

监听器(listener)—impot java.awt.event.*;
            addMouseListeners()    
            addKeyListeners()

 Mouse Events:
            mouseClicked(e)    ——点击
            mousePressed(e)    ——按着鼠标
            mouseReleased(e)——松开鼠标
            mouseMoved(e)    ——移动鼠标
            mouseDragged(e)——按着鼠标拖动

Keyboard Events:
            keyPressed(e)    ——按着鼠标
            keyReleased(e) ——松开鼠标
            keyTyped(e)——按下和释放的复合
        
    图片对象:

画一个菱形(根据顶点的顺序进行连线,可自行调整顺序测试):

鼠标事件监听 :

绘制复合图形:(通过调用可以绘制如下图所示图形)

时间: 2024-12-22 12:27:30

【Java】随机数生成器、GObject、事件驱动的相关文章

Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom(转)

文中的 Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandomSecureRandom即:java.security.SecureRandom Q:Random是不是线程安全的?A:Random是线程安全的,但是多线程下可能性能比较低.参考:http://docs.oracle.com/javase/7/docs/api/java/util/Random.htmlhttp://stac

一、解密随机数生成器(2)——从java源码看线性同余算法(转)

上篇博客中,我们了解了基于物理现象的真随机数生成器,然而,真随机数产生速度较慢,为了实际计算需要,计算机中的随机数都是由程序算法,也就是某些公式函数生成的,只不过对于同一随机种子与函数,得到的随机数列是一定的,因此得到的随机数可预测且有周期,不能算是真正的随机数,因此称为伪随机数(Pseudo Random Number). 不过,别看到伪字就瞧不起,这里面也是有学问的,看似几个简简单单的公式可能是前辈们努力了几代的成果,相关的研究可以写好几本书了!顺便提一下,亚裔唯一图灵奖得主姚期智,研究的就

解密随机数生成器(二)——从java源码看线性同余算法

Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用ThreadLocalRandom变量. Random实

Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandomSecureRandom即:java.security.SecureRandom Q:Random是不是线程安全的?A:Random是线程安全的,但是多线程下可能性能比较低.参考:http://docs.oracle.com

一、解密随机数生成器(1)——真随机数生成器(转)

解密随机数生成器(1)--真随机数生成器 从小就一直很好奇,MP3播放器的随机播放功能是如何实现的,今天读到一篇关于随机数的文章,又勾起了我的那时好奇心,索性上下求索,了解了随机数背后的很多知识,顿觉豁然开朗,特意写这篇文章和大家总结分享一下. 其实,随机数在我们身边无处不在.无论是玩扑克牌麻将骰子时的点数,玩LOL时的玩家匹配,还是高大上的量子物理,核聚变,都无一例外地随机数有关,在混沌理论中,这个世界本身就是一系列随机过程的产物--好吧,有点激动,扯得太远了--作为编程爱好者,应该会发现,每

Java随机数总结

随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Java随机数的产生方式 在Java中,随机数的概念从广义上将,有三种. 1.通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字. 2.通过Math.random()返回一个0到1之间的double值. 3.通过Random类来产生一个随机数,这个是专业的Ra

(转)Java随机数

1 随机数的三种产生方式 本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示. 广义上讲,Java中的随机数的有三种产生方式: (01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字.(02). 通过Math.random()返回一个0到1之间的double值.(03). 通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大. 1.1 第1种 通过System.currentTimeMillis()来获取

关于Java随机数

Java提供两种类型的随机数发生器 1.伪随机数发生器 伪随机数发生器采用特定的算法,将随机数种子seed转换成一系列的伪随机数.伪随机数依赖于seed的值,给定相同的seed值总是生成相同的随机数.伪随机数的生成过程只依赖CPU,不依赖任何外部设备,生成速度快,不会阻塞. Java提供的伪随机数发生器有java.util.Random类和java.util.concurrent.ThreadLocalRandom类. Random类采用AtomicLong实现,保证多线程的线程安全性,但正如该

实现java随机数Random的几招

一,在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,可以产生随机整数.随机float.随机double,随机long,这个也是我们经常用的一个取随机数的方法.  二,在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦  三,其实在Random的默