基于java的“小球撞墙“代码的实现和详细解释

现在,使用java编程一个小小的项目【小球撞墙】,我会详细解释一下代码,希望可以激起大家编程的乐趣,享受编程之美



在小时候看电视的时候,如果突然没有信号,屏幕就会自动进入屏保状态,而电视屏幕的屏保状态,

就是这个有趣的小球撞墙啦!孩童时期还喜欢盯着小球看,以为电视里面真的有个气球呢!哈哈哈哈.....

话不多说,来人!上干货!下面就是小球撞墙的源代码!



(先自己看一遍哦,实在看不懂再看下面第二次代码的解释)


import java.awt.* ;

import javax.swing.* ;


public class MyTest {
public static void main(String args[]) {
JFrame w = new JFrame() ;
w.setSize(500,800) ;

MyPanel j = new MyPanel() ;
w.add(j) ;

Thread t = new Thread(j) ;
t.start();



w.setVisible(true) ;
}
}
class MyPanel extends JPanel implements Runnable {
int x = 30 ;
int y = 30 ;
int att = 0 ;
  public void paint(Graphics g) {

super.paint(g) ;

g.setColor(Color.blue) ;

g.fillOval(x, y, 60, 80) ;
}
public void run() {
while(true) {
if(att==0) {
x++ ;
y++ ;
}
if(att==1) {
x-- ;
y++ ;

}
if(att==2) {
x-- ;
y-- ;
}
if(att==3) {
x++ ;
y-- ;
}
if(x>425) {
if(att==0) {
att=1;
}else{
att=2;
}
}
if(y>675) {
if(att==1){
att=2;
}else{
att=3;
}
}
if(x<0) {
if(att==2) {
att=3;
}else{
att=0;
}
}
if(y<0) {
if(att==3) {
att=0;
}else{
att=1;
}
}
try{
Thread.sleep(5) ;
}catch(Exception e) {}
repaint() ;

}
}

}


好了!

现在好好解释一下上面代码,为了解释能够更加显眼,请容许我解释的时候用上红色字体



import java.awt.* ;
import javax.swing.* ;       导入JFrame的类库


public class MyTest {      

    MyTest就是我们这个小球撞墙的项目名称啦

public static void main(String args[]) {     

   mian是主函数,在java中计算机要调用运行,就必需要先找到main 这个主函数,

    那么括号里面的“String args[]”是什么呢?其实String args[] 是一个参数。在java中带参数的函数和不带参数的函数是两个不同的函数,所以在这里这么写,就是要告诉电脑,咱们要运行的是这个带有String args[] 参数的main函数!

JFrame w = new JFrame() ;

刚刚已经导入了JFrame(窗体)的类库啦,对了,现在我们在这里要做的就是要建立一个JFrame窗体的新对象啦

w.setSize(500,800) ;

设置窗体的长宽分别为500像素和800像素



MyPanel mp = new MyPanel() ;

w.add(mp) ;

(A)【先跳过,等一下我会在后面叫你回来看的】

在MyPanel 中定义一个引用叫mp的对象,,并将mp这个画布放在w的这个窗体上


Thread t = new Thread(mp) ;
t.start();



w.setVisible(true) ;
}
}

class MyPanel extends JPanel implements Runnable {

新建一个MyPanel的类在继承类JPanel,现在可以看回上面的(A)了

int x = 30 ;
int y = 30 ;

int att = 0 ;

//这里定义的是小球撞到墙之后弹向的方向,一共只有4种可能的方向0是右下,1是左下,2是左上,3是右上

  public void paint(Graphics g) {

paint 是 MyPanel 这个类的方法之一,"Graphics g"是paint方法的参数

super.paint(g) ;

g.setColor(Color.blue) ;

设置下面要绘制的图形颜色 

g.fillOval(x, y, 60, 80) ;

Graohics 提供了不少方法来绘制图形,这个g.fillOval方法绘制的是一个实心的椭圆形

}

public void run() {

//在MyPanel类里面增加一个run方法,并要加上implements Runnable,实现run接口

while(true) {


if(att==0) {
x++ ;
y++ ;
}
if(att==1) {
x-- ;
y++ ;

}
if(att==2) {
x-- ;
y-- ;
}
if(att==3) {
x++ ;
y-- ;

}

//下面分别定义4中方向,小球的飞行姿态


if(x>425) {

if(att==0) {
att=1;
}else{
att=2;
}
}
if(y>675) {
if(att==1){
att=2;
}else{
att=3;
}
}
if(x<0) {
if(att==2) {
att=3;
}else{
att=0;
}
}
if(y<0) {
if(att==3) {
att=0;
}else{
att=1;
}

}

//改变小球的飞行姿态

try{

Thread.sleep(5) ;

//线程休眠5毫秒

}catch(Exception e) {}
repaint() ;

}
}
}


你可能感兴趣的:(java)