效果图:
游戏,肯定是要有一个游戏界面,这是主要的,其次就是用户登录界面和用户注册界面。明白这些后就知道接下来我们应该要做些什么了,那就废话少说,直接打开我们心爱的idea,上才艺!!!
完整代码请看我的gitee 的仓库——看完整代码就点开这里
由于篇幅有限,这里我只展示拼图游戏界面最重要的几段逻辑代码。上代码!!
(这里我事先将图片处理成16张小图片,并将他以1、2...、14、15的格式来命名)
这段代码的逻辑就是先创建一个二维数组,然后通过遍历来将图片放进二维数组中(这里用遍历的原因是减少代码量,你也可以将图片挨个放到数组中。我相信聪明的你哪种效率更高)
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
//获取当前要加载图片的序号
int num=data[i][j];
//创建JLabel的对象(管理容器)
//相对路径
ImageIcon image=new ImageIcon(path+num+".jpg");
JLabel jLabel=new JLabel(image);
//指定图片位置
jLabel.setBounds(105*j+42,105*i+170,105,105);
//给图片添加边框
//LOWERED:让图片凹起
//RAISED:让图片凸下去
jLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
//把管理容器添加到界面
this.getContentPane().add(jLabel);
}
}
2. 打乱小图片
我代码的注释很详细吧。↓
//定义一个一维数组
int[] tempArr={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0};
//打乱数组中的数据顺序
//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上面的数据进行交换
Random r=new Random();
for(int i=0;i
这就是游戏界面的主要代码
用户登录无非就是你输入账号密码,然后提交给数据库(这里我是用集合存储用户信息)去做对比,再去做判断。
这里主要的细节就是我用了stream流去遍历账号和密码,符合条件的就存储到matchUserList集合中,再交给下面去判断。这样的目的也是为了代码简洁和美观。
//获取输入的用户名和密码
String inputname=inputUsername.getText();
String inputword=inputPassword.getText();
List matchUserList = list.stream().filter(s -> s.getUsername().equals(inputname) && s.getPassword().equals(inputword)).toList();
if (matchUserList.size() > 0) {
checkcode();
} else {
//创建弹窗报错提醒
JDialog jDialog=new JDialog();
jDialog.setTitle("输入异常");
//取消默认居中(让窗体里面的所有组件都相对于一个坐标放置)
jDialog.setLayout(null);
JLabel wrong=new JLabel("用户名或密码输入错误,请重新登录");
wrong.setForeground(Color.red);
Font font=new Font("微软雅黑",0,13);
wrong.setFont(font);
wrong.setBounds(22,3,222,22);
jDialog.getContentPane().add(wrong);
jDialog.setSize(282,66);
//让弹框置顶
jDialog.setAlwaysOnTop(true);
//让弹框居中
jDialog.setLocationRelativeTo(null);
//弹框不关闭则无法进行下面的界面
jDialog.setModal(true);
//让弹框显示出来
jDialog.setVisible(true);
}
简单吧!
这里也是简单的遍历和判断。
String newName=inputName.getText();
String password1=inputPassword.getText();
String password2=againPassword.getText();
User user=new User(newName,password1);
//先查找用户名相同的用户,找到就提示并退出
//List matchUser = list0.stream().filter(s->s.getUsername().equals(newName)).collect(Collectors.toList());
for (int i = 0; i < list0.size(); i++) {
if (list0.get(i).getUsername().equals(newName)) {
createDialogMessage("该用户名已被使用,请换一个吧");
return;
}
}
if(newName.equals("")){
createDialogMessage("请输入用户名");
}else if(password1.equals("")){
createDialogMessage("请输入密码");
}else if(!password2.equals(password1)){
createDialogMessage("两次密码输入不一致,请重新输入");
}else{
list0.add(user);
this.setVisible(false);
LoginJFrame.getInstance().setVisible(true);
}
有不懂的地方可以在评论区提问,或私聊我。