千家信息网

怎么用Java代码制作一个简单的小游戏

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要讲解了"怎么用Java代码制作一个简单的小游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Java代码制作一个简单的小游戏"吧!j
千家信息网最后更新 2024年11月11日怎么用Java代码制作一个简单的小游戏

这篇文章主要讲解了"怎么用Java代码制作一个简单的小游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Java代码制作一个简单的小游戏"吧!

java简易小游戏制作

游戏思路:设置人物移动,游戏规则,积分系统,随机移动的怪物,游戏胜负判定,定时器。

游戏内容部分

package 代码部分;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;public class TestGamePanel extends JPanel implements KeyListener, ActionListener {    //初始化人物坐标    int p1X;    int p1Y;    int p2X;    int p2Y;    boolean isStart = false;    //游戏是否开始    boolean p1isFail = false;     //游戏是否失败    boolean p2isFail = false;    String fx1;         //左:L, 右:R, 上:U, 下:D    String fx2;    Timer timer = new Timer(50,this);//定时器    //积分    int p1score = 0;    int p2score = 0;    //苹果    int AppleX;    int AppleY;    //怪物    int monster1X;    int monster1Y;    int monster2X;    int monster2Y;    int monster3X;    int monster3Y;    int monster4X;    int monster4Y;    int monster5X;    int monster5Y;    //随机积分    Random random = new Random();    public TestGamePanel() {        init();        this.setFocusable(true);        this.addKeyListener(this);        timer.start();    }    //初始化    public void init() {        p1X = 25;        p1Y = 150;        p2X = 700;        p2Y = 550;        fx1 = "L";        fx2 = "R";        monster1X = 25*random.nextInt(28);        monster1Y = 100 + 25*random.nextInt(18);        monster2X = 25*random.nextInt(28);        monster2Y = 100 + 25*random.nextInt(18);        monster3X = 25*random.nextInt(28);        monster3Y = 100 + 25*random.nextInt(18);        monster4X = 25*random.nextInt(28);        monster4Y = 100 + 25*random.nextInt(18);        monster5X = 25*random.nextInt(28);        monster5Y = 100 + 25*random.nextInt(18);        AppleX = 25*random.nextInt(28);        AppleY = 100 + 25*random.nextInt(18);        add(kaishi);        add(chongkai);        guize.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                new TestGameRule();            }        });    }    //游戏功能按钮    JButton kaishi = new JButton("开始");    JButton chongkai = new JButton("重新开始");    JButton guize = new JButton("游戏规则");    //画板    @Override    protected void paintComponent(Graphics g) {        super.paintComponent(g);        TestGameData.header.paintIcon(this,g,0,0);        g.setColor(Color.CYAN);        g.fillRect(0,100,780,520);        //画人物        TestGameData.p1player1.paintIcon(this,g,p1X,p1Y);        TestGameData.p2player1.paintIcon(this,g,p2X,p2Y);        //画得分        g.setFont(new Font("华文彩云",Font.BOLD,18));  //设置字体        g.setColor(Color.RED);        g.drawString("玩家1:" + p1score,20,20 );        g.drawString("玩家2:" + p2score,680,20);        //画苹果        TestGameData.apple.paintIcon(this,g,AppleX,AppleY);        //画静态怪物        TestGameData.monster.paintIcon(this,g,monster1X,monster1Y);        TestGameData.monster.paintIcon(this,g,monster2X,monster2Y);        TestGameData.monster.paintIcon(this,g,monster3X,monster3Y);        TestGameData.monster.paintIcon(this,g,monster4X,monster4Y);        TestGameData.monster.paintIcon(this,g,monster5X,monster5Y);        //游戏提示,是否开始        if(!isStart) {            g.setColor(Color.BLACK);            g.setFont(new Font("华文彩云",Font.BOLD,30));            g.drawString("请点击开始游戏",300,300);        }        //游戏结束提示,是否重新开始        if(p2isFail || p1score == 15) {            g.setColor(Color.RED);            g.setFont(new Font("华文彩云",Font.BOLD,30));            g.drawString("玩家一获胜,请点击重新开始游戏",200,300);        }        if(p1isFail || p2score == 15) {            g.setColor(Color.RED);            g.setFont(new Font("华文彩云",Font.BOLD,30));            g.drawString("玩家二获胜,请点击重新开始游戏",200,300);        }    }    //键盘监听事件    @Override    public void keyPressed(KeyEvent e) {        //控制人物走动        //玩家1        if(isStart == true && (p1isFail == false && p2isFail == false)) {            if(e.getKeyCode() == KeyEvent.VK_D) {                fx1 = "R";                p1X += 25;                if(p1X >= 750) {p1X = 750;}            }            else if(e.getKeyCode() == KeyEvent.VK_A) {                fx1 = "L";                p1X -= 25;                if(p1X <= 0) {p1X = 0;}            }            else if(e.getKeyCode() == KeyEvent.VK_W) {                fx1 = "U";                p1Y -= 25;                if(p1Y <= 100) {p1Y = 100;}            }            else if(e.getKeyCode() == KeyEvent.VK_S) {                fx1 = "D";                p1Y += 25;                if(p1Y >= 600) {p1Y = 600;}            }            //玩家2            if(e.getKeyCode() == KeyEvent.VK_RIGHT) {                fx2 = "R";                p2X += 25;                if(p2X >= 750) {p2X = 750;}            }            else if(e.getKeyCode() == KeyEvent.VK_LEFT) {                fx2 = "L";                p2X -= 25;                if(p2X <= 0) {p2X = 0;}            }            else if(e.getKeyCode() == KeyEvent.VK_UP) {                fx2 = "U";                p2Y -= 25;                if(p2Y <= 100) {p2Y = 100;}            }            else if(e.getKeyCode() == KeyEvent.VK_DOWN) {                fx2 = "D";                p2Y += 25;                if(p2Y >= 600) {p2Y = 600;}            }        }        repaint();    }    @Override    public void actionPerformed(ActionEvent e) {        kaishi.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                isStart = true;            }        });        chongkai.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                if(p1isFail) { p1isFail = !p1isFail; init(); }                if(p2isFail) { p2isFail = !p2isFail; init(); }            }        });        add(kaishi);        add(chongkai);        add(guize);        if(isStart == true && (p1isFail == false && p2isFail == false)) {            //让人动起来            if(fx1.equals("R")) {                p1X += 25;                if(p1X >= 750) { p1X = 750; }            }            if(fx1.equals("L")) {                p1X -= 25;                if(p1X <= 0) { p1X = 0; }            }            if(fx1.equals("U")) {                p1Y -= 25;                if(p1Y <= 100) { p1Y = 100; }            }            if(fx1.equals("D")) {                p1Y += 25;                if(p1Y >= 600) { p1Y = 600; }            }            if(fx2.equals("R")) {                p2X += 25;                if(p2X >= 750) { p2X = 750; }            }            if(fx2.equals("L")) {                p2X -= 25;                if(p2X <= 0) { p2X = 0; }            }            if(fx2.equals("U")) {                p2Y -= 25;                if(p2Y <= 100) { p2Y = 100; }            }            if(fx2.equals("D")) {                p2Y += 25;                if(p2Y >= 600) { p2Y = 600; }            }            //让怪物动起来                //怪物1                int i = random.nextInt(4) + 1;                if(i == 1) {                    monster1X += 5;                    if(monster1X >= 750) {monster1X = 750;}                }                if(i == 2) {                    monster1X -= 5;                    if(monster1X <= 0) {monster1X = 0;}                }                if(i == 3) {                    monster1Y += 5;                    if(monster1Y >= 600) {monster1Y = 600;}                }                if(i == 4) {                    monster1Y -= 5;                    if(monster1Y <= 100) {monster1Y = 100;}                }            //怪物2            int j = random.nextInt(4) + 1;            if(j == 1) {                monster2X += 5;                if(monster2X >= 750) {monster2X = 750;}            }            if(j == 2) {                monster2X -= 5;                if(monster2X <= 0) {monster2X = 0;}            }            if(j == 3) {                monster2Y += 5;                if(monster2Y >= 600) {monster2Y = 600;}            }            if(j == 4) {                monster2Y -= 5;                if(monster2Y <= 100) {monster2Y = 100;}            }            //怪物3            int k = random.nextInt(4) + 1;            if(k == 1) {                monster3X += 5;                if(monster3X >= 750) {monster3X = 750;}            }            if(k == 2) {                monster3X -= 5;                if(monster3X <= 0) {monster3X = 0;}            }            if(k == 3) {                monster3Y += 5;                if(monster3Y >= 600) {monster3Y = 600;}            }            if(k == 4) {                monster3Y -= 5;                if(monster3Y <= 100) {monster3Y = 100;}            }            //怪物4            int n= random.nextInt(4) + 1;            if(n == 1) {                monster4X += 5;                if(monster4X >= 750) {monster4X = 750;}            }            if(n == 2) {                monster4X -= 5;                if(monster4X <= 0) {monster4X = 0;}            }            if(n == 3) {                monster4Y += 5;                if(monster4Y >= 600) {monster4Y = 600;}            }            if(n == 4) {                monster4Y -= 5;                if(monster4Y <= 100) {monster4Y = 100;}            }            //怪物5            int m = random.nextInt(4) + 1;            if(m == 1) {                monster5X += 5;                if(monster5X >= 750) {monster5X = 750;}            }            if(m == 2) {                monster5X -= 5;                if(monster5X <= 0) {monster5X = 0;}            }            if(m == 3) {                monster5Y += 5;                if(monster5Y >= 600) {monster5Y = 600;}            }            if(m == 4) {                monster5Y -= 5;                if(monster5Y <= 100) {monster5Y = 100;}            }            //如果有玩家吃到食物            if(p1X == AppleX && p1Y == AppleY) {                p1score++;                AppleX = 25*random.nextInt(28);                AppleY = 100 + 25*random.nextInt(18);            } else if(p2X == AppleX && p2Y == AppleY) {                p2score++;                AppleX = 25*random.nextInt(28);                AppleY = 100 + 25*random.nextInt(18);            }            //如果有玩家碰到怪物,判定死亡,游戏结束           后续有修改,暂用            //怪物1死亡            if(p1X >= monster1X -25 && p1X <= monster1X +25) {                if(p1Y == monster1Y) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p1Y >= monster1Y -25 && p1Y <= monster1Y +25) {                if(p1X == monster1X) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p2X >= monster1X -25 && p2X <= monster1X +25) {                if(p2Y == monster1Y) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            if(p2Y >= monster1Y -25 && p2Y <= monster1Y +25) {                if(p2X == monster1X) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            //怪物2死亡            if(p1X >= monster2X -25 && p1X <= monster2X +25) {                if(p1Y == monster2Y) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p1Y >= monster2Y -25 && p1Y <= monster2Y +25) {                if(p1X == monster2X) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p2X >= monster2X -25 && p2X <= monster2X +25) {                if(p2Y == monster2Y) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            if(p2Y >= monster2Y -25 && p2Y <= monster2Y +25) {                if(p2X == monster2X) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            //怪物3死亡            if(p1X >= monster3X -25 && p1X <= monster3X +25) {                if(p1Y == monster3Y) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p1Y >= monster3Y -25 && p1Y <= monster3Y +25) {                if(p1X == monster3X) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p2X >= monster3X -25 && p2X <= monster3X +25) {                if(p2Y == monster3Y) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            if(p2Y >= monster3Y -25 && p2Y <= monster3Y +25) {                if(p2X == monster3X) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            //怪物4死亡            if(p1X >= monster4X -25 && p1X <= monster4X +25) {                if(p1Y == monster4Y) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p1Y >= monster4Y -25 && p1Y <= monster4Y +25) {                if(p1X == monster1X) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p2X >= monster4X -25 && p2X <= monster4X +25) {                if(p2Y == monster4Y) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            if(p2Y >= monster4Y -25 && p2Y <= monster4Y +25) {                if(p2X == monster4X) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            //怪物5死亡            if(p1X >= monster5X -25 && p1X <= monster5X +25) {                if(p1Y == monster5Y) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p1Y >= monster5Y -25 && p1Y <= monster5Y +25) {                if(p1X == monster5X) { p1isFail = !p1isFail; p1score = p2score = 0;}            }            if(p2X >= monster5X -25 && p2X <= monster5X +25) {                if(p2Y == monster5Y) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            if(p2Y >= monster5Y -25 && p2Y <= monster5Y+25) {                if(p2X == monster5X) { p2isFail = !p2isFail; p1score = p2score = 0;}            }            //如果有玩家达到指定积分,判定获胜,游戏结束            if(p1score == 15) { p2isFail = !p2isFail; }            if(p2score == 15) { p1isFail = !p1isFail; }            repaint();        }        timer.start();    }    @Override    public void keyTyped(KeyEvent e) {    }    @Override    public void keyReleased(KeyEvent e) {    }}

游戏规则(使用弹窗)部分

package 代码部分;import javax.swing.*;import java.awt.*;public class TestGameRule extends JDialog {    private int num = 1;    public TestGameRule() {        TextArea textArea = new TextArea(20,10);        textArea.setText("游戏中有五个怪物随机移动,碰到怪物算死亡\游戏中有随机出现的苹果,碰到一个苹果加一分,\先达到十五分或者对手死亡算游戏胜利!");        JScrollPane jScrollPane = new JScrollPane(textArea);        this.add(jScrollPane);        this.setBounds(200,200,400,400);        this.setVisible(true);        textArea.setEditable(false);        setResizable(false);        textArea.setBackground(Color.PINK);    }}

图片素材

package 代码部分;import javax.swing.*;import java.net.URL;public class TestGameData {    public static URL headerurl = TestGameData.class.getResource("/图片素材/header.jpg");    public static URL p1player1url = TestGameData.class.getResource("/图片素材/1.jpg");    public static URL p2player2url = TestGameData.class.getResource("/图片素材/2.jpg");    public static URL appleurl = TestGameData.class.getResource("/图片素材/apple.jpg");    public static URL monsterurl = TestGameData.class.getResource("/图片素材/monster.jpg");    public static ImageIcon p1player1 = new ImageIcon(p1player1url);    public static ImageIcon p2player1 = new ImageIcon(p2player2url);    public static ImageIcon header = new ImageIcon(headerurl);    public static ImageIcon apple = new ImageIcon(appleurl);    public static ImageIcon monster = new ImageIcon(monsterurl);}

主函数

package 代码部分;import javax.swing.*;public class TestStartGame {    public static void main(String[] args) {        //制作窗口        JFrame jFrame = new JFrame("2D对战小游戏");        jFrame.setBounds(10,10,790,660);        jFrame.setResizable(false);        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //添加游戏面板        jFrame.add(new TestGamePanel());        //设置可见        jFrame.setVisible(true);    }}

感谢各位的阅读,以上就是"怎么用Java代码制作一个简单的小游戏"的内容了,经过本文的学习后,相信大家对怎么用Java代码制作一个简单的小游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

代码 怪物 玩家 小游戏 制作 图片 图片素材 素材 部分 人物 彩云 积分 苹果 华文 内容 游戏规则 规则 学习 移动 定时器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全性几年进行一次检测 软件开发的设计基础课程设计 佳暮网络技术工作室 泸州市商务软件开发公司 文明重启怎么看自己加过的服务器 中国农业大学数据库试卷 安仁学电脑软件开发培训中心 见面课网络安全与伤害 深圳市互联网金融网络科技有 绿色校园网络安全黑板报 网络安全画画大全简笔画 武汉国家网络安全学院领导 贝哆蜂类似软件开发 海报校园网络安全 服务器为什么需要域名 药品进销存软件药品数据库 2019的网络安全事件 xp数据库 遂宁网络技术厂家报价 海康服务器能带多少路摄像机 软件开发 计费 常青慕尼黑再保险网络安全保险 龙湾租房网络安全 讲网络安全的电视剧 网络安全国家职业 数据库查找空白语句 公网连接卡巴斯基管理服务器 小型局域网网络安全浅析 游戏软件开发公司特点介绍 浙江明讯网络技术有限公司项目
0