• 项目实战之天天酷跑(五):结束界面【完结篇】


    本文摘自:https://blog.csdn.net/qq_45909299/article/details/110881446

    项目源码及相关图片资源,已上传至GitHub:https://github.com/HueyM/Projects

    接上文,本文将实现天天酷跑游戏的结束界面,功能如下:

    跑酷距离、获取玩家的得分。
    再来一次、返回主菜单、直接退出。

    具体啥样子,先睹为快!

    在这里插入图片描述

    点击再来一次按钮,进入加载状态,加载结束,直接进入游戏。

    在这里插入图片描述

    点击主菜单按钮,进入主菜单界面:

    在这里插入图片描述

    一、跑酷距离

    我是在Person类的玩家移动方法中,添加了一个自增的diatance,只要玩家的图片还在切换,也就是游戏还没有结束,这个distance都在自增,也算是一种间接的实现计算跑酷距离的方法。
    在这里插入图片描述
    通过在Person类中添加get、set方法,获取数据。
    在这里插入图片描述

    二、获取玩家的得分

    玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。
    在这里插入图片描述
    而总分,我在Person类中,设定了一个简单的计分规则:
    在这里插入图片描述

    三、再来一次

    在鼠标点击事件内,new一个新的加载界面,加载完成后自动进入游戏。
    在这里插入图片描述

    四、返回主界面

    同理。
    在这里插入图片描述

    五、直接退出

    同理。
    在这里插入图片描述

    上代码

    EndFrame.java

    package cn.sqc.runday.view;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    import cn.sqc.runday.controller.GamePanel;
    import cn.sqc.runday.model.Person;
    
    
    public class EndFrame extends JFrame implements MouseListener {
        //创建继续游戏按钮、返回主菜单按钮、退出按钮 组件
            JLabel again,back,exit;
            
        public EndFrame(Person person) { 
            again = new JLabel(new ImageIcon("Image/hh5.png"));
            again.setBounds(520, 622, 60, 25);
            again.addMouseListener(this);
            this.add(again);    
            back = new JLabel(new ImageIcon("Image/hh6.png"));
            back.setBounds(520, 722, 60, 25);
            back.addMouseListener(this);
            this.add(back);
            exit = new JLabel(new ImageIcon("Image/hh3.png"));
            exit.setBounds(520, 822, 60, 25);
            exit.addMouseListener(this);
            this.add(exit);
            
            EndPanel end = new EndPanel(person);
            this.add(end);//将结束面板组件添加到结束窗口上
            
            this.setSize(1500, 900);
            this.setLocationRelativeTo(null);
            this.setUndecorated(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setIconImage(new ImageIcon("Image/115.png").getImage());
            this.setVisible(true);
        }
        
        public static void main(String[] args) { 
            //new EndFrame();
        }
        class EndPanel extends JPanel{
            Image background;
            Person p;
            public EndPanel(Person person) {//类比int a
                this.p = person;//创建对象、传值
                try {
                    background = ImageIO.read(new File("Image/chou.png"));
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            @Override
            public void paint(Graphics g) {
                // TODO Auto-generated method stub
                super.paint(g);
                g.drawImage(background, 0, 0,1500,900 ,null);
                g.setColor(Color.CYAN);
                g.setFont(new Font("宋体",Font.BOLD,30));
                g.drawString(p.getScore()+"",1110,705);// + ” “ 属实妙
                g.drawString(p.getDistance() + " ", 1110, 622);
                
                g.setFont(new Font("宋体",Font.BOLD,50));
                g.setColor(Color.ORANGE);
                g.drawString(p.getTotalScore() + "", 1075, 500);
            }
        }
        @Override
        public void mouseClicked(MouseEvent e) {
            if(e.getSource().equals(again)){
                //跳转到下一界面    
                 new WindowFrame().Start();
                //关闭当前界面
                 dispose();
            }    else if(e.getSource().equals(back)){
                new MainFrame();
                dispose();
            }else if(e.getSource().equals(exit)){
                System.exit(0);
            }
        }
    
        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
        
    }
    View Code
    I have a dream : Sandy beach B-J-N.
  • 相关阅读:
    myeclipse中代码不显示SVN版本号
    java HttpURLConnection 登录网站 完整代码
    新浪微博自动(模拟)登陆详解及实现
    java模拟Cookies登陆
    paper 53 :深度学习(转载)
    paper 52 :windows7环境下theano安装
    paper 51:图像复原
    paper 50 :人脸识别简史与近期进展
    paper 49:论文退稿?审稿人帮你总结了22个能避免的常见问题
    paper 48: Latex中如何制作参考文献
  • 原文地址:https://www.cnblogs.com/mjtabu/p/14380850.html
Copyright © 2020-2023  润新知