`
qinweiping
  • 浏览: 128455 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

【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
1
分享到:
评论

相关推荐

    java小记.rar

    我做java web 多年的小记,希望能打大家有用

    GeoStudio学习小记.pdf

    GeoStudio学习小记

    redis安全学习小记1

    redis安全学习小记1

    104规约规约学习小记

    104规约学习,电力系统104规约学习小记,包括固定长度报文,常见帧,报文示例,总召唤命令

    d3js 学习小记

    d3js 的一点点学习心得, 希望能有用.

    java 中时间和日期处理的小记

    时间和日期中常用到的几个类: java.util.Date, java.util.Calendar, java.util.GregorainCalendar, java.text.DateFormat, java.text.SimpleDateFormat

    LocalCache 学习小记1

    第三种:调shard.go中的del ,同理,也是软删除 第四种:定时删除,此删除式是硬删除 第五种:这种删除式般不会被调,故放在最后,是硬删除

    单元测试学习小记

    单元测试学习小记软件测试什么是单元测试单元在程序里可以简单的理解为一个模块,一个方法。单元测试也就是在完成每个模块后都进行的测试。从确保每个模块没有问题,从而提高整体的程序质量。做单元测试的好处对于...

    STM8S+STVD+COSMIC折腾小记

    STM8S+STVD+COSMIC折腾小记.专为新手准备

    百度paddle课程学习小记(上)

    百度paddle课程学习小记(上)百度paddle课程学习小记(上)Day-1:python基础练习Day-2:《青春有你2》选手信息爬取遇到的问题Day-3《青春有你2》选手数据分析遇到的问题未完待续 百度paddle课程学习小记(上) 第...

    VC学习小记

    Windows消息机制 Visual C++/MFC开发 MFC中常用类,宏,函数 和GUI有关的各种对象 在窗口中输出文字 使用点,刷子,笔进行绘图 在窗口中绘制设备相关位图,图标,设备无关位图 使用各种映射方式 ...

    【咬人草小记,阅读附答案】 咬人草小记阅读答案.docx

    【咬人草小记,阅读附答案】 咬人草小记阅读答案.docx

    CAPWAP学习小记

    小弟工作中接触无线网络,就学习了CAPWAP技术,然后小小总结一下.....

    linux+java+python3+numpy+stl的3d打印小记

    linux+java+python3+numpy+stl的3d打印

    python进行爬虫小记

    python进行爬虫小记,主要用于python快速入门理解。

    流程图与控制流图课堂小记.doc

    流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记.流程图与控制流图课堂小记....

    SQL学习小记

    NULL 博文链接:https://alex-cheung.iteye.com/blog/1819011

    TCP-IP小记

    TCP-IP小记

    Java transient关键字使用小记

    哎,虽然自己熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~...

    C++编程小记,经典收藏

    很全面的,很实用的,看完提高不少,不管新手老手,都绝对有用

Global site tag (gtag.js) - Google Analytics