c++酷跑游戏设计_太完整了!三万字Java项目实战之天天酷跑

★★★建议星标我们★★★

公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为星标”!这样才不会错过每日进阶架构文章呀。

8417bce6361310784d045026c6c50a49.png

06af04f28544191bdfadb00bee1a4f22.png

2020年Java原创面试题库连载中

【000期】Java最全面试题库思维导图

【020期】JavaSE系列面试题汇总(共18篇)

【028期】JavaWeb系列面试题汇总(共10篇)

【042期】JavaEE系列面试题汇总(共13篇)

【049期】数据库系列面试题汇总(共6篇)

【053期】中间件系列面试题汇总(共3篇)

【065期】数据结构与算法面试题汇总(共11篇)

【076期】分布式面试题汇总(共10篇)

【077期】综合面试题系列(一)

【078期】综合面试题系列(二)

【079期】综合面试题系列(三)

【080期】综合面试题系列(四)

【081期】综合面试题系列(五)

【082期】综合面试题系列(六)

【083期】综合面试题系列(七)

【084期】综合面试题系列(八)

【085期】综合面试题系列(九)

【086期】综合面试题系列(十)

【087期】综合面试题系列(十一)

【088期】综合面试题系列(十二)

【089期】综合面试题系列(十三) 

更多内容,点击上面蓝字查看bbbc23b566eae6e13023e3c5a1472270.png

来源:blog.csdn.net/qq_45909299


首先,写一个需求文档:

一、项目名称:《天天酷跑》(RunDay)

二、功能介绍:
闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避
障碍物和吃金币,玩家躲避的障碍物越多跑酷距离越远,玩家吃的金币越多,得分越高。

三、功能模块:
1、登录界面
用户名(输入框,明文) 密码(输入框,密文) 登录、取消按钮
2、菜单选择界面
开始游戏按钮(图片按钮) 帮助按钮 退出按钮
3、缓冲加载界面
自动加载进度条,加载完毕之后,跳转到下一界面
4、游戏主界面
移动的背景图片、动态的玩家、五种障碍物持续出现、玩家和障碍物的碰撞、
暂停、继续功能、玩家的移动功能
5、结束界面
获取玩家的得分、跑酷距离。继续游戏、返回主菜单的功能。

四、开发者:Huey
五、版本号:1.0
六、开发时间:2020.11.16

开发模式:MVC模式

M:Model(数据层),存储的是实体类。
V:View(显示层),存储的是关于界面的类。
C:Controller(控制层),存储的是相关的逻辑层代码。

企业级项目命名规范:

cn.sqc.runday.view

一、登录界面

界面功能需求图如下:

9b80f5951233f1ee0658c62ce0f089c0.png
接下来我们再做一些准备工作:导入相关图片素材。

将天天酷跑的图片(Image)资源解压到桌面后,(Image文件如下图所示:)

41cf98db97b187a08dbb8b1bdc5e8d4c.png
复制到Eclipse中,单击src,直接Ctrl+V。

22c545edf539fcdf43cfde6137cc5673.png
本文将实现cn.sqc.runday.view这一界面内容。

相关代码如下:

package cn.sqc.runday.view;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.BorderFactory;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;/** *  * @author Huey * @date 2020-11-16 * 登录界面:用户名输入框  密码输入框  登录取消按钮 功能 * */public class LoginFrame extends JFrame{
      //用户名变量(文本)  JLabel userLabel;  //用户名输入框(文本输入框)  JTextField userField;  //密码变量(文本)  JLabel userLabel2;  //密码输入框(文本输入框)  JPasswordField userField2;  //登录按钮、取消按钮(按钮)  JButton Login,Cancel;  public LoginFrame() {//直接 alt / (无参构造)      userLabel = new JLabel("用户名");      //设置字体    userLabel.setFont(new Font("微软雅黑",Font.BOLD,18));            userLabel2 = new JLabel("密  码");    userLabel2.setFont(new Font("微软雅黑",Font.BOLD,18));    //布局方式:绝对布局    userLabel.setBounds(20, 220, 100, 30);//x位置,y位置,所占显示空间的大小    this.add(userLabel);//将用户名这三个字添加到登录界面上,以下同理    userLabel2.setBounds(20, 280, 100, 30);    this.add(userLabel2);    //用户名输入框    userField = new JTextField();    userField.setBounds(80, 220, 100, 30);    //设置输入框凹陷效果    userField.setBorder(BorderFactory.createLoweredBevelBorder());    //设置输入框背景透明    userField.setOpaque(false);    this.add(userField);    userField2 = new JPasswordField();    userField2.setBounds(80, 280, 100, 30);    userField2.setBorder(BorderFactory.createLoweredBevelBorder());    userField2.setOpaque(false);    this.add(userField2);//登录按钮    Login = new JButton("登录");    Login.setBounds(45,350,60,36);    //Login.setBackground(new Color(44,22,44));//背景色    //Login.setForeground(Color.BLUE);//前景色        //绑定登录按钮的事件监听    Login.addActionListener(new ActionListener() {//ActionListener alt /      @Override      public void actionPerformed(ActionEvent e) {
            //System.out.println("点击登录按钮");        //获取用户名输入框的内容        String userName = userField.getText();        String passWord = userField2.getText();//横杠原因:方法太老了,不推荐用        if("Huey".equals(userName) && "123".equals(passWord)){
              //登录成功          JOptionPane.showMessageDialog(null, "欢迎"+userName+"来到天天酷跑游戏");          //跳转到下一界面          //关闭当前界面          dispose();        }else if("".equals(userName) || "".equals(passWord)){
              //不能为空          JOptionPane.showMessageDialog(null, "用户名 / 密码不能为空,请重新输入!");        }else{
              JOptionPane.showMessageDialog(null, "用户名 / 密码输入错误,请重新输入!");        }      }    });    this.add(Login);//取消按钮    Cancel = new JButton("取消");    Cancel.setBounds(135,350,60,36);    this.add(Cancel);    Cancel.addActionListener(new ActionListener() {
          @Override      public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub        dispose();      }    });    //创建背景面板,并添加到窗体上去    LoginPanel panel = new LoginPanel();    this.add(panel);      //设置登录界面的基本属性    this.setSize(900,530);    this.setLocationRelativeTo(null);//位置居中    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    this.setUndecorated(true);    //设置窗体的Logo图标    this.setIconImage(new ImageIcon("Image/115.png").getImage());//存储图片    this.setVisible(true);  }  //测试用的main方法       main + Alt /  public static void main(String[] args) {
        new LoginFrame();  }  class LoginPanel extends JPanel{//画板    //背景图片变量    Image background;//------ctr shift + o 导包    public LoginPanel() {//-----alt / 回车 构造方法    在{后双击,显示作用域      //读取图片文件,赋值给background变量      try {//-----虽然不大可能,但也做好吃饭噎死的准备        background = ImageIO.read(new File("Image/login.jpg"));//----read参数为File类型      } catch (IOException e) {//-------捕获异常信息        // 打印异常日志信息        e.printStackTrace();      }    }    //绘制方法    @Override    public void paint(Graphics g) {
          super.paint(g);      //绘制背景图片      g.drawImage(background, 0, 0,900,530, null);//900,530为宽高    }  }}//throws ......抛异常,将下面的异常向上抛,交给上级:不建议
为了更清楚地看出代码结构,这里给出部分代码的作用域。

LoginFrame作用域一直到最后一个}

6c90222f52f1d3e60058cea11e817d7f.png

LoginPanel的代码块:

a0943a75818bfd1ac23933f699b97ede.png

运行结果截图:

1.界面

7d178bf9ff35ce568f7b62b24936bcee.png

2.登录

2.1、用户名及密码输入为空的情况:

137eaba51d3b1ea5f9bc61206a25ea8a.png
2.2、用户名或密码输入错误的情况:

6e6309460565e15156f71b57135ad2e8.pngfab7434e642e728690c41a963f99f387.png

2.3、用户名及密码输入正确的情况:

7d68f55154c53246c0d47db61c29d34e.png1ef4397c5e6ff7f28b75479e74e49832.png
单击弹窗中的“确定”,直接退出。

3.退出

点“取消”即可

二、开始游戏界面

前文,我们完成了登录界面的搭建。接下来将完成开始游戏界面的搭建,并建立起登录界面与开始游戏界面的桥梁。
实现在输对用户名和密码后即可进入开始游戏界面的功能。

界面功能需求图:

5627545dfb9734b65441852339f24c9b.png

具体要求:

当鼠标移入开始游戏按钮后,按钮将由暗变亮,鼠标移开后,按钮又由亮变暗。

帮助、离开按钮同理。

另外,当点击离开时,需要实现关闭当前界面的效果。

上代码:

package cn.sqc.runday.view;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.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import cn.sqc.runday.controller.WindowFrame;public class MainFrame extends JFrame implements MouseListener {
      //设置窗体的基本属性  大小  /**   *  1.1、设置窗体基本属性大小 居中 边框隐藏 默认关闭按钮 logo图标    1.2、创建背景面板MainPanel,实现背景图片功能    2.图片按钮功能   */  //2.1创建开始按钮 帮助按钮 离开按钮 组件  JLabel start,help,exit;  JPanel MainPanel;  public MainFrame() {//无参构造,创建对象。并在main函数中调用    //2.2    start = new JLabel(new ImageIcon("Image/hh1.png"));//ImageIcon:图标    start.setBounds(350,320,150,40);    start.setEnabled(false);//false按钮为灰色        start.addMouseListener(this);    this.add(start);    help = new JLabel(new ImageIcon("Image/hh2.png"));    help.setBounds(350,420,150,40);    help.setEnabled(false);    help.addMouse
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值