网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 880|回复: 0
打印 上一主题 下一主题

Java项目实战之天天酷跑(九)

[复制链接]

271

主题

284

帖子

1243

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1243

最佳新人活跃会员热心会员突出贡献优秀版主

跳转到指定楼层
楼主
发表于 2021-2-24 19:39:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
五、结束界面接上文,接下来将实现天天酷跑游戏的结束界面,功能如下:
跑酷距离、获取玩家的得分。
再来一次、返回主菜单、直接退出。
具体啥样子,先睹为快!
点击再来一次按钮,进入加载状态,加载结束,直接进入游戏。
点击主菜单按钮,进入主菜单界面:
1、跑酷距离
我是在Person类的玩家移动方法中,添加了一个自增的diatance,只要玩家的图片还在切换,也就是游戏还没有结束,这个distance都在自增,也算是一种间接的实现计算跑酷距离的方法。
通过在Person类中添加get、set方法,获取数据。
2、获取玩家的得分
玩家与金币碰撞的得分即为图中的表现分,在GamePanel 获取。
而总分,我在Person类中,设定了一个简单的计分规则:
3、再来一次
在鼠标点击事件内,new一个新的加载界面,加载完成后自动进入游戏。
4、返回主界面
同理。
5、直接退出
同理。
上代码
EndFrame.java
  1. package cn.sqc.runday.view;

  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import javax.imageio.ImageIO;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JLabel;
  15. import javax.swing.JPanel;

  16. import cn.sqc.runday.controller.GamePanel;
  17. import cn.sqc.runday.model.Person;


  18. public class EndFrame extends JFrame implements MouseListener {
  19.         //创建继续游戏按钮、返回主菜单按钮、退出按钮 组件
  20.                 JLabel again,back,exit;
  21.                
  22.         public EndFrame(Person person) {
  23.                 again = new JLabel(new ImageIcon("Image/hh5.png"));
  24.                 again.setBounds(520, 622, 60, 25);
  25.                 again.addMouseListener(this);
  26.                 this.add(again);       
  27.                 back = new JLabel(new ImageIcon("Image/hh6.png"));
  28.                 back.setBounds(520, 722, 60, 25);
  29.                 back.addMouseListener(this);
  30.                 this.add(back);
  31.                 exit = new JLabel(new ImageIcon("Image/hh3.png"));
  32.                 exit.setBounds(520, 822, 60, 25);
  33.                 exit.addMouseListener(this);
  34.                 this.add(exit);
  35.                
  36.                 EndPanel end = new EndPanel(person);
  37.                 this.add(end);//将结束面板组件添加到结束窗口上
  38.                
  39.                 this.setSize(1500, 900);
  40.                 this.setLocationRelativeTo(null);
  41.                 this.setUndecorated(true);
  42.                 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43.                 this.setIconImage(new ImageIcon("Image/115.png").getImage());
  44.                 this.setVisible(true);
  45.         }
  46.        
  47.         public static void main(String[] args) {
  48.                 //new EndFrame();
  49.         }
  50.         class EndPanel extends JPanel{
  51.                 Image background;
  52.                 Person p;
  53.                 public EndPanel(Person person) {//类比int a
  54.                         this.p = person;//创建对象、传值
  55.                         try {
  56.                                 background = ImageIO.read(new File("Image/chou.png"));
  57.                         } catch (IOException e) {
  58.                                 // TODO Auto-generated catch block
  59.                                 e.printStackTrace();
  60.                         }
  61.                 }
  62.                 @Override
  63.                 public void paint(Graphics g) {
  64.                         // TODO Auto-generated method stub
  65.                         super.paint(g);
  66.                         g.drawImage(background, 0, 0,1500,900 ,null);
  67.                         g.setColor(Color.CYAN);
  68.                         g.setFont(new Font("宋体",Font.BOLD,30));
  69.                         g.drawString(p.getScore()+"",1110,705);// + ” “ 属实妙
  70.                         g.drawString(p.getDistance() + " ", 1110, 622);
  71.                        
  72.                         g.setFont(new Font("宋体",Font.BOLD,50));
  73.                         g.setColor(Color.ORANGE);
  74.                         g.drawString(p.getTotalScore() + "", 1075, 500);
  75.                 }
  76.         }
  77.         @Override
  78.         public void mouseClicked(MouseEvent e) {
  79.                 if(e.getSource().equals(again)){
  80.                         //跳转到下一界面       
  81.                          new WindowFrame().Start();
  82.                         //关闭当前界面
  83.                          dispose();
  84.                 }        else if(e.getSource().equals(back)){
  85.                         new MainFrame();
  86.                         dispose();
  87.                 }else if(e.getSource().equals(exit)){
  88.                         System.exit(0);
  89.                 }
  90.         }

  91.         @Override
  92.         public void mousePressed(MouseEvent e) {
  93.                 // TODO Auto-generated method stub
  94.                
  95.         }

  96.         @Override
  97.         public void mouseReleased(MouseEvent e) {
  98.                 // TODO Auto-generated method stub
  99.                
  100.         }

  101.         @Override
  102.         public void mouseEntered(MouseEvent e) {
  103.                 // TODO Auto-generated method stub
  104.                
  105.         }

  106.         @Override
  107.         public void mouseExited(MouseEvent e) {
  108.                 // TODO Auto-generated method stub
  109.                
  110.         }
  111.        
  112. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-4-20 04:37 , Processed in 0.058885 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表