Java拼图小游戏

2023-12-25 08:13:34

文章目录

main方法

登录界面

游戏主界面

User类

图片素材获取方式

基于Java实现的拼图小游戏,代码与图片素材来自b站up主黑马程序员的Java教学视频。

main方法

import ui.LoginJframe;

public class App {

? ? public static void main(String[] args) {

? ? ? ? new LoginJframe(); //创建登陆界面

? ? }

}

登录界面

package ui;

import javax.swing.*;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.ArrayList;

import java.util.Random;

import javax.swing.JButton;

import javax.swing.JFrame;

//游戏登录界面

public class LoginJframe extends JFrame implements MouseListener {

? ? //创建全集一个用户集合用于登录判断

? ? static ArrayList<User> list=new ArrayList<>();

? ? static String userName;

? ? //添加用户集合成员,用于登录操作判断

? ? static{

? ? ? ? list.add(new User("wuhu","yahu"));

? ? }

? ? //切换验证码按键

? ? JButton Switch_Captcha=new JButton();

? ? //设置注册按钮

? ? JButton enrollJButton=new JButton();

? ? //设置登录按钮

? ? JButton loginJButton = new JButton();

? ? //getCaptcha为验证码获取方法,传递的数据为需要返回的验证码的长度

? ? String str_Captcha=getCaptcha(5);

? ? /*登录与注册按钮的图片文件位置*/

? ? String Image_enroll="untitled/image/login/注册按钮.png";

? ? String Image_login="untitled/image/login/登录按钮.png";

? ? //显示用户名输入框

? ? JTextField NameFrame=new JTextField();

? ? //添加验证码文本框

? ? JTextField FrameCaptcha=new JTextField();

? ? //密码输入显示框

? ? JTextField PasswordFrame=new JTextField();

? ? //创建一个弹框对象

? ? JDialog Error;

? ? //登录界面的空参构造

? ? public LoginJframe(){

? ? ? ? initJFrame(); //界面初始化项目

? ? ? ? initView(); //界面元素添加

? ? ? ? //绑定监听

? ? ? ? enrollJButton.addMouseListener(this);

? ? ? ? loginJButton.addMouseListener(this);

? ? ? ? Switch_Captcha.addMouseListener(this);

? ? ? ? //将界面状态设置为显示

? ? ? ? this.setVisible(true);

? ? }

? ? //界面初始化类

? ? public void initView(){

? ? ? ? //清空界面

? ? ? ? this.getContentPane().removeAll();

? ? ? ? //显示用户名

? ? ? ? JLabel UsrtName = new JLabel(new ImageIcon("untitled/image/login/用户名.png"));

? ? ? ? UsrtName.setBounds(100,105,47,17);

? ? ? ? this.getContentPane().add(UsrtName);

? ? ? ? //配置用户名输入框

? ? ? ? NameFrame.setBounds(160,100,200,30);

? ? ? ? this.getContentPane().add(NameFrame);

? ? ? ? //显示密码

? ? ? ? JLabel UsrtPassword=new JLabel(new ImageIcon("untitled/image/login/密码.png"));

? ? ? ? UsrtPassword.setBounds(100,155,47,17);

? ? ? ? this.getContentPane().add(UsrtPassword);

? ? ? ? //配置密码框参数

? ? ? ? PasswordFrame.setBounds(160,150,200,30);

? ? ? ? this.getContentPane().add(PasswordFrame);

? ? ? ? //添加验证码

? ? ? ? JLabel CaptchaTxT=new JLabel(new ImageIcon("untitled/image/login/验证码.png"));

? ? ? ? CaptchaTxT.setBounds(100,215,47,17);

? ? ? ? this.getContentPane().add(CaptchaTxT);

? ? ? ? //配置验证码文本框参数

? ? ? ? FrameCaptcha.setBounds(160,210,100,30);

? ? ? ? this.getContentPane().add(FrameCaptcha);

? ? ? ? //验证码显示

? ? ? ? System.out.println(str_Captcha);

? ? ? ? JLabel Captcha=new JLabel(str_Captcha);

? ? ? ? Captcha.setBounds(280,215,50,20);

? ? ? ? this.getContentPane().add(Captcha);

? ? ? ? //设置验证码按钮

? ? ? ? Switch_Captcha.setBounds(275,215,50,20);

? ? ? ? Switch_Captcha.setBorderPainted(false);

? ? ? ? Switch_Captcha.setContentAreaFilled(false);

? ? ? ? this.getContentPane().add(Switch_Captcha);

? ? ? ? //配置登录按钮

? ? ? ? loginJButton.setIcon(new ImageIcon(Image_login));

? ? ? ? loginJButton.setBorderPainted(false); //去除按钮的默认边框

? ? ? ? loginJButton.setContentAreaFilled(false); //去除按钮的默认背景

? ? ? ? loginJButton.setBounds(123,310,128,47); //设置位置与大小

? ? ? ? this.getContentPane().add(loginJButton);

? ? ? ? //配置注册按钮

? ? ? ? enrollJButton.setIcon(new ImageIcon(Image_enroll));

? ? ? ? enrollJButton.setBorderPainted(false); //去除按钮的默认边框

? ? ? ? enrollJButton.setContentAreaFilled(false); //去除按钮的默认背景

? ? ? ? enrollJButton.setBounds(270,310,128,47); //设置位置与大小

? ? ? ? this.getContentPane().add(enrollJButton);

? ? ? ? // 添加背景图片

? ? ? ? //设置一个JLabel对象进行管理图片

? ? ? ? JLabel background_JLabel=new JLabel(new ImageIcon("untitled/image/register/background.png"));

? ? ? ? //设置图片的位置与宽高

? ? ? ? background_JLabel.setBounds(0,0,470,390);

? ? ? ? //将容器添加到界面当中

? ? ? ? this.getContentPane().add(background_JLabel);

? ? ? ? //刷新界面

? ? ? ? this.getContentPane().repaint();

? ? }

? ? //获取验证码方法 n 为需要返回的验证码长度

? ? public static String getCaptcha(int len){

? ? ? ? Random r=new Random(); //设置随机方法种子

? ? ? ? StringBuilder str=new StringBuilder();

? ? ? ? for (int i = 0; i < len-1; i++) {

? ? ? ? ? ? int num=r.nextInt(58)+65; //字母范围的数值

? ? ? ? ? ? //跳过ascii表中的其他字符

? ? ? ? ? ? if(num > 90 && num < 97){

? ? ? ? ? ? ? ? num+=7;

? ? ? ? ? ? }

? ? ? ? ? ? str.append((char)num); //将数值强制转换为字母并添加到字符串中

? ? ? ? }

? ? ? ? //将数字添加到字符串中

? ? ? ? int number=r.nextInt(10);

? ? ? ? str.append(number);

? ? ? ? //转换为字符数组更好进行乱序的操作

? ? ? ? char []arr= str.toString().toCharArray();

? ? ? ? //将其数组元素顺序打乱

? ? ? ? for (int i = 0; i < arr.length; i++) {

? ? ? ? ? ? int index=r.nextInt(arr.length);

? ? ? ? ? ? char temp=arr[i];

? ? ? ? ? ? arr[i]=arr[index];

? ? ? ? ? ? arr[index]=temp;

? ? ? ? }

? ? ? ? //将完成的验证码转换为字符串将其返回

? ? ? ? return new String(arr);

? ? }

? ? //注册界面初始化方法

? ? public void initJFrame(){

文章来源:https://blog.csdn.net/2302_76546999/article/details/135183030
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。