急!!!用java做一个带windows的小游戏。。

/*

将下面的代码保存为MainFrame.java?JDK1.6编译通过。

挽回我没做的事,并不难。我忽略了这个方法。你可以试着自己写。

只需将txtGuessRecord.getText()的内容写入一个文件。

*/

进口?Java . awt . dimension;

进口?Java . awt . event . action event;

进口?Java . awt . event . action listener;

进口?Java . text . parse exception;

进口?Java . text . simple date format;

进口?Java . util . date;

进口?Java . util . locale;

进口?Java . util . random;

进口?Java . util . regex . matcher;

进口?java.util.regex .格局;

进口?Java . util . regex . patternsynctaxexception;

进口?javax . swing . box;

进口?javax . swing . box layout;

进口?javax . swing . jbutton;

进口?javax . swing . jcombobox;

进口?javax . swing . jformattedtextfield;

进口?javax . swing . jframe;

进口?javax . swing . jlabel;

进口?javax . swing . jscrollpane;

进口?javax . swing . jtextarea;

进口?javax . swing . swing utilities;

进口?javax . swing . ui manager;

进口?javax . swing . text . default formatter;

公共?班级?大型机?延伸?JFrame?器物?ActionListener?{

/**

*?

*/

私人?静电?决赛?龙?serialVersionUID?=?1L;

/**

*?@param?一个参数名

*/

私人?JLabel?lblResult

私人?JLabel?lblInfo

私人?JFormattedTextField?txtInput

私人?JTextArea?txtGuessRecord

私人?JButton?btnGuess

私人?JButton?btnRestart

私人?JButton?btnClear

私人?JButton?btnSave

私人?JComboBox?cbType

//?正确吗?

私人?布尔?对吗?=?假的;

//?最大次数

私人?静电?决赛?int?MAX_TIME?=?5;

//?当前的猜测次数

私人?静电?决赛?int?NUM?=?0;

私人?静电?决赛?int?信?=?1;

私人?静电?int?当前时间?=?0;

//?当前话题

私人?夏尔?当前_谜题?=?'?';

//?用户回答

私人?夏尔?玩家_回答?=?'?';

公共?大型机()?{

init component();

setPreferredSize(新?维度(450,?220));

pack();

set visible(true);

SetTitle(“猜谜游戏”);

setDefaultCloseOperation(DISPOSE _ ON _ CLOSE);

试试?{

UIManager

。setLookAndFeel(新?com . sun . Java . swing . plaf . windows . windows lookandfeel());

swing utilities . updatecomponentreeui(mainframe . this);

}?接住?(例外?ex)?{

}

}

//?初始化组件

私人?作废?initComponent()?{

lblResult?=?新的?JLabel();

lblInfo?=?新的?JLabel("你准备好了吗?",?JLabel。左);

txtGuessRecord?=?新的?JTextArea(5,30);

btnGuess?=?新的?JButton(" guess ");

btnRestart?=?新的?JButton(" Start ");

btnClear?=?新的?JButton(" clear ");

btnSave?=?新的?JButton(" save ");

String[]?物品?=?新的?String[]?{?“数字”?“信件”?};

cbType?=?新的?JComboBox(项目);

cbType.setMaximumSize(新?维度(70,?20));

字符串?ps?=?"[a-zA-Z \ \ d]";

格局?p?=?pattern . compile(PS);

txtInput?=?新的?JFormattedTextField(新?regex formatter(p));

txtInput.setMaximumSize(新?维度(55,20));

txtInput.setMinimumSize(新?维度(55,20));

btnrestart . addactionlistener(this);

BTN guess . addactionlistener(this);

BTN clear . addactionlistener(this);

btnguess . set enabled(false);

txtguessrecord . set editable(false);

setLayout(新?BoxLayout(getContentPane(),?BoxLayout。PAGE _ AXIS));

盒子?mainBox?=?box . createverticalbox();

添加(main box);

setText('?'));

main box . add(LBL result);

盒子?盒子?=?box . createhorizontalbox();

box . add(LBL info);

main box . add(box);

盒子?b?=?box . createhorizontalbox();

b . add(txt input);

盒子?hBox?=?box . createhorizontalbox();

hbox . add(b);

hbox . add(btnGuess);

hbox . add(box . createhorizontalstrust(3));

hbox . add(BTN restart);

hbox . add(box . createhorizontalstrust(3));

hbox . add(BTN clear);

hbox . add(box . createhorizontalstrust(3));

hbox . add(BTN save);

hbox . add(box . createhorizontalstrust(3));

hbox . add(CB type);

main box . add(hBox);

JScrollPane?卷轴?=?新的?JScrollPane(txtGuessRecord);

mainBox.add(滚动);

}

@覆盖

公共?作废?actionPerformed(ActionEvent?e)?{

如果?(e.getSource()?==?btnRestart)?{

//?再玩一次

restart();

}?不然呢?如果?(e.getSource()?==?btnGuess)

//?猜测

guess();

不然呢?如果?(e.getSource()?==?btnClear)

//?收拾餐桌

clear();

不然呢?如果?(e.getSource()?==?btnSave)

save();

}

//?设置显示答案

私人?作废?setText(char?c)?{

StringBuilder?sb?=?新的?StringBuilder();

sb . append(" & lt;html & gt& lt字体?尺寸?=?72?颜色?=?红色& gt& lt中心>);

某人追加(c);

sb . append(" & lt;/center & gt;& lt/font & gt;& lt/html >);

LBL result . settext(sb . tostring());

}

//?创建随机角色

私人?夏尔?createRandomChar(int?类型)?{

随机?兰德?=?新的?random();

int?低?=?0;

int?范围?=?0;

切换?(类型)?{

案子?数量:

低?=?(int)?'0';

范围?=?(int)?'9'?-?低?+?1;

打破;

案子?信件:

低?=?(int)?a’;

范围?=?(int)?z '吗?-?低?+?1;

打破;

}

int?我?=?rand.nextInt(range)?+?低;

夏尔?c?=?(char)?我;

回归?c;

}

//?输出时间到记录框。

私人?作废?recordTime()?{

约会?约会?=?新的?date();

SimpleDateFormat?格式化器?=?新的?SimpleDateFormat("yyyy-MM-dd?时:分:秒”,

区域设置。美国);

字符串?sd?=?formater.format(日期);

txtguessrecord . append(SD);

}

私人?作废?猜()?{

如果?(txtInput.getValue()?==?空)

返回;

//?用户的回答

玩家_回答?=?character . toupper case(txt input . getvalue()。toString()

。charAt(0));

//?判断答案

如果?(玩家_回答?& lt?当前_谜题)

txtguessrecord . append(" small \ n ");

不然呢?如果?(玩家_回答?& gt?当前_谜题)

txtguessrecord . append(" big \ n ");

不然呢?{

txtguessrecord . append(" correct \ n ");

对吗?=?真实;

}

//?我猜过一次。

++ current _ time;

//?显示游戏信息

showInfo();

如果?(isRight?||?当前时间?& gt=?最大时间)

stop();

}

//?重新开始

私人?作废?重启()?{

//?记录时间

record time();

txtGuessRecord.append("?游戏开始\ n ");

//?状态清除

当前时间?=?0;

btnguess . set enabled(true);

对吗?=?假的;

当前_谜题?=?createRandomChar(CB type . getselectedindex());

setText('?'));

showInfo();

}

//?停止游戏

私人?作废?stop()?{

btnguess . set enabled(false);

setText(当前_谜题);

//?正确的情况

如果?(isRight)?{

字符串?信息?=?String.format("你猜对了\n "经过%d次?current _ time);

txtguessrecord . append(info);

}?其他

//?超过次数的情况

TxtGuessRecord.append("你输了\ n ");

record time();

txtGuessRecord.append("?游戏结束\ n”);

}

//?显示游戏信息

私人?作废?showInfo()?{

字符串?信息?=?String.format("我已经猜了%d次了,?还剩%d次是什么?”,?当前时间,

MAX_TIME?-?current _ time);

LBL info . settext(info);

}

//?清空记录框

私人?作废?clear()?{

txtguessrecord . settext(" ");

}

私人?作废?save()?{

//?尚未实现

}

公共?静电?作废?main(String[]?args)?{

//?托多?自动生成?方法?烟蒂

SwingUtilities.invokeLater(新?Runnable()?{

公共?作废?run()?{

新的?大型机();

}

});

}

//?常规格式类?文本框匹配

班级?RegexFormatter?延伸?DefaultFormatter?{

/**

*?

*/

私人?静电?决赛?龙?serialVersionUID?=?1L;

私人?格局?图案;

私人?火柴人?matcher

公共?RegexFormatter()?{

super();

}

公共?RegexFormatter(字符串?格局)?摔投?PatternSyntaxException?{

this();

set pattern(pattern . compile(pattern));

}

公共?RegexFormatter(模式?格局)?{

this();

setPattern(模式);

}

公共?作废?setPattern(模式?格局)?{

这个图案?=?图案;

}

公共?格局?getPattern()?{

回归?图案;

}

受保护?作废?setMatcher(Matcher?matcher)?{

这个.火柴人?=?matcher

}

受保护?火柴人?getMatcher()?{

回归?matcher

}

公共?对象?stringToValue(字符串?正文)?摔投?ParseException?{

格局?格局?=?get pattern();

如果?(格局?!=?null)?{

火柴人?火柴人?=?pattern.matcher(文本);

如果?(matcher.matches())?{

setMatcher(匹配器);

回归?super.stringToValue(文本);

}

扔?新的?ParseException("模式?有吗?不是吗?匹配“,?0);

}

回归?文本;

}

}

}