【New】Java学习小记(九)坦克大战学习笔记

看了尚学堂马士兵老师的教程感觉还不错就试试身手根据课堂上听的这些内容就写一下坦克大战的一些程序,那我这里添加了好多注释,都是自己写的帮助大家理解一下这个小项目,还有敲代码的时候需要的是加一下Alt+/这样就可以出一些相应的提示便于打代码,那在这个版本中还加入了一个双缓冲的技术这个技术可以避免因屏幕闪烁而造成的不流畅 主要的原因是每次还来不及等这个图像画出的时候就刷新了 用的方法就是可以引入一个虚拟的图片 具体大家看如下程序:

import java.awt.*;
import java.awt.event.*;
public class TankClient extends Frame{
private static final Color c = null;

//点击TankClient然后重写方法
  int x=50,y=50;//设置位置的变量这样以便以后坦克能运动起来
  
  Image offScreenImage=null;//然后要重写update方法



	public void paint(Graphics g) {
		Color c=g.getColor();
		g.setColor(Color.RED);
	    g.fillOval(x,y, 30, 30);//画一个实心圆
	    g.setColor(c);//把原来的颜色设回来
	    y+=5; //每画一次y+=5	   
	}
	public void update(Graphics g) {//创建一个虚拟的图片 g是屏幕的画笔
		if(offScreenImage==null){
			offScreenImage=this.createImage(800,600);
		}
	Graphics gOffScreen=offScreenImage.getGraphics();//拿到画笔
	Color color=gOffScreen.getColor();
	gOffScreen.setColor(color.GREEN);
	gOffScreen.fillRect(0,0,800,600);
    gOffScreen.setColor(c);
	paint(gOffScreen);//gOffScreen背后图片的画笔
	g.drawImage(offScreenImage,0,0,null);}//里面有四个参数,第一个是画一张图片,
	//第二个是图片左上角点的位置,第三个是一个观察对象,第四个是null
	
	public  void lauchFrame(){
		this.setLocation(400,300);
		this.setSize(800,600);
		this.setTitle("TankWar");//改一下标题栏的名字
		this.addWindowListener(new WindowAdapter(){
		  public void windowClosing(WindowEvent e){
			  System.exit(0);//正常退出
		  }
			
		});
		this.setResizable(false);
		this.setBackground(Color.green);//设置背景色
		setVisible(true);
		new Thread(new PaintThread()).start();//启动线程
	}

 public static void main(String[] args){
	 TankClient tc=new TankClient();
	 tc.lauchFrame();
 }
 
 private class PaintThread implements Runnable {
	//定义一个线程,使用的是内部类,主要是实现重画的线程
	  public void run(){
		  while(true){
			  repaint();
			  try {
				Thread.sleep(50);//每隔50秒重画一次
			} catch (InterruptedException e) {
				
				e.printStackTrace();
			}
		  }
			  
	  }
 }
}

 

图片我就不截了由于是动态的也不大好截大家可以到eclipse上去运行一下还有一个问题是大家有谁知道怎么样生成exe文件谢谢啦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值