Java综合项目:拼图游戏

  • 零、项目描述
    • 1. 用户登录界面
    • 2. 注册界面
    • 3. 游戏界面
    • 4. 素材
  • 一、创建主界面
  • 二、界面设置
  • 三、制作菜单栏
  • 四、添加图片
  • 五、打乱图片
  • 六、美化界面
  • 七、移动
  • 八、查看完整图片
  • 九、判断胜利
  • 十、源码
    • 1. 用户类
    • 2. 验证码工具类
    • 3. 登录类
    • 4. 注册类
    • 5. 游戏类
    • 6. App主入口

零、项目描述

1. 用户登录界面

  • 包括用户名、密码、验证码。
  • 点击验证码刷新。
  • 用户名或密码不正确有提示。

2. 注册界面

  • 包括用户名、密码、再次输入密码。
  • 两次密码输入不正确有提示。
  • 用户名不能重复注册。

3. 游戏界面

  • 包括菜单栏、记步、拼图。
  • 上下左右键移动拼图。
  • 快捷键A查看原图。
  • 快捷键W快速通过。

4. 素材

百度云盘链接: 素材下载 提取码: nws6

一、创建主界面

  1. 主界面:宽603px,高680px;
package day15.ui;import javax.swing.*;public class GameJFrame extends JFrame {// 初始化public GameJFrame() {// 设置宽高this.setSize(603, 680);// 设置界面标题this.setTitle("拼图单机版 v1.0");}
}
  1. 登陆界面:宽488px,高430px;
package day15.ui;import javax.swing.*;public class LoginJFrame extends JFrame {// 初始化public LoginJFrame() {this.setSize(488, 430);this.setVisible(true);}
}
  1. 注册界面:宽488px,高500px。
package day15.ui;import javax.swing.*;public class RegisterJFrame extends JFrame {// 初始化public RegisterJFrame() {this.setSize(488, 500);this.setVisible(true);}
}

二、界面设置

private void initJFrame() {// 设置宽高this.setSize(603, 680);// 设置界面标题this.setTitle("拼图单机版 v1.0");// 设置界面置顶this.setAlwaysOnTop(true);// 设置界面居中this.setLocationRelativeTo(null);// 设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

三、制作菜单栏

private void initJMenuBar() {// 创建整个菜单对象JMenuBar jMenuBar = new JMenuBar();// 创建菜单选项JMenu functionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");// 创建菜单选项条目JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reLoginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");// 把条目添加到选项下面functionJMenu.add(replayItem);functionJMenu.add(reLoginItem);functionJMenu.add(closeItem);aboutJMenu.add(accountItem);// 把选项添加到菜单栏中jMenuBar.add(functionJMenu);jMenuBar.add(aboutJMenu);// 给界面设置菜单this.setJMenuBar(jMenuBar);
}

四、添加图片

private void initImage() {for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {ImageIcon icon = new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/animal/animal3/" + date[i][j] + ".jpg");// 创建JLabel对象(管理容器)JLabel jLabel = new JLabel(icon);// 指定位置jLabel.setBounds(105 * j, 105 * i, 105, 105);// 把管理容器添加到界面中this.getContentPane().add(jLabel);}}
}

五、打乱图片

int[][] date = new int[4][4];private void initDate() {Random random = new Random();int[] tempArr = new int[16];for (int i = 0; i < tempArr.length; i++) {tempArr[i] = i;}// 打乱for (int i = 0; i < tempArr.length; i++) {int index = random.nextInt(tempArr.length);int temp = tempArr[i];tempArr[i] = tempArr[index];tempArr[index] = temp;}// 放入数组for (int i = 0; i < tempArr.length; i++) {date[i / 4][i % 4] = tempArr[i];}
}

六、美化界面

private void initImage() {for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {ImageIcon icon = new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/animal/animal3/" + date[i][j] + ".jpg");// 创建JLabel对象(管理容器)JLabel jLabel = new JLabel(icon);// 指定位置jLabel.setBounds(105 * j + 83, 105 * i + 134, 105, 105);// 设置边框jLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));// 把管理容器添加到界面中this.getContentPane().add(jLabel);}}// 加载背景图片JLabel background = new JLabel(new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/background.png"));background.setBounds(40, 40, 508, 560);this.getContentPane().add(background);
}

七、移动

@Override
public void keyReleased(KeyEvent e) {int code = e.getKeyCode();switch (code) {case 37:System.out.println("zuo");if (y == 3) {return;}date[x][y] = date[x][y + 1];date[x][y + 1] = 0;y++;initImage();break;case 38:System.out.println("shang");if (x == 3) {return;}date[x][y] = date[x + 1][y];date[x + 1][y] = 0;x++;initImage();break;case 39:System.out.println("you");if (y == 0) {return;}date[x][y] = date[x][y - 1];date[x][y - 1] = 0;y--;initImage();break;case 40:System.out.println("xia");if (x == 0) {return;}date[x][y] = date[x - 1][y];date[x - 1][y] = 0;x--;initImage();break;default:break;}
}

八、查看完整图片

@Override
public void keyPressed(KeyEvent e) {int code = e.getKeyCode();if (code == 65) {this.getContentPane().removeAll();JLabel all = new JLabel(new ImageIcon(path + "all.jpg"));all.setBounds(83, 134, 420, 420);this.getContentPane().add(all);// 加载背景图片JLabel background = new JLabel(new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/background.png"));background.setBounds(40, 40, 508, 560);this.getContentPane().add(background);// 刷新界面this.getContentPane().repaint();}
}

九、判断胜利

// 判断是否胜利
public boolean victory(){for (int i = 0; i < date.length; i++) {for (int j = 0; j < date[i].length; j++) {if (date[i][j] != win[i][j]) {return false;}}}return true;
}

十、源码

1. 用户类

package day15.ui;import java.util.ArrayList;public class User {private String username;private String pd;public User() {}public User(String username, String pd) {this.username = username;this.pd = pd;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPd() {return pd;}public void setPd(String pd) {this.pd = pd;}public String toString() {return "User{username = " + username + ", pd = " + pd + "}";}public static int getIndex(ArrayList<User> userArr, String username) {for (int i = 0; i < userArr.size(); i++) {if (userArr.get(i).getUsername().equals(username)) {return i;}}return -1;}
}

2. 验证码工具类

package day15.ui;import java.util.Random;public class VerifyUtil {public static String makeVerify() {Random random = new Random();StringBuilder sb = new StringBuilder();for (char i = 'a'; i <= 'z'; i++) {sb.append(i);}for (char i = 'A'; i <= 'Z'; i++) {sb.append(i);}char[] verify = new char[5];for (int i = 0; i < verify.length; i++) {verify[i] = sb.charAt(random.nextInt(sb.length()));}verify[random.nextInt(verify.length)] = (char) (random.nextInt(10) + 48);return new String(verify);}
}

3. 登录类

package day15.ui;import day15.App;import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;public class LoginJFrame extends JFrame implements MouseListener {JTextField usernameText = new JTextField();JTextField passwordText = new JPasswordField();JTextField verifyText = new JTextField();String verify = VerifyUtil.makeVerify();JLabel verifyJLabel = new JLabel(this.verify);JLabel loginButton = new JLabel();JLabel registerButton = new JLabel();ArrayList<User> userArr = new ArrayList<>();// 初始化public LoginJFrame() {initJFrame();initImage();// 设置界面显示this.setVisible(true);}public LoginJFrame(ArrayList<User> userArr) {this.userArr = userArr;initJFrame();initImage();// 设置界面显示this.setVisible(true);}private void initImage() {// 基础布局JLabel usernameLabel = new JLabel(new ImageIcon("src/day15/image/login/用户名.png"));JLabel passwordLabel = new JLabel(new ImageIcon("src/day15/image/login/密码.png"));JLabel verifyLabel = new JLabel(new ImageIcon("src/day15/image/login/验证码.png"));usernameLabel.setBounds(120, 140, 47, 17);passwordLabel.setBounds(120, 200, 32, 16);verifyLabel.setBounds(120, 260, 56, 21);usernameText.setBounds(180, 135, 180, 30);passwordText.setBounds(180, 195, 180, 30);verifyText.setBounds(180, 255, 100, 30);this.getContentPane().add(usernameLabel);this.getContentPane().add(passwordLabel);this.getContentPane().add(verifyLabel);this.getContentPane().add(usernameText);this.getContentPane().add(passwordText);this.getContentPane().add(verifyText);// 验证码verifyJLabel.setBounds(290, 255, 80, 30);verifyJLabel.addMouseListener(this);this.getContentPane().add(verifyJLabel);// 按钮this.loginButton.setIcon(new ImageIcon("src/day15/image/login/登录按钮.png"));this.registerButton.setIcon(new ImageIcon("src/day15/image/login/注册按钮.png"));this.loginButton.setBounds(110, 310, 128, 47);this.registerButton.setBounds(250, 310, 128, 47);this.getContentPane().add(this.loginButton);this.getContentPane().add(this.registerButton);this.loginButton.addMouseListener(this);this.registerButton.addMouseListener(this);// 背景JLabel background = new JLabel(new ImageIcon("src/day15/image/login/background.png"));background.setBounds(0, 0, 470, 390);this.getContentPane().add(background);// 刷新界面this.getContentPane().repaint();}private void initJFrame() {this.setSize(470, 418);// 设置界面标题this.setTitle("拼图单机版 v1.0 登录");// 设置界面置顶this.setAlwaysOnTop(true);// 设置界面居中this.setLocationRelativeTo(null);// 设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 取消默认的居中放置,只有取消了才会按照xy轴的形式添加组件this.setLayout(null);}@Overridepublic void mouseClicked(MouseEvent e) {Object source = e.getSource();if (source == verifyJLabel) {this.verify = VerifyUtil.makeVerify();this.verifyJLabel.setText(this.verify);}}@Overridepublic void mousePressed(MouseEvent e) {Object source = e.getSource();if (source == this.loginButton) {System.out.println("登录按下");this.loginButton.setIcon(new ImageIcon("src/day15/image/login/登录按下.png"));} else if (source == registerButton) {System.out.println("注册");this.registerButton.setIcon(new ImageIcon("src/day15/image/login/注册按下.png"));}}@Overridepublic void mouseReleased(MouseEvent e) {Object source = e.getSource();if (source == this.loginButton) {login();this.loginButton.setIcon(new ImageIcon("src/day15/image/login/登录按钮.png"));} else if (source == registerButton) {System.out.println("注册松开");this.registerButton.setIcon(new ImageIcon("src/day15/image/login/注册按钮.png"));this.setVisible(false);new RegisterJFrame(userArr);}}private void login() {System.out.println("登录松开");String username = usernameText.getText();String pd = passwordText.getText();String verifyInput = verifyText.getText();int index = User.getIndex(userArr, username);if (!verifyInput.equalsIgnoreCase(verify)) {App.showJDialog("验证码不正确,请重新输入");return;}if (index < 0) {App.showJDialog("用户名" + username + "未注册");return;}String rightPd = userArr.get(index).getPd();if (!pd.equals(rightPd)) {System.out.println("密码不正确,请重新输入");return;}App.showJDialog("登录成功");this.setVisible(false);new GameJFrame();}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}
}

4. 注册类

package day15.ui;import day15.App;import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;public class RegisterJFrame extends JFrame implements MouseListener {JTextField usernameText = new JTextField();JTextField passwordText = new JPasswordField();JTextField againText = new JPasswordField();JLabel registerButton = new JLabel();JLabel resetButton = new JLabel();JLabel loginButton = new JLabel();ArrayList<User> userArr = new ArrayList<>();// 初始化public RegisterJFrame() {initJFrame();initImage();// 设置界面显示this.setVisible(true);}public RegisterJFrame(ArrayList<User> userArr) {this.userArr = userArr;initJFrame();initImage();// 设置界面显示this.setVisible(true);}private void initImage() {// 基础布局JLabel usernameLabel = new JLabel(new ImageIcon("src/day15/image/register/注册用户名.png"));JLabel passwordLabel = new JLabel(new ImageIcon("src/day15/image/register/注册密码.png"));JLabel againLabel = new JLabel(new ImageIcon("src/day15/image/register/再次输入密码.png"));usernameLabel.setBounds(90, 140, 79, 17);passwordLabel.setBounds(90, 200, 64, 16);againLabel.setBounds(90, 260, 96, 17);usernameText.setBounds(200, 135, 180, 30);passwordText.setBounds(200, 195, 180, 30);againText.setBounds(200, 255, 180, 30);this.getContentPane().add(usernameLabel);this.getContentPane().add(passwordLabel);this.getContentPane().add(againLabel);this.getContentPane().add(usernameText);this.getContentPane().add(passwordText);this.getContentPane().add(againText);// 按钮this.registerButton.setIcon(new ImageIcon("src/day15/image/register/注册按钮.png"));this.resetButton.setIcon(new ImageIcon("src/day15/image/register/重置按钮.png"));this.loginButton.setIcon(new ImageIcon("src/day15/image/register/登录按钮.png"));this.registerButton.setBounds(35, 310, 128, 47);this.resetButton.setBounds(175, 310, 128, 47);this.loginButton.setBounds(315, 310, 128, 47);this.getContentPane().add(this.registerButton);this.getContentPane().add(this.resetButton);this.getContentPane().add(this.loginButton);this.registerButton.addMouseListener(this);this.resetButton.addMouseListener(this);this.loginButton.addMouseListener(this);// 背景JLabel background = new JLabel(new ImageIcon("src/day15/image/register/background.png"));background.setBounds(0, 0, 470, 390);this.getContentPane().add(background);// 刷新界面this.getContentPane().repaint();}private void initJFrame() {this.setSize(470, 418);// 设置界面标题this.setTitle("拼图单机版 v1.0 注册");// 设置界面置顶this.setAlwaysOnTop(true);// 设置界面居中this.setLocationRelativeTo(null);// 设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 取消默认的居中放置,只有取消了才会按照xy轴的形式添加组件this.setLayout(null);}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {Object source = e.getSource();if (source == this.registerButton) {this.registerButton.setIcon(new ImageIcon("src/day15/image/register/注册按下.png"));} else if (source == resetButton) {this.resetButton.setIcon(new ImageIcon("src/day15/image/register/重置按下.png"));} else if (source == loginButton) {this.loginButton.setIcon(new ImageIcon("src/day15/image/register/登录按下.png"));}}@Overridepublic void mouseReleased(MouseEvent e) {Object source = e.getSource();if (source == this.registerButton) {register();} else if (source == resetButton) {System.out.println("重置");usernameText.setText("");passwordText.setText("");againText.setText("");this.resetButton.setIcon(new ImageIcon("src/day15/image/register/重置按钮.png"));} else if (source == loginButton) {this.setVisible(false);new LoginJFrame(userArr);}}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}public void register() {System.out.println("注册松开");String username = usernameText.getText();String pd = passwordText.getText();String again = againText.getText();// 查重if (User.getIndex(userArr, username) >= 0) {App.showJDialog("用户名已注册");} else {if (pd.equals(again)) {App.showJDialog("用户名" + username + "注册成功");userArr.add(new User(username, pd));this.setVisible(false);new LoginJFrame(userArr);} else {App.showJDialog("两次密码输入不一致");}}this.registerButton.setIcon(new ImageIcon("src/day15/image/register/注册按钮.png"));}
}

5. 游戏类

package day15.ui;import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;public class GameJFrame extends JFrame implements KeyListener, ActionListener {// 二维数组记录图片位置int[][] date = new int[4][4];// 正确的数组int[][] win = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};// 空白方块的位置int x = 0;int y = 0;// 记录当前图片的路径String path = "src/day15/image/";String chooseImage = "";// 记录步数int step = 0;JMenuItem replayItem = new JMenuItem("重新游戏");JMenuItem reLoginItem = new JMenuItem("重新登录");JMenuItem closeItem = new JMenuItem("关闭游戏");JMenuItem accountItem = new JMenuItem("公众号");JMenuItem girlItem = new JMenuItem("美女");JMenuItem animalItem = new JMenuItem("动物");JMenuItem sportItem = new JMenuItem("运动");// 初始化public GameJFrame() {// 初始化界面initJFrame();// 初始化菜单initJMenuBar();// 初始化数据initDate();this.animalItem.doClick();// 初始化图片initImage();// 设置界面显示this.setVisible(true);}private void initDate() {Random random = new Random();int[] tempArr = new int[16];for (int i = 0; i < tempArr.length; i++) {tempArr[i] = i;}// 打乱for (int i = 0; i < tempArr.length; i++) {int index = random.nextInt(tempArr.length);int temp = tempArr[i];tempArr[i] = tempArr[index];tempArr[index] = temp;}// 放入数组for (int i = 0; i < tempArr.length; i++) {if (tempArr[i] == 0) {x = i / 4;y = i % 4;}date[i / 4][i % 4] = tempArr[i];}}private void initImage() {// 清空原本已经出现的图片this.getContentPane().removeAll();if (victory()) {JLabel winJLabel = new JLabel(new ImageIcon("src/day15/image/win.png"));winJLabel.setBounds(203, 283, 197, 73);this.getContentPane().add(winJLabel);}JLabel stepCount = new JLabel("步数:" + step);stepCount.setBounds(50, 30, 100, 20);this.getContentPane().add(stepCount);for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {ImageIcon icon = new ImageIcon(path + chooseImage + date[i][j] + ".jpg");// 创建JLabel对象(管理容器)JLabel jLabel = new JLabel(icon);// 指定位置jLabel.setBounds(105 * j + 83, 105 * i + 134, 105, 105);// 设置边框jLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));// 把管理容器添加到界面中this.getContentPane().add(jLabel);}}// 加载背景图片JLabel background = new JLabel(new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/background.png"));background.setBounds(40, 40, 508, 560);this.getContentPane().add(background);// 刷新界面this.getContentPane().repaint();}private void initJMenuBar() {// 创建整个菜单对象JMenuBar jMenuBar = new JMenuBar();// 创建菜单选项JMenu functionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("关于我们");JMenu changeJMenu = new JMenu("更改图片");// 创建菜单选项条目replayItem.addActionListener(this);reLoginItem.addActionListener(this);closeItem.addActionListener(this);accountItem.addActionListener(this);girlItem.addActionListener(this);animalItem.addActionListener(this);sportItem.addActionListener(this);// 把条目添加到选项下面functionJMenu.add(changeJMenu);functionJMenu.add(replayItem);functionJMenu.add(reLoginItem);functionJMenu.add(closeItem);aboutJMenu.add(accountItem);changeJMenu.add(girlItem);changeJMenu.add(animalItem);changeJMenu.add(sportItem);// 把选项添加到菜单栏中jMenuBar.add(functionJMenu);jMenuBar.add(aboutJMenu);// 给界面设置菜单this.setJMenuBar(jMenuBar);}private void initJFrame() {// 设置宽高this.setSize(603, 680);// 设置界面标题this.setTitle("拼图单机版 v1.0");// 设置界面置顶this.setAlwaysOnTop(true);// 设置界面居中this.setLocationRelativeTo(null);// 设置关闭模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 取消默认的居中放置,只有取消了才会按照xy轴的形式添加组件this.setLayout(null);// 给整个界面添加键盘事件this.addKeyListener(this);}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {if (victory()) {return;}int code = e.getKeyCode();if (code == 65) {this.getContentPane().removeAll();JLabel all = new JLabel(new ImageIcon(path + chooseImage + "all.jpg"));all.setBounds(83, 134, 420, 420);this.getContentPane().add(all);// 加载背景图片JLabel background = new JLabel(new ImageIcon("/Users/fulling/Desktop/Java/src/day15/image/background.png"));background.setBounds(40, 40, 508, 560);this.getContentPane().add(background);// 刷新界面this.getContentPane().repaint();}}@Overridepublic void keyReleased(KeyEvent e) {if (victory()) {return;}int code = e.getKeyCode();switch (code) {case 37:System.out.println("zuo");if (y == 3) {return;}date[x][y] = date[x][y + 1];date[x][y + 1] = 0;y++;step++;initImage();break;case 38:System.out.println("shang");if (x == 3) {return;}date[x][y] = date[x + 1][y];date[x + 1][y] = 0;x++;step++;initImage();break;case 39:System.out.println("you");if (y == 0) {return;}date[x][y] = date[x][y - 1];date[x][y - 1] = 0;y--;step++;initImage();break;case 40:System.out.println("xia");if (x == 0) {return;}date[x][y] = date[x - 1][y];date[x - 1][y] = 0;x--;step++;initImage();break;case 65:initImage();break;case 87:date = new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};initImage();break;default:break;}}// 判断是否胜利public boolean victory() {for (int i = 0; i < date.length; i++) {for (int j = 0; j < date[i].length; j++) {if (date[i][j] != win[i][j]) {return false;}}}return true;}@Overridepublic void actionPerformed(ActionEvent e) {Random random = new Random();Object obj = e.getSource();if (obj == replayItem) {step = 0;initDate();initImage();} else if (obj == reLoginItem) {this.setVisible(false);new LoginJFrame();} else if (obj == closeItem) {System.exit(0);} else if (obj == accountItem) {JDialog jDialog = new JDialog();JLabel jLabel = new JLabel(new ImageIcon("src/day15/image/about.png"));jLabel.setBounds(0, 0, 258, 258);jDialog.getContentPane().add(jLabel);jDialog.setSize(344, 344);jDialog.setAlwaysOnTop(true);jDialog.setLocationRelativeTo(null);jDialog.setModal(true);jDialog.setVisible(true);} else if (obj == girlItem) {int i = random.nextInt(13);chooseImage = "girl/girl" + i + "/";step = 0;initDate();initImage();} else if (obj == animalItem) {int i = random.nextInt(8);chooseImage = "animal/animal" + i + "/";step = 0;initDate();initImage();} else if (obj == sportItem) {int i = random.nextInt(10);chooseImage = "sport/sport" + i + "/";step = 0;initDate();initImage();}}
}

6. App主入口

package day15;import day15.ui.LoginJFrame;import javax.swing.*;public class App {public static void main(String[] args) {new LoginJFrame();}public static void showJDialog(String content) {JDialog jDialog = new JDialog();jDialog.setSize(200, 150);jDialog.setAlwaysOnTop(true);jDialog.setLocationRelativeTo(null);jDialog.setModal(true);JLabel warning = new JLabel(content);warning.setBounds(0, 0, 200, 150);jDialog.getContentPane().add(warning);jDialog.setVisible(true);}
}

Java综合项目:拼图游戏相关推荐

  1. Java实现人物拼图游戏

    Java实现人物拼图游戏│附代码 Original 清华计算机学堂 清华计算机学堂 Yesterday 收录于话题 #数据库 7个 拼图游戏指将一幅图片分割成若干拼块,并随机打乱顺序,当将所有拼块都放 ...

  2. Java实现小拼图游戏

    今天整理之前的项目,发现了在大二上学期的java课程设计中编写的智能拼图小游戏,觉得有意思,所以打算写篇文章和大伙分享分享. 一.项目功能 1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其 ...

  3. 新个人项目-- 拼图游戏

    正式开博记录,想和很久但一直没有执行的新个人项目-- 拼图游戏. 完全由前端技术完成.从简单粗糙到复杂精细. 为了督促自己持续推进该项目,立博为证. 之后会陆续将文档.计划补充上来.都是非官方非正式的 ...

  4. Java综合项目----开发团队分配管理软件

    Java综合项目----开发团队分配管理软件 源代码下载地址: 简介 需求说明 系统功能结构 系统流程 用户注册和登录模块 开发人员管理模块 Equipment接口及其实现子类的设计 Employee ...

  5. Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(We ...

  6. Java毕设项目Steam游戏平台系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目Steam游戏平台系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX( ...

  7. java综合项目练习-QuickHit打字游戏

    奉天承运,博主诏曰: 综合项目练习-QuickHit打字游戏 项目简介 问题分析 代码参考: 项目简介 问题分析 代码参考: Level 类 public class Level {private i ...

  8. java编写九宫格拼图游戏_九宫格拼图游戏

    九宫格拼图游戏设计文档 一.综合设计目的.条件.任务和内容要求: 1.设计目的 <Windows程序设计>是计算机科学与技术专业本科生的一门学科基础课程.Windows程序以图形用户界面( ...

  9. java编程如何算圆的面具,Java实现人物拼图游戏│附代码

    拼图游戏指将一幅图片分割成若干拼块,并随机打乱顺序,当将所有拼块都放回原位置时就完成了拼图(游戏结束). 01 游戏介绍 在游戏中,拼块以随机顺序排列,网格上有一个位置是空的.完成拼图的方法是利用这个 ...

最新文章

  1. Golang 入门笔记(一)
  2. 淘宝2011.9.21校园招聘会笔试题
  3. pdffactory字体打印不对_标准论文格式字体要求
  4. 我应该使用32位还是64位JVM?
  5. redis常规命令记录
  6. Runtime.getRuntime().exec()调用外部程序
  7. 2-3-TOMCAT服务器
  8. ELK中Kibana6.2.3下Timelion使用
  9. ef6 mysql code first_使用EntityFramework6连接MySql数据库(code first方式)
  10. HQChart 股市图表
  11. 程序员10个必须有的Android应用程序
  12. Essential Qt 第二十一章 本地目录
  13. 快速部署阿里云WebIDE(DevStudio)并参与开源项目开发
  14. 在windbg调试的时候 针对ecx和eax说明
  15. ai智能语音机器人的新风向
  16. python 图灵完备_图灵完备到底是个什么鬼?
  17. icc校色文件使用教程_Win7系统色彩管理显示器ICC设置的操作方法
  18. 统信UOS提示系统磁盘空间不足,磁盘扩容
  19. 联想服务器重装系统快捷键,联想电脑如何重装系统快捷键
  20. 你说的H5到底是什么,跟Html有什么关系,能吃吗

热门文章

  1. 连连跨境支付:跨境独立站最方便的收款提现方式使用教程!
  2. R400在Ubuntu 9.04下安装官方ATI显卡驱动
  3. 老子终于理解递归了(哈哈哈哈哈哈哈哈哈哈)
  4. 盘点 10 个 yyds 的区块链项目
  5. 如何从零配置高效的tensorflow python编程环境之VIM神的编辑器---DIY自己的VIM
  6. DFT频域相乘和时域卷积计算注意点
  7. 解锁WiFi密码,我只用了60行代码....
  8. 使用juery使用ajax实现用户注册时的验证
  9. 图片编辑软件有哪些?建议收藏这些软件
  10. 参加云时代质量的力量论坛与 16 届软件展览会的一些收获