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. C# 使用xsd文件验证XML 格式是否正确
  2. python中的for A in B for i in range()
  3. phpwind管理权限泄露漏洞
  4. 2021暑假每日一题 【week7 完结】
  5. Spark _30_SparkStreaming算子操作Driver HA
  6. OllyDBG 入门之四--破解常用断点设
  7. IDEA 载入jQuery的方法
  8. Web Hacking 101 中文版 二十、漏洞报告
  9. git 将dev分支的代码合并到master并添加对应的Tag
  10. pythontransform详解_Python自定义聚合函数merge与transform区别详解
  11. leetcode每日一题2021.7.14【1818. 绝对差值和】
  12. CSDN博客主页增加赞赏码收钱模块,高端大气上档次!
  13. 每日一题_447.回旋镖的数量
  14. Pycharm | cv2爆红 | opencv-python安装 | Requirement already satisfied: opencv-python 有效解决方法
  15. error LNK2001的解决方法
  16. SQL 如何去掉字段中千位的逗号(比如set @= '1,320.00' 想得到@= '1320.00' )
  17. 解读人工智能、大数据和云计算的关系,大佬们赌AI竟都输了?
  18. C语言每日一练——第90天:青蛙跳台阶(升级版)
  19. new Object()和Object.create()的区别
  20. # HenCoder Android 自定义 View 1-8 硬件加速

热门文章

  1. 热敏电阻、RTD和热电偶之间的区别
  2. 我整理的CSS - lbx
  3. 信管师培训之第十三节课作业(战略管理+业务流程管理+知识管理)
  4. 四川整治城乡环境治理工作1年问责404人-四川-环境-问责
  5. eclipse查看项目所在文件夹
  6. ARM学习之ARM基础知识(一)
  7. 卫浴品牌线上推广怎么做有效果?
  8. VUE-获取本地局域网IP地址
  9. 浅谈一下对cocos2d-x中九宫格精灵的简单理解和使用
  10. netsh命令恢复网络_netsh命令解决网络切换有关问题