Main类是主界面
player1和player2分别是两边的方块
player1可以通过WASD移动,player2通过↑↓←→移动。其中player1可以通过J加速
最后我还加了一个图片,这个图片也可以移动,通过1234
player1也可以通过按k键发射炮弹
明天就要开始好好学Spring了,所以今天先记录一下
大致效果就如图所示:
以下是代码:
Main类:
package MakingMakesMeHappy;
import test.GameUtil;
import test.Plane;
import java.awt.*;
import java.awt.event.*;
public class Main extends Frame {
Image planeImg= GameUtil.getImage(("image/2.png"));
Plane plane=new Plane(planeImg,0,0,20,40,50);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private Image iBuffer;
private Graphics gBuffer;
public static void main(String[] args) {
Main snakeClient = new Main();
snakeClient.lanch();
}//主程序(运行)
public void paint(Graphics scr) {
plane.drawMySelf(scr);
scr.setColor(Color.black);
BaoLei.DrawIt(scr);
scr.setColor(Color.BLUE);
Player1.DrawIt(scr);
Player2.DrawIt(scr);
Shell.draw(scr,5,5);
}
// SplashScreen-Image: splash.gif
public void lanch() {
this.setSize(screenSize);
this.setVisible(true);
this.setBackground(Color.gray);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(-1);
}
});
this.addKeyListener(new KeyMonitor());
PaintThread thread = new PaintThread();
thread.run();
}//创建窗体
class KeyMonitor extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
Player1.addDirection(e);
Player2.addDirection(e);
Shell.FaShe(e);
plane.addDirection(e);
}
@Override
public void keyReleased(KeyEvent e) {
Player1.mimusDirection(e);
Player2.minusDirection(e);
plane.minusDirection(e);
}
}
class PaintThread implements Runnable {
public void run() {
while (true) {
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public void update(Graphics scr) {
if(iBuffer==null)
{
iBuffer=createImage(this.getSize().width,this.getSize().height);
gBuffer=iBuffer.getGraphics();
}
gBuffer.setColor(getBackground());
gBuffer.fillRect(0,0,this.getSize().width,this.getSize().height);
paint(gBuffer);
scr.drawImage(iBuffer,0,0,this);
}
}
player1类:
package MakingMakesMeHappy;
import java.awt.*;
import java.awt.event.KeyEvent;
public class Player1 extends AddGameThings{
static int X = 300;
static int Y = 300;
static int ISpeed = 1;
static boolean left;
static boolean right;
static boolean up;
static boolean iSpeed;
static boolean down;
static boolean s;
static int speed=1;
public static void DrawIt(Graphics g) {
if (left) {
X -= speed;
}
if (right) {
X += speed;
}
if (up) {
Y -= speed;
}
if (down) {
Y += speed;
}
if(iSpeed){
speed=ISpeed;
}
g.fillRect(X, Y, 20, 20);
g.setColor(Color.black);
g.fillRect(X+5,Y+8,19,4);
g.setFont(new Font("仿宋", Font.BOLD, 30));
g.drawString("\u84dd\u65b9\u901f\u5ea6:"+speed,7,770);
}
public static void addDirection(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_J:
iSpeed=true;
ISpeed++;
case KeyEvent.VK_A:
left = true;
break;
case KeyEvent.VK_D:
right = true;
break;
case KeyEvent.VK_W:
up = true;
break;
case KeyEvent.VK_S:
down = true;
break;
}
}//移动监听
public static void mimusDirection(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_J:
iSpeed=false;
case KeyEvent.VK_A:
left = false;
break;
case KeyEvent.VK_D:
right = false;
break;
case KeyEvent.VK_W:
up = false;
break;
case KeyEvent.VK_S:
down = false;
break;
}
}//移动监听
}
player2类:
package MakingMakesMeHappy;
import java.awt.*;
import java.awt.event.KeyEvent;
public class Player2 extends AddGameThings{
static int x2=800;
static int y2=300;
static boolean left;
static boolean right;
static boolean up;
static boolean down;
static int speed=5;
static boolean live =true;
public static void DrawIt(Graphics g) {
if(live) {
g.setColor(Color.YELLOW);
if (left) {
x2 -= speed;
}
if (right) {
x2 += speed;
}
if (up) {
y2 -= speed;
}
if (down) {
y2 += speed;
}
g.fillRect(x2, y2, 20, 20);
if(Shell.SharedX==x2&&Shell.SharedY==y2){
live=false;
}
}
}
public static void addDirection(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_LEFT:
left=true;
break;
case KeyEvent.VK_RIGHT:
right=true;
break;
case KeyEvent.VK_UP:
up=true;
break;
case KeyEvent.VK_DOWN:
down=true;
break;
}
}
public static void minusDirection(KeyEvent e){
switch(e.getKeyCode()){
case KeyEvent.VK_LEFT:
left=false;
break;
case KeyEvent.VK_RIGHT:
right=false;
break;
case KeyEvent.VK_UP:
up=false;
break;
case KeyEvent.VK_DOWN:
down=false;
break;
}
}
}
Shell类:
package MakingMakesMeHappy;
import java.awt.*;
import java.awt.event.KeyEvent;
public class Shell extends AddGameThings{
static int speed = 40;
static int SharedX;
static int SharedY;
public static void FaShe(KeyEvent e){
switch (e.getKeyCode()) {
case KeyEvent.VK_K:
SharedX=Player1.X;
SharedY=Player1.Y;
break;
}
}
public static void draw(Graphics g, int w, int h){
g.setColor(Color.black);
g.fillOval(SharedX+5, SharedY+8, w, h);
SharedX += speed;
}
}
Baolei类:
package MakingMakesMeHappy;
import java.awt.*;
public class BaoLei {
public static void DrawIt(Graphics g) {
g.fillRect(0,100,100,600);
g.fillRect(1430,100,100,600);
g.setColor(Color.red);
g.fillRect(100,100,10,600);
g.fillRect(1420,100,10,600);
}
}