用java创造两个方块,通过键盘控制移动

Main类是主界面

player1player2分别是两边的方块

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);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值