Java学习笔记_18 项目实战之天天酷跑(五):结束界面【完结篇】

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

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

具体啥样子,先睹为快!

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

一、跑酷距离

我是在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 athis.p = person;//创建对象、传值try {background = ImageIO.read(new File("Image/chou.png"));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic void paint(Graphics g) {// TODO Auto-generated method stubsuper.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);}}@Overridepublic 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);}}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部