看了尚学堂马士兵老师的教程感觉还不错就试试身手根据课堂上听的这些内容就写一下坦克大战的一些程序,那我这里添加了好多注释,都是自己写的帮助大家理解一下这个小项目,还有敲代码的时候需要的是加一下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文件谢谢啦
分享到:
相关推荐
Java Web开发是软件行业中一个广泛讨论的话题,涵盖了诸如Servlet、JSP、JDBC、MVC框架、企业级组件以及各种工具和技术。...通过学习和参考这些笔记,可以提升Java Web开发技能,更好地应对实际项目中的挑战。
GeoStudio学习小记
在Java编程语言中,`transient`关键字是一个非常重要的概念,它与对象的序列化过程紧密相关。序列化是将一个对象的状态转换为字节流,以便存储或在网络中传输。当一个类实现了`Serializable`接口,该类的对象就可以...
### D3.js 学习小记 #### SVG基础与D3.js绘图实践 ##### SVG基础 SVG(可缩放矢量图形)是一种基于XML的矢量图像格式,用于描述二维图形以及图形应用。SVG 图像可以被放大、缩小而不会失真,非常适合于网页制作。...
《VC学习小记》 学习Visual C++,也就是VC,是一项技术性强且深入的工程,尤其对于初学者来说,需要有良好的C/C++基础作为支撑。C++的基础知识包括语法、面向对象编程概念以及模板等高级特性,这些都是使用MFC...
【LocalCache 学习小记1】 LocalCache 是一种本地高速缓存机制,它主要用于提升数据获取速度,尤其是在处理大量数据时,可以有效避免频繁访问远程数据库或分布式缓存,如 Redis 中的热键问题。LocalCache 不是...
本章节将重点围绕104规约的学习小记,包括固定长度报文的基本结构、常见帧的类型、报文示例及总召唤命令等几个方面进行详细解析。 #### 二、固定长度报文 固定长度报文是104规约中的一种基本报文形式,其结构相对...
时间和日期中常用到的几个类: java.util.Date, java.util.Calendar, java.util.GregorainCalendar, java.text.DateFormat, java.text.SimpleDateFormat
Redis是一款高性能的键值存储系统,常用于缓存和数据库应用。本文主要探讨Redis的安全问题,包括连接方式、数据加密、认证机制、数据备份以及主从复制等方面。 首先,Redis的默认配置可能存在安全风险,例如它允许...
标题 "SQL学习小记" 暗示了这篇博客文章主要关注的是SQL语言的学习和实践。SQL(Structured Query Language)是用于管理和处理关系数据库的标准编程语言。以下是对这个主题的详细探讨: SQL基础: 1. 数据类型:SQL...
单元测试学习小记软件测试什么是单元测试单元在程序里可以简单的理解为一个模块,一个方法。单元测试也就是在完成每个模块后都进行的测试。从确保每个模块没有问题,从而提高整体的程序质量。做单元测试的好处对于...
百度paddle课程学习小记(上)百度paddle课程学习小记(上)Day-1:python基础练习Day-2:《青春有你2》选手信息爬取遇到的问题Day-3《青春有你2》选手数据分析遇到的问题未完待续 百度paddle课程学习小记(上) 第...
在本项目中,我们将探索如何利用Linux操作系统,Java编程语言,Python3,NumPy库以及STL文件格式来实现3D打印技术。这是一个跨学科的综合应用,涉及到计算机科学、软件开发以及制造技术。 首先,Linux是开源的操作...
在“android开发小记”这个主题中,我们可以深入探讨Android应用程序开发的相关知识,特别是通过查看提供的压缩文件中的代码示例。这些文件名如lesson_8_code.zip至lesson_20_codel.zip,以及不同的Mp3Player版本,...
### STM8S+STVD+COSMIC折腾小记 #### 一、STM8S存储器模式及编程细节 STM8S微控制器支持两种不同的存储器模式:`-stackshort(mods0)` 和 `-StackLong(modsl0)`。这两种模式分别针对不同的内存管理需求。 1. **`-...
CAPWAP(Control and Provisioning of Wireless Access Points)协议是一种用于无线接入点(AP)与无线控制器(AC)之间通信的标准化协议。该协议的主要目标是解决大规模无线网络部署中的管理和配置难题,使得瘦AP...
《Xstream使用小记》 Xstream是一款Java库,它提供了简单且强大的方式来序列化和反序列化Java对象到XML,以及从XML回转换为Java对象。在本文中,我们将深入探讨Xstream的核心概念、使用场景以及如何通过实例进行...
auto p = new Foo(); // p 是 Foo* 类型 ``` - **优点**:减少代码长度,特别是在处理复杂类型时(如STL容器中的迭代器)。 - **注意事项**:`auto`不能用于声明函数的返回值,但在模板函数中有特殊用法——尾随...
环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed ...小记一下。以备以后参考。 boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。 全部编译是很痛苦的过程