首页 > 编程语言 >上机题目(初级)- 下雪球(Java)

上机题目(初级)- 下雪球(Java)

时间:2022-11-11 14:31:26浏览次数:44  
标签:Java 上机 int frame 30 import new public 雪球


上一节实现了滚雪球的代码,这一节实现下雪球的代码,简单考虑,制造一个循环,产生30个随机数,代码如下:

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;

public class SnowBall {

public static void main(String[] args) {
Frame frame=new Frame();
frame.setBackground(Color.BLACK);
frame.setSize(1024, 768);

MyPanel myPanel=new MyPanel();
frame.add(myPanel);

Thread thread=new Thread(myPanel);
thread.start();
frame.show();
}

}

class MyPanel extends Panel implements Runnable{
int y=0;

@Override
public void paint(Graphics g) {
g.setColor(Color.WHITE);
for (int i = 0; i < 30; i++) {
y=(int)(Math.random()*768);
int x=(int)(Math.random()*1024);
g.fillOval(x, y, 20, 20);
}

}
@Override
public void run() {
for (int i = 0; i < 30; i++) {

while (true) {
y++;
if(y>768){
y=0;
}
repaint();
try {
Thread.sleep(700);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
}

}

这时运行实例:

上机题目(初级)- 下雪球(Java)_java

这时发现不是下雪球,而是满屏幕乱散。思考一下问什么,原因是每次paint都会在全新的300个位置画雪球。因此我们必须要实现准备30个随机坐标。

代码如下:

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;

public class SnowBall {

public static void main(String[] args) {
Frame frame = new Frame();
frame.setBackground(Color.BLACK);
frame.setSize(1024, 768);

MyPanel myPanel = new MyPanel();
frame.add(myPanel);

Thread thread = new Thread(myPanel);
thread.start();
frame.show();
}

}

class MyPanel extends Panel implements Runnable {

int x[] = new int[30];
int y[] = new int[30];

public MyPanel() {
for (int i = 0; i < 30; i++)

{
x[i] = (int) (Math.random() * 1024);
y[i] = (int) (Math.random() * 768);

}
}

@Override
public void paint(Graphics g) {
g.setColor(Color.WHITE);

for (int i = 0; i < x.length; i++) {
g.fillOval(x[i], y[i], 20, 20);
}

}

@Override
public void run() {

while (true) {
for (int i = 0; i < 30; i++) {
y[i]++;
if (y[i] > 768) {
y[i] = 0;
}

try {
Thread.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
repaint();

}
}
}


运行如下:

这时就是不乱了。还有其他创意可以加入,读者自行设计。

标签:Java,上机,int,frame,30,import,new,public,雪球
From: https://blog.51cto.com/u_15866446/5844865

相关文章

  • 如何通过Java 在 Word 中更改字体颜色
    在Word文档中使用不同的字体颜色既可以丰富文档外观,也能突出强调某些重点部分。当Word文档包含大量内容时,可以使用FreeSpire.DocforJava轻松更改Word文档中的字体颜色。......
  • java逻辑运算中 | | 和 | 的区别
    本文主要阐明逻辑运算中||(短路或)和|(逻辑或)的异同||和|的相同之处:只有二者都是假时,结果才为假,否则结果为true。||和|的不同之处在于:a||b:如果a为true......
  • java逻辑运算&&与&的区别
    本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a&&b和a&b:共同之处是只有a和b同时为真时,结果才为真,否则为假不同点在于a&&b(短路与)若a为假时,则无需判断b,直接得出结......
  • [JavaScript-10]this指向
    1.默认绑定//全局环境指向windowconsole.log(this);//函数独立调用,函数内部this指向windowfunctionfn(){console.log(this);}fn();//函数当做对象方法......
  • Java--static 关键字小研究
    一、用static修饰的静态代码块:classDemo{{System.out.println("1、构造块。");}static{System.out.println("0、静态代码块。");}publicDemo(){Sys......
  • 蛋疼的Caused by: java.lang.ClassNotFoundException
    开发中最长遇到的错误提示,遇到这种错误提示,一般可能有:1.忘记在AndroidManifest中配置,这个很好解决,在里面配置一下就行了。2.更常见的问题是在引入外包时出现这个问题,怎么解......
  • Android实战--小DEMO(JAVA关键字学习)一
    学习技术最好的方式就是实战,看书看不到的东西太多了,实际操作时会碰到各种书本里提不到的问题,解决这些问题会迅速提升你的能力,你是一个solider,最好成长的方式就是实战。下面......
  • 【Java】guava(六)函数式编程与惰性求值
    举个例子,比如我们的web服务器应用,我们可能会写一个类似拦截器一样的模块来提前把一些公共参数抽取出来,比如像token,userid,ip地址等等这样的信息,放入一个类似ThreadLocal的对......
  • 【Java】okHttp3 简单使用
    之前用的RestTemplate,发现一个multipart的http请求始终发不成功,后面就试了下okHttp,发现真的好用,api太清爽了,记录一下使用:packagecom.liyao;importjava.io.FileInputStream......
  • 【Grpc(一)】Java 何如理解StreamObserver?
    刚开始接触Grpc时,桩代码里有许多StreamObserver类型,不太清楚是怎么用的,这里做一个记录。首先看下StreamObserver接口定义:publicinterfaceStreamObserver<V>{voidon......