course2 tank class

master
Jian Hu 3 years ago
parent d3c149d8b8
commit a5dc4a3a21

Binary file not shown.

@ -1,7 +1,7 @@
package com.demo.tank.coruse1;
public class Main {
public static void main(String[] args) throws InterruptedException {
public static void main(String[] args){
TankFrame tf = new TankFrame();
}
}

@ -0,0 +1,5 @@
package com.demo.tank.coruse2;
public enum Direction {
LEFT, RIGHT, UP, DOWN;
}

@ -0,0 +1,10 @@
package com.demo.tank.coruse2;
import com.demo.tank.coruse1.TankFrame;
public class MainV2 {
public static void main(String[] args){
TankFrame tf = new TankFrame();
tf.repaint();
}
}

@ -0,0 +1,56 @@
package com.demo.tank.coruse2;
import java.awt.*;
public class Tank {
private int x,y;
private Direction dir;
private static final int SPEED = 10;
public Tank(int x, int y, Direction dir) {
this.x = x;
this.y = y;
this.dir = dir;
}
public void paint(Graphics g) {
g.fillRect(x, y,50,50);
switch (dir){
case UP: y -= SPEED;
break;
case DOWN: y += SPEED;
break;
case LEFT: x -= SPEED;
break;
case RIGHT: x += SPEED;
break;
default:
break;
}
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Direction getDir() {
return dir;
}
public void setDir(Direction dir) {
this.dir = dir;
}
}

@ -0,0 +1,86 @@
package com.demo.tank.coruse2;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankFrame extends Frame {
Tank tank = new Tank(500, 500, Direction.UP);
public TankFrame(){
setVisible(true);
setSize(800, 600);
setResizable(false);
setTitle("tank war");
this.addKeyListener(new MyKeyListener());
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g){
tank.paint(g);
}
class MyKeyListener extends KeyAdapter{
boolean bL = false;
boolean bR = false;
boolean bU = false;
boolean bD = false;
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()){
case KeyEvent.VK_A:
bL = true;
break;
case KeyEvent.VK_D:
bR = true;
break;
case KeyEvent.VK_W:
bU = true;
break;
case KeyEvent.VK_S:
bD = true;
break;
default:
break;
}
setTankDirection();
}
@Override
public void keyReleased(KeyEvent e) {
switch (e.getKeyCode()){
case KeyEvent.VK_A:
bL = false;
break;
case KeyEvent.VK_D:
bR = false;
break;
case KeyEvent.VK_W:
bU = false;
break;
case KeyEvent.VK_S:
bD = false;
break;
default:
break;
}
setTankDirection();
}
public void setTankDirection(){
if(bL) tank.setDir(Direction.LEFT);
if(bR) tank.setDir(Direction.RIGHT);
if(bU) tank.setDir(Direction.UP);
if(bD) tank.setDir(Direction.DOWN);
}
}
}
Loading…
Cancel
Save