1. 匿名类:

2.画圆方法:public void paint(Graphics g) {

Color c=g.getColor();保存原来的前景色

g.setColor(Color.RED);

g.fillOval(50, 50, 30, 30);

g.setColor(c);设置原来的前景色

}从frame生成方法,且自动调用

3.实现动画效果:改变坐标,new一个线程调用repaint重画。(内部类)

调用一个线程:new Thread(new PaintThread()).start();

public class PaintThread implements Runnable{

public void run() {

while(true){

repaint();会自动调用前面的paint方法。

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

4.闪烁现象:使用双缓冲消除。设置一个虚拟屏幕。

Update方法位于container.

Image 方法Image picture =null;定义一个图像。

public void update(Graphics g) {

if(offScreenImage==null){

offScreenImage=this.createImage(800,600);

}

Graphics gOffscreen=offScreenImage.getGraphics();

Color c=gOffscreen.getColor();

gOffscreen.setColor(Color.GRAY);

gOffscreen.fillRect(0, 0, 800, 600);

gOffscreen.setColor(c);

paint(gOffscreen);

g.drawImage(offScreenImage, 0, 0, null);

}使用缓冲图像消除闪烁。

5.定义常量:public static final GAME_WIDTH=800;

Public static final GAME_HEIGHT=600;

6.键盘控制坦克移动。建立键盘监听类。内部类。

private class KeyMonitor extends KeyAdapter{

public void keyPressed(KeyEvent e) {

int key=e.getKeyCode();

switch(key){

case KeyEvent.VK_LEFT:

x=x-5;

break;

case KeyEvent.VK_RIGHT:

x=x+5;

break;

case KeyEvent.VK_UP:

y=y-5;

break;

case KeyEvent.VK_DOWN:

y=y+5;

break;

}

}

}

7.增加一百辆坦克.直接把坦克定义为一个类.利用面向对象思维.并把和坦克相关的方法,属性都添加进去.

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

public class Tank {

int x,y;

public Tank(int x, int y) {

this.x = x;

this.y = y;

}

public void draw(Graphics g) {

Color c=g.getColor();

g.setColor(Color.RED);

g.fillOval(x, y, 30, 30);

g.setColor(c);

}

public void keyPressed(KeyEvent e) {

int key=e.getKeyCode();

switch(key){

case KeyEvent.VK_LEFT:

x=x-5;

break;

case KeyEvent.VK_RIGHT:

x=x+5;

break;

case KeyEvent.VK_UP:

y=y-5;

break;

case KeyEvent.VK_DOWN:

y=y+5;

break;

}

}

}

java坦克大战的总结_坦克大战总结(估计是马士兵的坦克大战) | 学步园相关推荐

  1. java gui 监听组合键_【CSDN常见问题解答】Swing监听组合键 | 学步园

    其实监听键盘事件和简单,键盘也就这3个事件keyTyped, keyReleased, keyPressed 下面我们就监听一个CTRL+C组合键好了. import java.awt.Color; ...

  2. Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园

    为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...

  3. java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物 | 学步园...

    package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...

  4. 算法时间复杂度lg是多少_斐波那契数的 O(lgn) 时间复杂度算法 | 学步园

    看了 This problem compares the efficiency of three methods for computing the nth Fibonacci number Fn, ...

  5. java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园

    简单工厂模式的UML图 源码:Operation类 Java代码 packageOperation; publicabstractclassOperation { doublenumberA=0; d ...

  6. java 抽象工厂 类图_spring学习中常用到的工厂,抽象工厂学习 | 学步园

    工厂模式有简单工厂模式,工厂方法模式和抽象工厂模式几种形态.其中简单工厂模式和工厂方法模式已经在前面作过介绍.在这里,我们来介绍抽象工厂模式. 抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的 ...

  7. java jxl创建多个sheet,使用jxl导出excel时怎么创建多个sheet | 学步园

    虽然知道excel导出可能会出现要记录要分多个sheet的情况,但迄今为止还是没有遇到过,今天有空试了一把 export try{ 查询开始/// Class.forName("oracle ...

  8. runtime批处理mysql导出_【原】使用批处理BAT文件处理Mysql数据库 | 学步园

    在做项目的时候,考虑到项目中很多模块是公用,数据库也是公用,所以考虑把公用模块的数据库全部用批处理生产,这样或多或少提高了一些效率. 处理方法是: 1:用一个txt保存该项目数据库名称,方便新建工程时 ...

  9. java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

    最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...

最新文章

  1. linux 邮件中继转发,linux – 如何使sendmail中继本地邮件?
  2. VI打开和编辑多个文件的命令
  3. ACM常见问题之【求逆序对】
  4. SAP FICO期初开账存货导入尾差
  5. NodeJs两个简单调试技巧
  6. mapbox 导航_狂甩不掉,骑行最稳手机支架!一体式安装太方便,秒变单车导航仪...
  7. 1092 回文字符串(51nod)
  8. 华为平板matepad pro鸿蒙,华为MatePad Pro 2平板电脑入网:首款预装鸿蒙OS
  9. 深圳电大计算机等级考试报名时间2015,杭州2015下半年计算机等级考试报名
  10. CAD迷你看图 for Mac
  11. 反射在工厂模式中的使用
  12. 从“西点军校法则”学管理
  13. 接口地址没错但是报404
  14. FileReader 对象实现图片预览
  15. 如何把PDF文件转换成其他格式或者转换成可编辑的PDF格式
  16. 阿里云ECS和WorldPress + Nginx实现固定连接策略
  17. 微信扫码 android sdk,H5中js-sdk扫码功能,Android手机微信中无法调用扫码?
  18. canvas图片处理
  19. Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper
  20. c语言判断字符是否为某字母,判断字符是否为字母

热门文章

  1. 详解PCB线路板覆铜基础知识
  2. 【FME-HOW-TO系列】18 从点生成等高线数据
  3. 曼彻斯特解密_曼彻斯特编码与解码
  4. 将数据保存为CSV形式存储
  5. Gitlab 双重认证和访问令牌的使用
  6. 程序员拿到拼多多和招行信用卡工作,吐槽都是侮辱价不知如何选
  7. EFT试验复位案例分析
  8. 微信小程序开发常见问题FAQ之七
  9. 在雨中跑步淋雨多还是走路淋雨多?
  10. STM32驱动1602A 8086协议