java gui怎么做游戏_手把手教你做游戏——JAVA GUI 推箱子(完)

终于要结尾了。本篇博客我们将做出选关界面

选关界面

能选关,选择自定义(玩家自己做的)和自带(我弄的)地图。

package cn.edu.caztc.sokobangame;

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import javax.swing.DefaultListModel;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JDialog;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextPane;

import javax.swing.border.EmptyBorder;

public class GetLevelDialog extends JDialog {

private DefaultListModelmodel;

int levelmax, diylevelmax;

JList list;

boolean xuanzhong = true;

int level =0;

private final JPanel contentPanel = new JPanel();

/**

* Create the dialog.

*/

public GetLevelDialog() {

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

setModal(true);// 动态模糊

setTitle("选关");

setBounds(100, 100, 512, 340);

getContentPane().setLayout(new BorderLayout());

contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));

getContentPane().add(contentPanel, BorderLayout.CENTER);

contentPanel.setLayout(null);

JScrollPane scrollPane = new JScrollPane();

scrollPane.setBounds(328, 52, 103, 173);

contentPanel.add(scrollPane);

model = new DefaultListModel();

diylevelmax = 1;

levelmax = 1;

while (true) {

if (IsExistence("D:\\推箱子\\diy" + diylevelmax + ".map")) {

diylevelmax++;

} else if (IsExistence("D:\\推箱子\\" + levelmax + ".map")) {

levelmax++;

} else {

// System.out.println(i+"----"+j);

break;

}

}

list = new JList(model);

UpdataModel(diylevelmax);

scrollPane.setViewportView(list);

JCheckBox checkBox = new JCheckBox("自定义");

checkBox.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

if (xuanzhong) {

UpdataModel(levelmax);

xuanzhong=false;

} else {

UpdataModel(diylevelmax);

xuanzhong=true;

}

}

});

checkBox.setSelected(true);

checkBox.setBounds(328, 23, 103, 23);

contentPanel.add(checkBox);

JTextPane txtpndtxtdiytxt = new JTextPane();

txtpndtxtdiytxt.setText(

"选关界面,你就可以选择开发者做出来的地图,也可以自己在游戏界面——自定义——地图编辑器里自己做地图。地图文件夹在D盘推箱子中,1.txt代表本人做的地图,diy1.txt代表自定义,可相互替换");

txtpndtxtdiytxt.setFont(new Font("楷体", Font.PLAIN, 15));

txtpndtxtdiytxt.setBounds(45, 52, 224, 173);

contentPanel.add(txtpndtxtdiytxt);

{

JPanel buttonPane = new JPanel();

buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));

getContentPane().add(buttonPane, BorderLayout.SOUTH);

{

JButton okButton = new JButton("确定");

okButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

level = list.getSelectedIndex()+1;

dispose();

}

});

okButton.setActionCommand("Cancel");

buttonPane.add(okButton);

getRootPane().setDefaultButton(okButton);

}

{

JButton cancelButton = new JButton("取消");

cancelButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

dispose();

}

});

cancelButton.setActionCommand("Cancel");

buttonPane.add(cancelButton);

}

}

setLocationRelativeTo(null);

setVisible(true);

}

void UpdataModel(int level){

model.removeAllElements();

for (int i = 1; i < level; i++) {

model.addElement("第"+ i +"关");

}

}

/**

* 判断是否存在文件file

*

* @param file 如:D:\\推箱子\\1.txt

* @return 存在即为true

*/

boolean IsExistence(String file) {

File fileuser = new File(file);

if (!fileuser.exists()) {

return false;

}

return true;

}

/**

* main得到信息

* @return 0 为取消 1-n为选关

*/

int getValue() {

return level;

}

/**

* 返回是否diy地图

* @return

*/

boolean isdiy() {

return xuanzhong;

}

}

MainGame对应方法

JMenuItem menuItem = new JMenuItem("选关");

menuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

// System.out.println("选关");

dialog = new GetLevelDialog();

if (dialog.getValue()!=0) {

diy = dialog.isdiy();

level = dialog.getValue();

GetMAP(level, diy);

}

}

});

至此,功能基本全部实现,接下来整理+美化

整理美化自己整去吧,可参考 暑假第一战——java+mysql 个人信息管理系统(续 迅速美化UI)

项目文件下载:

链接:https://pan.baidu.com/s/13WHG-eAKFbZ2wZ7FLfoTAA

提取码:6zpi

手把手教你做游戏——JAVA GUI 推箱子(一)

手把手教你做游戏——JAVA GUI 推箱子(二)

手把手教你做游戏——JAVA GUI 推箱子(三)

手把手教你做游戏——JAVA GUI 推箱子(四)

手把手教你做游戏——JAVA GUI 推箱子(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值