国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實現(xiàn)王者榮耀小游戲

這篇具有很好參考價值的文章主要介紹了Java實現(xiàn)王者榮耀小游戲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

主要功能

鍵盤W,A,S,D鍵:控制玩家上下左右移動。按鈕一:控制英雄發(fā)射一個矩形攻擊紅方小兵。按鈕控制英雄發(fā)射魅惑技能,傷害小兵并讓小兵停止移動。技能三:攻擊多個敵人并讓小兵停止移動。普攻:對小兵造成基礎(chǔ)傷害。小兵每隔一段時間自動生成,在王者峽谷下路移動,遇到敵人則自動攻擊。防御塔可以自動識別敵人進行攻擊。野怪分為RedBuff,BlueBuff,普通野怪,死亡后都可以復(fù)活。游戲勝利的條件是紅方水晶生命值為零,游戲失敗條件是藍方水晶生命值為零。游戲的設(shè)計模式為可以偷塔。
游戲流程圖?
Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)

一,主窗口類

作用:初始化變量,窗口的啟動方法,鍵盤監(jiān)聽事件,添加按鈕事件,游戲不同狀態(tài)的變化,播放背景音樂。

package com.sxt;
 
import com.sxt.beast.Beast;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.ArrayList;
 
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class GameFrame extends JFrame {
    // 游戲開始 0, 游戲勝利1,游戲失敗2
    int state = 0;
    // 窗口尺寸
    final int windowWidth = 1400;
    final  int windowHeight = 700;
    // 雙緩沖圖片
    private Image offScreenImage = null;
    // 攻擊圖片
    private Image attack = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\attack.jpg");
    //游戲勝利失敗圖片
    private Image gameWin = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\gameWin.png");
    private Image gameLose = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\gameLose.png");
    // 游戲背景
    Background background = new Background(this);
    // 游戲玩家
    Champion player = new ChampionDaji(this);
    // 雙方小兵
    MinionBlue mb = new MinionBlue(this);
    MinionRed mr = new MinionRed(this);
    //野怪
    public Beast beast = new Beast(this);
    // 防御塔
    Turret turret = new Turret(this);
    // 游戲元素列表
   public ArrayList<GameObject> objList = new ArrayList<>();
    ArrayList<GameObject> redList = new ArrayList<>();// 紅色方
    ArrayList<GameObject> blueList = new ArrayList<>();// 藍色方
    public ArrayList<GameObject> removeList = new ArrayList<>();// 存放將要刪除的元素
 
    public void launch() {
        // 設(shè)置尺寸
        setSize(windowWidth, windowHeight);
        // 窗口居中
        setLocationRelativeTo(null);
        // 關(guān)閉事件
        setDefaultCloseOperation(3);
        // 用戶不能調(diào)整窗口大小
        setResizable(false);
        // 標題
        setTitle("王者榮耀");
        // 窗口可見
        setVisible(true);
        // 添加鍵盤監(jiān)視器
        this.addKeyListener(new GameFrame.KeyMonitor());
        // 添加游戲元素
        objList.add(background);
        objList.add(player);
        objList.addAll(beast.beastList);
        objList.addAll(turret.turretList);
        playMusic();
       for (int i = 0; i < 4; i++) {
            blueList.add(turret.turretList.get(i));
        }
        for (int i = 4; i < 8; i++) {
            redList.add(turret.turretList.get(i));
        }
 
 
        /**
         * 攻擊按鈕
         */
        JButton button = new JButton();
        button.setSize(130, 132);
        button.setLocation(1150, 430);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 按鈕事件
                player.attack(redList);
            }
        });
        this.add(button);
        player.addButton();
        while (true) {
 
            mb.createMinion(this, blueList);
            mr.createMinion(this, redList);
            repaint();
            try {
                Thread.sleep(25);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
 
    public void paint(Graphics g) {
        if (offScreenImage == null) {
            offScreenImage = this.createImage(5984, 4452);
        }
        Graphics gImage = offScreenImage.getGraphics();
       if(state==0){
           turret.isLive();
            for (int i = 0; i < objList.size(); i++) {
                objList.get(i).paintSelf(gImage);
            }
            // 繪制攻擊圖片
           gImage.drawImage(attack, player.getX() + 500, player.getY() + 100, null);
 
            objList.removeAll(removeList);
        } else if (state ==1) {//游戲勝利
 
            gImage.drawImage(gameWin, player.getX()-700, player.getY()-300 , null);
        } else if (state == 2) {//游戲失敗
            gImage.drawImage(gameLose, player.getX()-700, player.getY()-300, null);
        }
        g.drawImage(offScreenImage, -player.getX() + 700, -player.getY() + 350, null);
         // 添加按鈕后不能調(diào)用鍵盤事件 因為程序的焦點變成了按鈕 this.requestFocus() 把焦點重新改變到游戲界面上
 
        this.requestFocus();
    }
 
    // main方法
    public static void main(String[] args) {
        GameFrame gameFrame = new GameFrame();
        gameFrame.launch();
 
    }
    // 鍵盤事件
    private class KeyMonitor extends KeyAdapter {
        @Override
        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();
            player.keyPressed(e);
        }
 
        @Override
        public void keyReleased(KeyEvent e) {
            int key = e.getKeyCode();
            player.keyReleased(e);
        }
    }
    static Clip clip;
    public static void playMusic() {
        try
        {
            //這里面放 絕對路徑,音頻必須是wav格式,用音頻轉(zhuǎn)換軟件 把mp3 轉(zhuǎn)成wav格式
            File musicPath = new File("C:\\Users\\23839\\IdeaProjects\\PlaneWar\\PlayMusic\\bgm.wav");
 
            if(musicPath.exists())
            {
                AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicPath);
                clip = AudioSystem.getClip();
                clip.open(audioInput);
                FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
                gainControl.setValue(-20.0f);//設(shè)置音量,范圍為 -60.0f 到 6.0f
                clip.start();
                clip.loop(Clip.LOOP_CONTINUOUSLY);
            }
            else
            {
            }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
 
}

?

二,游戲元素父類

作用:初始化基本變量,定義addHp()方法,兩點之間的距離方法,矩形與矩形的碰撞檢測方法,矩形與圓形的碰撞檢測方法,定義防御塔,英雄,小兵的攻擊方法,用線程實現(xiàn)攻擊的冷卻時間。

package com.sxt;
 
import java.awt.*;
import java.util.ArrayList;
 
//游戲元素的父類
public abstract class GameObject {
    // 坐標
    private int x;
    private int y;
    // 圖片
    private Image img;
    // 游戲界面
    public GameFrame gameFrame;
    // 速度
    private int spd;
    // 初始生命值
    private int hp;
    // 當前生命值
    private int currentHp;
    // 攻擊目標
    private GameObject target;
    // 是否有目標
    private boolean hasTarget = false;
    // 攻擊距離
    private int dis;
    // 攻擊時間間隔
    private int attackCoolDownTime;
    // 攻擊是否冷卻
    private boolean attackCoolDown = true;
    // 是否存活
    private boolean alive = true;
    //是否被控制
    boolean beControlled = false;
 
    public GameObject(GameFrame gameFrame) {
        this.gameFrame = gameFrame;
    }
 
    public GameObject(int x, int y, GameFrame gameFrame) {
        this.x = x;
        this.y = y;
        this.gameFrame = gameFrame;
    }
 
    public GameObject() {
    }
    public void addHp(Graphics g, int difX, int difY, int width, int height, Color color) {
        // 繪制外部輪廓
        g.setColor(Color.black);
        g.drawRect(getX() - difX, getY() - difY, width, height);
        // 填充矩形
        g.setColor(color);
        g.fillRect(getX() - difX, getY() - difY, (int) (width * getCurrentHp() / getHp()), height);
    }
 
    public double getDis(int x1, int y1, int x2, int y2) {
        return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
    }
 
    // 矩形矩形碰撞檢測
    public boolean recIntersectsRec(Rectangle r1, Rectangle r2) {
        return r1.intersects(r2);
    }
 
    public boolean recIntersectsCir(Rectangle rec, int x, int y, int r) {
        // 矩形于圓相交: 圓心到至少一個矩形定點的距離小于r
        if ((getDis(x, y, rec.x, rec.y) < r) || (getDis(x, y, rec.x, rec.y + rec.height) < r)
                || (getDis(x, y, rec.x + rec.width, rec.y) < r)
                || (getDis(x, y, rec.x + rec.width, rec.y + rec.height) < r)) {
            return true;
        }
        return false;
    }
 
    // 攻擊方法
    public void attack(ArrayList<GameObject> gameObjList) {
        if (hasTarget) {
            // 目標離開范圍后尋找新的目標
            if (!recIntersectsCir(target.getRec(), getX(), getY(), getDis())) {
                setHasTarget(false);
            }
            // 目標死亡,尋找新目標
            else if (!target.isAlive()) {
                setHasTarget(false);
            } else if (isAttackCoolDown() && isAlive()) {
                Bullet bullet = null;
                // 防御塔攻擊
                if (Turret.class.isAssignableFrom(getClass())) {
                    bullet = new Bullet(gameFrame, this, getTarget(), 500, 50);
                }
                // 小兵攻擊
                else if (Minion.class.isAssignableFrom(getClass())) {
                    bullet = new Bullet(gameFrame, this, getTarget(), 50, 30);
                }
                // 玩家攻擊
                else if (this instanceof Champion) {
                    bullet = new Bullet(gameFrame, this, getTarget(), 500, 50);
                }
                gameFrame.objList.add(bullet);
                // 線程開始
                new AttackCD().start();
            }
        } else {
            // 遍歷列表
            for (GameObject obj : gameObjList) {
                // 判斷攻擊范圍(圓形)與敵方(矩形)是否相交
                if (recIntersectsCir(obj.getRec(), getX(), getY(), getDis())) {
                    // 找到目標
                    setTarget(obj);
                    setHasTarget(true);
                    // 跳出循環(huán)
                    break;
                }
            }
            // 玩家是否在攻擊范圍內(nèi)
            if (!hasTarget && gameObjList == gameFrame.blueList) {
                if (recIntersectsCir(gameFrame.player.getRec(), getX(), getY(), getDis())) {
                    // 找到目標
                    setTarget(gameFrame.player);
                    setHasTarget(true);
                }
            }
            else {
                //野怪是否在攻擊范圍內(nèi)
                for (GameObject obj : gameFrame.beast.beastList) {
                    // 判斷攻擊范圍(圓形)與敵方(矩形)是否相交
                    if (recIntersectsCir(obj.getRec(), getX(), getY(), getDis())) {
                        // 找到目標
                        setTarget(obj);
                        setHasTarget(true);
                        // 跳出循環(huán)
                        break;
                    }
                }
            }
        }
    }
 
    //public abstract void addTurret();
 
    class AttackCD extends Thread {
        public void run() {
            // 將攻擊功能設(shè)置為冷卻狀態(tài)
            setAttackCoolDown(false);
            // 線程休眠
            try {
                Thread.sleep(attackCoolDownTime);
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 將攻擊功能設(shè)置為攻擊狀態(tài)
            setAttackCoolDown(true);
            // 線程終止
            this.interrupt();
        }
    }
 
    // 繪制元素
    public abstract void paintSelf(Graphics g);
 
    // 返回矩形
    public abstract Rectangle getRec();
    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 Image getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = Toolkit.getDefaultToolkit().getImage(img);
    }
    public int getSpd() {
        return spd;
    }
    public void setSpd(int spd) {
        this.spd = spd;
    }
    public int getHp() {
        return hp;
    }
    public void setHp(int hp) {
        this.hp = hp;
    }
    public int getCurrentHp() {
        return currentHp;
    }
    public void setCurrentHp(int currentHp) {
        this.currentHp = currentHp;
    }
    public GameObject getTarget() {
        return target;
    }
    public void setTarget(GameObject target) {
        this.target = target;
    }
    public boolean isHasTarget() {
        return hasTarget;
    }
    public void setHasTarget(boolean hasTarget) {
        this.hasTarget = hasTarget;
    }
    public int getDis() {
        return dis;
    }
    public void setDis(int dis) {
        this.dis = dis;
    }
    public int getAttackCoolDownTime() {
        return attackCoolDownTime;
    }
    public void setAttackCoolDownTime(int attackCoolDownTime) {
        this.attackCoolDownTime = attackCoolDownTime;
    }
    public boolean isAttackCoolDown() {
        return attackCoolDown;
    }
    public void setAttackCoolDown(boolean attackCoolDown) {
        this.attackCoolDown = attackCoolDown;
    }
    public boolean isAlive() {
        return alive;
    }
    public void setAlive(boolean alive) {
        this.alive = alive;
    }
}

三,防御塔類

作用:初始化防御塔并添加到窗口中,游戲失敗與勝利方法,在繪制自身方法中通過判斷血量刪除元素或者繪制防御塔。

package com.sxt;
 
import java.awt.*;
import java.util.ArrayList;
//防御塔類
public  class Turret extends GameObject{
 
    ArrayList<Turret> turretList = new ArrayList<>();
    public Turret turretBlueOne;
    public Turret turretBlueTwo;
    public Turret turretBlueThree;
    public Turret turretBlueBase;
    public Turret turretRedOne;
    public Turret turretRedTwo;
    public Turret turretRedThree;
    public Turret turretRedBase;
 
    public Turret(GameFrame gameFrame) {
        super(gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\turret.png");
 
        // 初始化八個防御塔
        turretList.add(turretBlueOne = new TurretBlue(1860, 3790, gameFrame));
        turretList.add(turretBlueTwo = new TurretBlue(2650, 3820, gameFrame));
        turretList.add(turretBlueThree = new TurretBlue(3995, 3830, gameFrame));
        turretList.add(turretBlueBase = new TurretBlue(1130, 3650, gameFrame));
        turretList.add(turretRedOne = new TurretRed(5100, 3030, gameFrame));
        turretList.add(turretRedTwo = new TurretRed(5120, 2100, gameFrame));
        turretList.add(turretRedThree = new TurretRed(5060, 1570, gameFrame));
        turretList.add(turretRedBase = new TurretRed(4850, 1100, gameFrame));
 
    }
 
    public Turret(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\turret.png");
        setHp(6000);
        setCurrentHp(getHp());
        setAttackCoolDownTime(1000);
        setDis(300);
    }
    public void isLive(){
        if(gameFrame.turret.turretBlueBase.getCurrentHp()==0){
            gameFrame.state=2;
        }
        if(gameFrame.turret.turretRedBase.getCurrentHp()==0){
            gameFrame.state=1;
        }
    }
    @Override
    public void paintSelf(Graphics g) {
        // 生命值為0
        if (getCurrentHp() <= 0) {
            setAlive(false);
            gameFrame.removeList.add(this);
            if (this instanceof TurretBlue) {
                gameFrame.blueList.remove(this);
            } else {
                gameFrame.redList.remove(this);
            }
        } else {
            // 添加生命值
            if (this instanceof TurretBlue) {
                this.addHp(g, 50, 130, 100, 20, Color.GREEN);
                attack(gameFrame.redList);
            } else {
                this.addHp(g, 50, 130, 100, 20, Color.RED);
                attack(gameFrame.blueList);
            }
            g.drawImage(getImg(), getX() - 50, getY() - 100, null);
            g.fillOval(getX(), getY(), 10, 10);
            g.drawRect(getX() - 50, getY() - 100, 100, 180);
            g.drawOval(getX() - 300, getY() - 300, 600, 600);
        }
    }
 
    @Override
    public Rectangle getRec() {
        return new Rectangle(getX() - 50, getY() - 100, 100, 180);
    }
}
1.藍色防御塔

作用:有參構(gòu)造。

package com.sxt;
//藍方防御塔
public class TurretBlue extends Turret{
    public TurretBlue(GameFrame gameFrame){
        super(gameFrame);
    }
    public TurretBlue(int x,int y,GameFrame gameFrame){
        super(x,y,gameFrame);
    }
}
2.紅方防御塔

作用:有參構(gòu)造。

package com.sxt;
//藍方防御塔
public class TurretRed extends Turret{
    //有參構(gòu)造
    public TurretRed(GameFrame gameFrame){
        super(gameFrame);
    }
    public TurretRed(int x,int y,GameFrame gameFrame){
        super(x,y,gameFrame);
    }
}

四,英雄類

作用:實現(xiàn)鍵盤監(jiān)聽,添加按鈕,鼠標監(jiān)聽。

package com.sxt;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
 
import javax.swing.JButton;
 
//游戲英雄類
public abstract class Champion extends GameObject {
    // 移動
    public boolean up, down, left, right;
    // 移動圖集
    static String[] imgs = new String[8];
    // 第幾張圖片
    int moveCount = 1;
    //技能圖片
    Image abilityOne;
    Image abilityTwo;
    Image abilityThree;
    //技能冷卻時間
    int coolDownTimeOne;
    int coolDownTimeTwo;
    int coolDownTimeThree;
    //三個技能是否處于冷卻狀態(tài)
    boolean coolDownOne = true;
    boolean coolDownTwo = true;
    boolean coolDownThree = true;
 
    static {
        for (int i = 1; i < 8; i++) {
            imgs[i] = "C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\move\\" + i + ".png";
        }
    }
    public Champion(GameFrame gameFrame) {
        super(gameFrame);
 
        //定義英雄的圖片和坐標
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\stand.png");
        setX(700);
        setY(3800);
        setSpd(75);
        setHp(24000);
        setDis(250);
        setAttackCoolDownTime(100);
        setCurrentHp(getHp());
    }
 
    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_D) {
            right = true;}
        if (key == KeyEvent.VK_A) {
            left = true;}
        if (key == KeyEvent.VK_W) {
            up = true;}
        if (key == KeyEvent.VK_S) {
            down = true;}
    }
 
    public void keyReleased(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_D) {
            right = false;}
        if (key == KeyEvent.VK_A) {
            left = false;}
        if (key == KeyEvent.VK_W) {
            up = false;}
        if (key == KeyEvent.VK_S) {
            down = false;}
    }
    public void move() {
        if (up) {
            setY(getY() - getSpd());
        }
        if (down) {
            setY(getY() + getSpd());
        }
        if (left) {
            setX(getX() - getSpd());
        }
        if (right) {
            setX(getX() + getSpd());
        }
        if (up || down || left || right) {
            setImg(imgs[moveCount]);
            moveCount++;
            if (moveCount == 8) {
                moveCount = 1;
            }
        } else {
            setImg("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\stand.png");
        }
    }
 
    //添加三個技能按鈕
 
    public void addButton() {
        JButton button1 = new JButton();
        button1.setSize(100, 100);
        button1.setLocation(1056, 513);
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                abilityOne();
            }
        });
        JButton button2 = new JButton();
        button2.setSize(100, 100);
        button2.setLocation(1090, 370);
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                abilityTwo();
            }
        });
        JButton button3 = new JButton();
        button3.setSize(100, 100);
        button3.setLocation(1220, 300);
        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                abilityThree();
            }
        });
        gameFrame.add(button1);
        gameFrame.add(button2);
        gameFrame.add(button3);
    }
 
    public abstract void abilityOne();
    public abstract void abilityTwo();
    public abstract void abilityThree();
    public abstract void abilityEffect(Graphics g);
 
    @Override
    public void paintSelf(Graphics g) {
        // 生命值為0
        if (getCurrentHp() <= 0) {
            setAlive(false);
            gameFrame.removeList.add(this);
 
        } else {
            // 添加生命值
            addHp(g, 30, 80, 80, 20, Color.GREEN);
            //繪制技能圖片
            g.drawImage(abilityOne, getX() + 360, getY() + 180, null);
            g.drawImage(abilityTwo, getX() + 400, getY() + 40, null);
            g.drawImage(abilityThree, getX() + 520, getY() - 30, null);
            // 繪制圖片
            g.drawImage(this.getImg(), getX() - 33, getY() - 50, null);
            // 改變畫筆顏色
            g.setColor(Color.GREEN);
            // 繪制中心圓點
            g.fillOval(getX(), getY(), 10, 10);
            // 繪制矩形邊框
            g.drawRect(getX() - 23, getY() - 50, 60, 120);
            move();
            abilityEffect(g);
        }
    }
 
    @Override
    public Rectangle getRec() {
        return new Rectangle(getX() - 30, getY() - 60, 60, 120);
    }
 
}

1.英雄妲己

作用:定義三個技能的具體實現(xiàn)方法,用線程實現(xiàn)技能的冷卻時間,控制時間,鼠標監(jiān)視器實現(xiàn)釋放技能一,定義技能效果。

package com.sxt;
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Random;
 
 
 
public class ChampionDaji extends Champion {
 
    // 技能是否處于釋放狀態(tài)
    boolean ifAbilityOne = false;
    boolean ifAbilityTwo = false;
    // 鼠標監(jiān)視器
   MouseMonitor m;
    // 一技能多邊形
    Polygon p;
    // 一技能三角函數(shù)
    double sin;
    double cos;
    // 一技能已經(jīng)攻擊過的目標
    ArrayList<GameObject> attacked;
    // 一技能移動次數(shù)
    int step = 0;
    // 技能二目標
    GameObject abilityTwoTarget;
    // 技能二子彈
    Bullet abilityTwoBullet;
    // 三技能的五個子彈,釋放三技能后重新定義
    Bullet[] bulletList = { new Bullet(), new Bullet(), new Bullet(), new Bullet(), new Bullet() };
 
    public ChampionDaji(GameFrame gameFrame) {
        super(gameFrame);
        abilityOne = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityOne.jpg");
        abilityTwo = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityTwo.jpg");
        abilityThree = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityThree.jpg");
        // 三個技能冷卻時間
        coolDownTimeOne = 3000;
        coolDownTimeTwo = 5000;
        coolDownTimeThree = 8000;
    }
 
    public void exit() {
        this.gameFrame.removeMouseListener(m);
    }
 
    public void abilityOneMove() {
        p.translate((int) (50 * cos), -(int) (50 * sin));
        for (GameObject redObj : gameFrame.redList) {
            // 是紅色方小兵 && 發(fā)生碰撞 && 沒在attacked列表里
            if (redObj instanceof MinionRed && p.intersects(redObj.getRec()) && attacked.indexOf(redObj) == -1) {
                // 小兵扣血,添加到attacked里
                redObj.setCurrentHp(redObj.getCurrentHp() - 400);
                attacked.add(redObj);
            }
        }
    }
 
    @Override
    public void abilityOne() {
        if (coolDownOne) {
            m = new MouseMonitor();
            p = new Polygon();
            gameFrame.addMouseListener(m);
            attacked = new ArrayList<GameObject>();
        }
    }
 
 
    public void abilityTwo() {
        if (coolDownTwo) {
            boolean find = false;
            for (GameObject redObj : gameFrame.objList) {
                // 是紅色小兵 && 距離小于250 && 存活
                if (redObj instanceof MinionRed && recIntersectsCir(redObj.getRec(), getX(), getY(), 250)
                        && redObj.isAlive()) {
                    // 添加子彈
                    abilityTwoBullet = new Bullet(gameFrame, this, redObj, 250, 60, "C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityTwoBullet.png");
                    gameFrame.objList.add(abilityTwoBullet);
                    // 給目標賦值
                    abilityTwoTarget = redObj;
                    // 釋放二技能
                    ifAbilityTwo = true;
                    find = true;
                    break;
                }
            }
            if (find) {
                new AbilityTwoCD().start();
                find = false;
            }
        }
    }
 
    /**
     * 點擊技能三釋放技能 先將技能范圍內(nèi)目標儲存到targetList里 提前定義五個子彈 技能釋放時初始化五個子彈 子彈目標從targetList里隨機選擇
     * 如果期間目標死亡,制作一個目標替身,生命值設(shè)置為true 子彈與目標或替身碰撞后消失
     */
    @Override
    public void abilityThree() {
        if (coolDownThree) {
            // 創(chuàng)建列表來儲存目標
            ArrayList<GameObject> targetList = new ArrayList<GameObject>();
            // 遍歷redList,找到符合條件的目標,儲存到列表里
            for (int i = 0; i < gameFrame.objList.size(); i++) {
                GameObject target = gameFrame.objList.get(i);
                // 是紅色小兵 && 在技能范圍里 && 存活
                if (target instanceof MinionRed && recIntersectsCir(target.getRec(), getX(), getY(), 250)
                        && target.isAlive()) {
                    targetList.add(target);
                }
            }
            // 找到目標
            if (targetList.size() != 0) {
                // 創(chuàng)建五個子彈,隨機攻擊列表里的目標
                Random random = new Random();
                int count = 0; // 統(tǒng)計三技能發(fā)射子彈數(shù)量
                while (count < 5) {
                    int r = random.nextInt(targetList.size());
                    if (!targetList.get(r).isAlive()) {
                        GameObject substitute = targetList.get(r);
                        substitute.setAlive(true);
                        bulletList[count] = new Bullet(gameFrame, this, substitute, 150, 60,
                                "C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityTwoBullet.png");
                    } else {
                        bulletList[count] = new Bullet(gameFrame, this, targetList.get(r), 150, 60,
                                "C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Daji\\abilityTwoBullet.png");
                    }
                    count++;
                }
                new AbilityThreeBulletCD().start();
                // 三技能進入冷卻
                new AbilityThreeCD().start();
            }
        }
    }
 
    @Override
    public void abilityEffect(Graphics g) {
        if (ifAbilityOne) {
            g.setColor(Color.RED);
            g.fillPolygon(p);
            abilityOneMove();
            step++;
            if (step == 10) {
                step = 0;
                ifAbilityOne = false;
            }
        }
        if (ifAbilityTwo) {
            System.out.println(abilityTwoTarget.beControlled);
            if (abilityTwoBullet.getRec().intersects(abilityTwoTarget.getRec())) {
                new AbilityControllCD().start();
                ifAbilityTwo = false;
            }
        }
    }
 
    // 技能一冷卻時間
    class AbilityOneCD extends Thread {
        public void run() {
            // 將技能一設(shè)置為冷卻狀態(tài)
            coolDownOne = false;
            // 線程休眠
            try {
                // one來表示一技能冷卻時間
                int one = coolDownTimeOne;
                while (one > 0) {
                    Thread.sleep(1000);
                    System.out.println("一技能冷卻時間: " + one / 1000);
                    one -= 1000;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 將技能一設(shè)置為攻擊狀態(tài)
            coolDownOne = true;
            // 線程終止
            this.interrupt();
        }
    }
 
    // 技能二冷卻時間
    class AbilityTwoCD extends Thread {
        public void run() {
            // 將技能二設(shè)置為冷卻狀態(tài)
            coolDownTwo = false;
            // 線程休眠
            try {
                // one來表示二技能冷卻時間
                int two = coolDownTimeTwo;
                while (two > 0) {
                    Thread.sleep(1000);
                    System.out.println("二技能冷卻時間: " + two / 1000);
                    two -= 1000;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 將技能二設(shè)置為攻擊狀態(tài)
            coolDownTwo = true;
            // 線程終止
            this.interrupt();
        }
    }
 
    // 技能二控制時間
    class AbilityControllCD extends Thread {
        public void run() {
            abilityTwoTarget.beControlled = true;
            // 線程休眠
            try {
                Thread.sleep(20000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            abilityTwoTarget.beControlled = false;
            this.interrupt();
        }
 
    }
    //技能三冷卻狀態(tài)
    class AbilityThreeCD extends Thread {
        public void run() {
            // 將攻擊功能設(shè)置為冷卻狀態(tài)
            coolDownThree = false;
            // 休眠
            try {
                int three = coolDownTimeThree;
                while (coolDownTimeThree > 0) {
                    Thread.sleep(1000);
                    System.out.println("技能三冷卻時間: " + coolDownTimeThree / 1000);
                    coolDownTimeThree -= 1000;
                }
                coolDownTimeThree = three;
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 將攻擊功能解除冷卻狀態(tài)
            coolDownThree = true;
            // 線程終止
            this.interrupt();
        }
    }
 
    class AbilityThreeBulletCD extends Thread {
        public void run() {
            // 休眠
            try {
                System.out.println("Thread start");
                gameFrame.objList.add(bulletList[0]);
                Thread.sleep(100);
                gameFrame.objList.add(bulletList[1]);
                Thread.sleep(100);
                gameFrame.objList.add(bulletList[2]);
                Thread.sleep(100);
                gameFrame.objList.add(bulletList[3]);
                Thread.sleep(100);
                gameFrame.objList.add(bulletList[4]);
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 線程終止
            this.interrupt();
        }
    }
 
    // 鼠標監(jiān)視器
    private class MouseMonitor extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent e) {// 當鼠標點擊時
            int mouseX = e.getX(), mouseY = e.getY(), playerX = 700, playerY = 350;
            double dis = getDis(mouseX, mouseY, playerX, playerY);
            // 三角函數(shù)
            cos = (mouseX - playerX) / dis;
            sin = -(mouseY - playerY) / dis;
            // 坐標差
            int difX = (int) (60 * sin);
            int difY = (int) (60 * cos);
            p.addPoint(getX() - difX, getY() - difY);
            p.addPoint(getX() + difX, getY() + difY);
            p.addPoint(getX() + difX + (int) (20 * cos), getY() + difY - (int) (20 * sin));
            p.addPoint(getX() - difX + (int) (20 * cos), getY() - difY - (int) (20 * sin));
            exit();
            new AbilityOneCD().start();
            ifAbilityOne = true;
        }
    }
}
五,小兵類

作用:初始化小兵的基本參數(shù),實現(xiàn)找到目標方法,向目標移動方法。每波小兵生成的時間,每個小兵生成的時間,在繪制自身方法中通過判斷血量是否為零實現(xiàn)刪除元素功能和繪制小兵功能。

package com.sxt;
 
import java.awt.*;
import java.util.ArrayList;
 
public abstract class Minion extends GameObject{
 
    // 是否生成下一個小兵
    private boolean nextMinion = true;
    // 是否生成下一波小兵
    private boolean nextLine = true;
    // 生成小兵數(shù)量
    private int minionCount = 0;
    // 是否檢測到目標
    private boolean ifFindTarget = false;
 
    public Minion(GameFrame gameFrame) {
        super(gameFrame);
        setHp(800);
        setCurrentHp(getHp());
        setDis(100);
        setAttackCoolDownTime(2000);
    }
 
    /**
     * (1325, 3750) (4425, 3750) (5050, 3125) (5050, 1125)
     */
 
    public abstract void move(ArrayList<GameObject> objList);
 
    public void findTarget(ArrayList<GameObject> objList) {
        for (GameObject obj : objList) {
            if (recIntersectsCir(obj.getRec(), getX(), getY(), 200)) {
                setTarget(obj);
                setIfFindTarget(true);
            }
        }
        if (objList == gameFrame.blueList) {
            if (recIntersectsCir(gameFrame.player.getRec(), getX(), getY(), 200)) {
                setTarget(gameFrame.player);
                setIfFindTarget(true);
            }
        }
    }
 
    public void moveToTarget() {
        int dis = (int) getDis(getX(), getY(), getTarget().getX(), getTarget().getY());
        if(dis!=0) {
            int xSpeed =  (getSpd() * (getTarget().getX() - getX()) / dis);
            int ySpeed = (getSpd() * (getTarget().getY() - getY()) / dis);
            setX(getX() + xSpeed);
            setY(getY() + ySpeed);
        }
    }
 
    public void createMinion(GameFrame gameFrame, ArrayList<GameObject> minionList) {
        if (nextLine) {
            if (nextMinion) {
                // 藍色方小兵
                if (minionList == this.gameFrame.blueList) {
                    MinionBlue mb = new MinionBlue(gameFrame);
                    gameFrame.objList.add(mb);
                    minionList.add(mb);
                }
                // 紅色方小兵
                else {
                    MinionRed mr = new MinionRed(gameFrame);
                    gameFrame.objList.add(mr);
                    minionList.add(mr);
                }
                minionCount++;
                new NextMinion().start();
            }
            if (minionCount == 3) {
                minionCount = 0;
                new NextLine().start();
            }
        }
    }
 
    // 每個小兵生成時間
    class NextMinion extends Thread {
        public void run() {
            nextMinion = false;
            // 休眠1.5s
            try {
                Thread.sleep(1500);
            } catch (Exception e) {
                e.printStackTrace();
            }
            nextMinion = true;
            // 線程終止
            this.interrupt();
        }
    }
 
    // 每波小兵生成時間
    class NextLine extends Thread {
        public void run() {
            nextLine = false;
            // 休眠15s
            try {
                Thread.sleep(15000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            nextLine = true;
            // 線程終止
            this.interrupt();
        }
    }
 
    @Override
    public void paintSelf(Graphics g) {
        // 生命值為0
        if (getCurrentHp() <= 0) {
            setAlive(false);
            gameFrame.removeList.add(this);
            if (this instanceof MinionBlue) {
                gameFrame.blueList.remove(this);
            } else {
                gameFrame.redList.remove(this);
            }
        } else {
            // 添加生命值
            if (this instanceof MinionBlue) {
                this.addHp(g, 17, 28, 45, 10, Color.GREEN);
            } else {
                this.addHp(g, 17, 28, 45, 10, Color.RED);
            }
            g.drawImage(getImg(), getX() - 16, getY() - 16, null);
            g.setColor(Color.RED);
            g.fillOval(getX(), getY(), 10, 10);
            g.drawRect(getX() - 16, getY() - 16, 45, 45);
            g.drawOval(getX() - 200, getY() - 200, 400, 400);
            // 小兵移動
            if (!beControlled) {
                if (this instanceof MinionBlue) {
                    move(gameFrame.redList);
                } else {
                    move(gameFrame.blueList);
                }
            }
        }
    }
 
    @Override
    public Rectangle getRec() {
        return new Rectangle(getX() - 16, getY() - 16, 45, 45);
    }
 
    public boolean isIfFindTarget() {
        return ifFindTarget;
    }
    public void setIfFindTarget(boolean ifFindTarget) {
        this.ifFindTarget = ifFindTarget;
    }
 
}
1.紅方小兵

作用:具體的紅方小兵移動方法。

package com.sxt;
 
import java.util.ArrayList;
 
public  class MinionRed extends Minion {
    public MinionRed(GameFrame gameFrame) {
        super(gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\minion\\red.jpg");
        setX(5050);
        setY(1125);
    }
 
    @Override
    public void move(ArrayList<GameObject> objList) {
        if (isIfFindTarget()) {
            // 離開檢測范圍
            if (!recIntersectsCir(getTarget().getRec(), getX(), getY(), 200)) {
                setIfFindTarget(false);
            } else {
                if (!isHasTarget()) {
                    moveToTarget();
                }
                attack(objList);
            }
        } else {
            findTarget(objList);
            // 原路線移動
            if (getY() < 3125) {
                setSpd(28);
                setY(getY() + getSpd());
            } else if (getY() < 3750 && getY() >= 3125) {
                setSpd(20);
                setY(getY() + getSpd());
                setX(getX() - getSpd());
            } else if (getY() >= 3750) {
                setSpd(25);
                setX(getX() - getSpd());
            }
        }
    }
 
 
 
 
}
2.藍方小兵

作用:具體的藍方小兵移動方法。

package com.sxt;
 
import java.util.ArrayList;
 
public  class MinionBlue extends Minion{
 
    public MinionBlue(GameFrame gameFrame) {
        super(gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\minion\\blue.jpg");
        setX(1325);
        setY(3750);
    }
 
    @Override
    public void move(ArrayList<GameObject> objList) {
        if(isIfFindTarget()) {
            //離開檢測范圍
            if(!recIntersectsCir(getTarget().getRec(), getX(), getY(), 200)) {
                setIfFindTarget(false);
            }else {
                if(!isHasTarget()) {
                    moveToTarget();
                }
                attack(objList);
            }
        }else {
            findTarget(objList);
            //原路線移動
            if(getX() < 4425) {
                setSpd(5);
                setX(getX() + getSpd());
            }else if(getX() < 5100 && getX() >= 4425) {
                setSpd(20);
                setX(getX() + getSpd());
                setY(getY() - getSpd());
            }else if(getX() >= 4900) {
                setSpd(18);
                setY(getY() - getSpd());
            }
        }
    }
}

六,子彈類

作用:子彈移動方法。

package com.sxt;
 
import java.awt.*;
 
//子彈類
public  class Bullet extends GameObject {
 
    //發(fā)射子彈的游戲元素
    GameObject attacker;
    //目標
    GameObject target;
    //攻擊力
    int ad;
 
    public Bullet(GameFrame gameFrame, GameObject attacker, GameObject target, int ad, int spd) {
        super(attacker.getX(), attacker.getY(), gameFrame);
        this.attacker = attacker;
        this.target = target;
        setAd(ad);
        setSpd(spd);
    }
 
    public Bullet(GameFrame gameFrame, GameObject attacker, GameObject target, int ad, int spd, String img) {
        super(attacker.getX(), attacker.getY(), gameFrame);
        this.attacker = attacker;
        this.target = target;
        setImg(img);
        setAd(ad);
        setSpd(spd);
    }
 
    public Bullet() {
        super();
    }
 
    public void move() {
        //子彈與目標碰撞,子彈消失,目標減血
        if (recIntersectsRec(getRec(), target.getRec())) {
            target.setCurrentHp(target.getCurrentHp() - getAd());
            gameFrame.removeList.add(this);
        }
        int dis = (int) getDis(getX(), getY(), target.getX(), target.getY());
        if (dis != 0) {
            int xSpeed =  (getSpd() * (target.getX() - getX()) / dis);
            int ySpeed =  (getSpd() * (target.getY() - getY()) / dis);
            setX(getX() + xSpeed);
            setY(getY() + ySpeed);
        }
    }
 
    @Override
    public void paintSelf(Graphics g) {
        g.drawImage(getImg(), getX()-16, getY()-16, null);
        g.setColor(Color.BLACK);
        g.fillOval(getX()-5, getY()-5, 10, 10);
        g.drawRect(getX()-5, getY()-5, 10, 10);
        move();
    }
 
    @Override
    public Rectangle getRec() {
        return new Rectangle(getX()-5, getY()-5, 10, 10);
    }
    public int getAd() {
        return ad;
    }
 
    public void setAd(int ad) {
        this.ad = ad;
    }
}

七,背景類

作用:初始化背景。

package com.sxt;
 
import java.awt.*;
//背景類
public  class Background extends GameObject{
    public Background(GameFrame gameFrame) {
        super(gameFrame);
    }
 
    Image bg = Toolkit.getDefaultToolkit().getImage("C:\\Users\\23839\\IdeaProjects\\asd\\src\\imgs\\Map.jpg");
 
    public void paintSelf(Graphics g){
        g.drawImage(bg,0,0,null);
 
    }
    @Override
    public Rectangle getRec() {
        return null;
    }
}

八,野怪類

作用:在繪制自身方法中通過判斷血量刪除元素或者繪制自身,用線程實現(xiàn)自動復(fù)活功能。

package com.sxt.beast;
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;
 
import com.sxt.*;
 
public class Beast extends GameObject {
 
    public ArrayList<Beast> beastList = new ArrayList<>();
    int width;
    int height;
    // 復(fù)活的元素
    Beast beast = null;
 
    public Beast(GameFrame gameFrame) {
        super(gameFrame);
        beastList.add(new RedBuff(3045, 3170, gameFrame));
        beastList.add(new Bear(2800, 2855, gameFrame));
        beastList.add(new Bird(3570, 3380, gameFrame));
        beastList.add(new Xiyi(4585, 2365, gameFrame));
        beastList.add(new BlueBuff(4025, 2295, gameFrame));
        beastList.add(new Wolf(4235, 1945, gameFrame));
    }
 
    public Beast(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setHp(1000);
        setCurrentHp(getHp());
        beast = this;
    }
 
 
    @Override
    public void paintSelf(Graphics g) {
        if (getCurrentHp() <= 0) {
            System.out.println("beast die");
            setAlive(false);
            gameFrame.removeList.add(this);
            gameFrame.beast.beastList.remove(this);
            new ReviveCD().start();
        } else {
            // 添加生命值
            addHp(g, width / 2, 80, width, 20, Color.GREEN);
            g.drawImage(getImg(), getX() - width / 2, getY() - height / 2, null);
            g.setColor(Color.RED);
            g.fillOval(getX(), getY(), 10, 10);
            g.drawOval(getX() - getDis(), getY() - getDis(), 2 * getDis(), 2 * getDis());
        }
    }
 
    @Override
    public Rectangle getRec() {
        return new Rectangle(getX() - width / 2, getY() - height / 2, width, height);
    }
    //野怪復(fù)活
    class ReviveCD extends Thread {
        public void run() {
            // 線程休眠
            try {
                Thread.sleep(5000);
            } catch (Exception e) {
                e.printStackTrace();
            }
            Beast reviveBeast;
            if (beast instanceof RedBuff) {
                reviveBeast = new RedBuff(3045, 3170, gameFrame);
            } else if (beast instanceof Bear) {
                reviveBeast = new Bear(2800, 2855, gameFrame);
            } else if (beast instanceof Bird) {
                reviveBeast = new Bird(3570, 3380, gameFrame);
            } else if (beast instanceof Xiyi) {
                reviveBeast = new Xiyi(4585, 2365, gameFrame);
            } else if (beast instanceof BlueBuff) {
                reviveBeast = new BlueBuff(4025, 2295, gameFrame);
            } else {
                reviveBeast = new Wolf(4235, 1945, gameFrame);
            }
            gameFrame.objList.add(reviveBeast);
            gameFrame.beast.beastList.add(reviveBeast);
        }
    }
 
}
1.熊類
package com.sxt.beast;
import com.sxt.GameFrame;
public class Bear extends Beast {
    public Bear(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\bear.jpg");
        width = 85;
        height = 112;
        setDis(65);
    }
 
}
2.鳥類
package com.sxt.beast;
import com.sxt.GameFrame;
public class Bird extends Beast {
    public Bird(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\紅隼.jpg");
        width = 122;
        height = 98;
        setDis(125);
    }
 
}
3.藍Buff
package com.sxt.beast;
import com.sxt.GameFrame;
public class BlueBuff extends Beast {
    public BlueBuff(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\blueBuff.jpg");
        width = 142;
        height = 176;
        setDis(70);
    }
 
}

4.紅Buff?

package com.sxt.beast;
import com.sxt.GameFrame;
public class RedBuff extends Beast {
    public RedBuff(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\redBuff.jpg");
        width = 103;
        height = 150;
        setDis(70);
    }
}
5.狼類
package com.sxt.beast;
import com.sxt.GameFrame;
public class Wolf extends Beast {
 
    public Wolf(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\wolf.jpg");
        width = 145;
        height = 140;
        setDis(65);
    }
 
}
6.蜥蜴類
package com.sxt.beast;
import com.sxt.GameFrame;
public class Xiyi extends Beast {
 
    public Xiyi(int x, int y, GameFrame gameFrame) {
        super(x, y, gameFrame);
        setImg("C:\\Users\\23839\\IdeaProjects\\HonorOfKings\\src\\imgs\\beast\\蜥蜴.jpg");
        width = 111;
        height = 65;
        setDis(125);
    }
}

作用:這幾個野怪類初始化野怪具體圖片與坐標

圖片資源

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)?Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)?

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)?Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)

Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)?Java實現(xiàn)王者榮耀小游戲,java,python,網(wǎng)絡(luò)文章來源地址http://www.zghlxwxcb.cn/news/detail-758351.html

到了這里,關(guān)于Java實現(xiàn)王者榮耀小游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 用Java寫一個王者榮耀游戲

    用Java寫一個王者榮耀游戲

    目錄 ?sxt包 Background Bullet ?Champion ?ChampionDaji ?GameFrame ?GameObject Minion MinionBlue MinionRed Turret TurretBlue TurretRed beast包 Bear Beast Bird BlueBuff RedBuff Wolf Xiyi 打開Eclipse創(chuàng)建圖片中的幾個包 這是所用到的圖片 鏈接:https://pan.baidu.com/s/10KopCcdw0TESSujoMeshUw?pwd=bupl? 提取碼:bupl

    2024年02月05日
    瀏覽(26)
  • 【華為OD機考 統(tǒng)一考試機試C卷】 游戲分組/王者榮耀(C++ Java JavaScript Python C語言)

    目前在考C卷,經(jīng)過兩個月的收集整理, C卷真題已基本整理完畢 抽到原題的概率為2/3到3/3, 也就是最少抽到兩道原題。 請注意:大家刷完C卷真題,最好要把B卷的真題刷一下,因為C卷的部分真題來自B卷。 另外訂閱專欄還可以聯(lián)系筆者開通在線OJ進行刷題,提高刷題效率。

    2024年01月22日
    瀏覽(89)
  • Java小游戲練習---超級瑪麗代碼實現(xiàn)

    Java小游戲練習---超級瑪麗代碼實現(xiàn)

    B站教學視頻: 01_超級瑪麗_創(chuàng)建窗口_嗶哩嗶哩_bilibili 素材提取: 【超級會員V2】我通過百度網(wǎng)盤分享的文件:Java游戲項目… 鏈接:百度網(wǎng)盤 請輸入提取碼 提取碼:k6j1 復(fù)制這段內(nèi)容打開「百度網(wǎng)盤APP 即可獲取」 百度網(wǎng)盤 請輸入提取碼 百度網(wǎng)盤為您提供文件的網(wǎng)絡(luò)備份、同

    2024年02月06日
    瀏覽(22)
  • 【Java實現(xiàn)小游戲】飛翔的小鳥(源碼)

    【Java實現(xiàn)小游戲】飛翔的小鳥(源碼)

    游戲玩法:通過鼠標點擊使小鳥上下移動穿過柱子并完成得分,小鳥碰到柱子或掉落到地面上都會結(jié)束游戲。 (游戲內(nèi)圖片) ? ? 下面是實現(xiàn)這個游戲的代碼: ? ?Brid類: ? ?BridGame類: Column類: Ground類: ? ?

    2024年02月12日
    瀏覽(22)
  • java版本實現(xiàn)推箱子小游戲

    推方塊 游戲簡介: 由 ↑,↓,←,→鍵來控制方向,點擊空格鍵表示重玩當前關(guān)卡。 核心代碼部分 :就是如何處理人的移動和人和箱子一起時的移動,這里需要對人要走的下一步和人推著箱子一起走的下一步進行判斷分析,如果沒有被阻擋就可以繼續(xù)走下一步。(有興趣

    2024年02月11日
    瀏覽(35)
  • Java實現(xiàn)五子棋小游戲(附源碼)

    Java實現(xiàn)五子棋小游戲(附源碼)

    ??銅9鐵10已經(jīng)結(jié)束了,但還是有很多Java程序員沒有找到工作或者成功跳槽,跳槽成功的也只是從一個坑中,跳入另一個坑中…… ? 在LZ看來,真正有意義的就業(yè)與跳槽,是要進入到一個有絕對潛力的行業(yè)或者薪資能實現(xiàn)爆炸式增長的。這件事不容易,但也沒有想象的遙不可

    2024年02月08日
    瀏覽(24)
  • 使用Java實現(xiàn)一個簡單的貪吃蛇小游戲

    使用Java實現(xiàn)一個簡單的貪吃蛇小游戲

    基于java實現(xiàn)貪吃蛇小游戲,主要通過繪制不同的圖片并以一定速度一幀一幀地在窗體上進行展示。 開發(fā)工具:eclipse java工具包:jdk1.8 代碼地址:https://gitee.com/jay_musu/games-and-tools.git 創(chuàng)建一個新的項目,并命名。創(chuàng)建一個名為images的文件夾用來存放游戲相關(guān)圖片。然后再在項

    2024年02月11日
    瀏覽(28)
  • Java實現(xiàn)五子棋小游戲(附思路講解,全部代碼,游戲截圖)

    Java實現(xiàn)五子棋小游戲(附思路講解,全部代碼,游戲截圖)

    本文章是如何實現(xiàn)一個單機版雙人五子棋小游戲,通過Swing技術(shù)進行可視操作. 個人簡介: ???♂?個人主頁:碼云不禿頭. ??本人是一名大三學生,馬上就要變成考研狗啦,通過一學期對Java學習,經(jīng)過老師的教學,實現(xiàn)單機版的雙人五子棋小游戲,大家互相學習,也同時為了完成我的實

    2024年02月07日
    瀏覽(23)
  • 詳解Java實現(xiàn)2048小游戲(JavaFX,完整源碼+注釋說明)

    詳解Java實現(xiàn)2048小游戲(JavaFX,完整源碼+注釋說明)

    剛剛完成的一個小游戲,寫文章記錄一下,如果有任何錯誤或者可以改進的代碼請?zhí)岢?另一方面也是方便自己幾個月或幾年后忘記時,來這里翻一翻回顧思路 目錄 基本界面: 類的組織: _CardPane: _CardMatrixPane: _CardColor: _GameMenuBar: _2048Demo: 基本思路: 卡片: 卡片矩陣:

    2024年02月03日
    瀏覽(26)
  • Java實現(xiàn)俄羅斯方塊小游戲。(附完整源代碼)

    Java實現(xiàn)俄羅斯方塊小游戲。(附完整源代碼)

    大家好,我是百思不得小趙。 創(chuàng)作時間:2022 年 5 月 12 日 博客主頁: ??點此進入博客主頁 —— 新時代的農(nóng)民工 ?? —— 換一種思維邏輯去看待這個世界 ?? 今天是加入CSDN的第1167天。覺得有幫助麻煩??點贊、??評論、??收藏 目錄 一、游戲背景 二、功能實現(xiàn) 三、效果

    2024年02月03日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包