首先,寫一個需求檔案:
一、專案名稱:《天天酷跑》(RunDay)
二、功能介紹:
闖關類游戲,玩家登錄后,選擇進入游戲,通過鍵盤控制玩家的上下左右移動,來躲避
障礙物和吃金幣,玩家躲避的障礙物越多跑酷距離越遠,玩家吃的金幣越多,得分越高,
三、功能模塊:
1、登錄界面
用戶名(輸入框,明文) 密碼(輸入框,密文) 登錄、取消按鈕
2、選單選擇界面
開始游戲按鈕(圖片按鈕) 幫助按鈕 退出按鈕
3、緩沖加載界面
自動加載進度條,加載完畢之后,跳轉到下一界面
4、游戲主界面
移動的背景圖片、動態的玩家、五種障礙物持續出現、玩家和障礙物的碰撞、
暫停、繼續功能、玩家的移動功能
5、結束界面
獲取玩家的得分、跑酷距離,繼續游戲、回傳主選單的功能,
四、開發者:Huey
五、版本號:1.0
六、開發時間:2020.11.16
開發模式:MVC模式
M:Model(資料層),存盤的是物體類,
V:View(顯示層),存盤的是關于界面的類,
C:Controller(控制層),存盤的是相關的邏輯層代碼,
企業級專案命名規范:
cn.sqc.runday.view
界面功能需求圖如下:

接下來我們再做一些準備作業:匯入相關圖片素材,
將天天酷跑的圖片(Image)資源解壓到桌面后,(Image檔案如下圖所示:)

復制到Eclipse中,單擊src,直接Ctrl+V,

本文將實作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作用域一直到最后一個}

LoginPanel的代碼塊:

運行結果截圖:
1.界面

2.登錄
2.1、用戶名及密碼輸入為空的情況:

2.2、用戶名或密碼輸入錯誤的情況:


2.3、用戶名及密碼輸入正確的情況:


單擊彈窗中的“確定”,直接退出,
3.退出
點“取消”即可
個人學習筆記,若有誤還望不吝賜教,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224374.html
標籤:其他
上一篇:CSP2020總結
