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

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;

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值