⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example7_5.java

📁 书中的例题
💻 JAVA
字号:

import java.awt.*; 
import java.awt.event.*;
/* 定义弹子类 */
class Marble extends Thread
{
   Table table=null;
   int x,y,xdir,ydir;
  public Marble(Table _table,int _x,int _y,int _xdir,int _ydir)
	{
	  table=_table;    //使用该参数,是为了能获取到窗口的大小
	  x=_x;            //x坐标
	  y=_y;            //y坐标
      xdir= _xdir;     //x方向速度
      ydir= _ydir;     //y方向速度
	}

 public void run()
  {
   while(true)
    {
      if((x>(table.getSize().width)-25)||(x<0))
			xdir*=(-1); //超过台子x方向边界后,反方向运行
      if((y>(table.getSize().width)-25)||(y<0))
			ydir*=(-1);	//超过台子y方向边界后,反方向运行
	  x+=xdir;            //坐标递增 以实现移动
	  y+=ydir;
      try{ sleep(30);    //延时时间(1/刷新率)
	  } catch(InterruptedException e)
         {System.err.println("Thread interrupted");}
	   table.repaint();  //重绘图形     
   }
 }

 public void draw(Graphics g)
  {
    g.setColor(Color.black);   //弹子为黑色
    g.fillOval(x,y,30,30);     //画圆
    g.setColor(Color.white);   //弹子上的亮点为白色
    g.fillOval(x+5,y+5,8,6);   
  }
}

/* 定义弹子球台类 */
class Table extends Frame implements ActionListener
{
	 Button start=new Button("开始");
	 Marble marbles[]=new Marble[5];   //建立弹子线程类对象数组
	 int v=2;                          //速度最小值
	public Table()
	{
		super("弹子台球");
		setSize(300,300); 
		setBackground(Color.cyan); //背景
		setVisible(true);
		setLayout(new FlowLayout());
		add(start);
		start.addActionListener(this);
		validate();
		addWindowListener(new WindowAdapter()
		{
		 public void windowClosing (WindowEvent e)
			{System.exit(0);}
		} );
	}

 public void actionPerformed(ActionEvent ae)
  {
	 for(int i=0;i<marbles.length;i++)
		{  //随机产生弹子的速度和坐标
		  int xdir=i*(1-i*(int)Math.round(Math.random()))+v;
          int ydir=i*(1-i*(int)Math.round(Math.random()))+v;
		  int x=(int)(getSize().width*Math.random());
		  int y=(int)(getSize().height*Math.random());
		  //实例化弹子线程对象
		  marbles[i]=new Marble(this,x,y,xdir,ydir);
          marbles[i].start();
	   }
  }
	public void paint(Graphics g)
	{
		for(int i=0;i<marbles.length;i++)
          if(marbles[i]!=null)
             marbles[i].draw(g);
	}
}
  
/* 定义主类 */
public class Example7_5
{
	public static void main(String args[])
	{
		Table table=new Table();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -