小球动画代码

package test;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 游戏基本知识测试类 
 * @author Administrator
 *
 */
public class GameFrame extends Frame{	
	//GUI编程:AWT,swing等。一般工作用不到
	Image img = GameUtil.getImage("images/sun.jpg");
	
	
	/**
	 * 加载窗口
	 */
	public void launchFrame(){
		setSize(500,500);		//窗口的大小设置
		setLocation(100,100);	//点的坐标
		setVisible(true); //可视
		
		new PaintThread().start();//启动重画线程
		
		addWindowListener(new WindowAdapter(){					//这段代码用来关闭窗口
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});
	}
	
	private double x=100,y=100;			//X和Y轴的大小
	
	@Override
	public void paint(Graphics g) {					//这里是运行框里的各种属性
		g.drawLine(100, 100, 200, 200);				//画一条线的方法,后面是参数
		g.drawRect(100, 100, 200, 200);				//画矩形的方法,后面是参数
		g.drawOval(100, 100, 200, 200);				//画圆的方法,后面是参数
		
		Font f = new Font("黑体",Font.BOLD,50);		//设置字体的方法
		g.setFont(f);								//通过设置f来得到上面的方法
		
		g.drawString("我是科学家", 200, 200);			//写字的方法
		
		
		g.fillRect(100, 100, 20, 20);				//画实心矩形的方法
		
		Color c = g.getColor();						//颜色的方法
		g.setColor(Color.GRAY);
		g.fillOval(300, 300, 20, 20);
		g.setColor(c);						
		
		g.drawImage(img, (int)x, (int)y,null);
		x += 3;			//动画的实现,通过改变XY的坐标
		y += 3;		
	}
	/**
	 * 定义一个重画窗口的线程类,是一个内部类
	 * @author Administrator
	 *
	 */
	
	class PaintThread extends Thread{		//通过这个方法不断的重复动画的运动,重画过程
		public void run(){
			while(true){		//死循环
				repaint();
				try {
					Thread.sleep(40);
				} catch (InterruptedException e) {
					e.printStackTrace();
				} //1s = 1000ms
			}
		}
		
	}



	public static void main(String[] args) {
		GameFrame gf = new GameFrame();
		gf.launchFrame();
	}
}

 

转载于:https://my.oschina.net/u/3407608/blog/888368

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值