2008年的时候,在学习Java how to program第五版的时候,写过一个猜数字小游戏,是用Applet写的;
现在,我要用Swing重写这个小游戏,同时,加入一些新功能,如:背景颜色(红色表示偏高,蓝色表示偏低)、弹框、字体控制、布局管理器的使用。
运行截屏:
代码如下:
//Guess a number between 1 and 1000
//Java how to program, 10/e, Exercise 12.14
//by pandenghuang@163.com
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import static java.awt.BorderLayout.*;
public class NumberGuessGame2016 extends Jframe {
int number,random,counter=0;
JLabel welcomeJLabel;
JLabel hintJLabel;
JTextField guessField;
JPanel panel;//显示不同背景色
public NumberGuessGame2016() {
super("猜数字小游戏游戏");
setLayout(new BorderLayout());
panel=new JPanel();
panel.setBackground(Color.WHITE);
welcomeJLabel= new JLabel("游戏规则:已随机生成一个1到1000的整数,您能在10次以内猜出来吗?");
welcomeJLabel.setFont(new Font("Simsun",1,10));
add(welcomeJLabel,NORTH);
guessField=new JTextField(20);
guessField.setFont(new Font("Arial",1,10));
panel.add(guessField);
add(panel); //默认添加到中间
hintJLabel= new JLabel("");
add(hintJLabel,SOUTH);
hintJLabel.setFont(new Font("Simsun",1,10));
TextFieldHandler handler=new TextFieldHandler();
guessField.addActionListener(handler);
random=(int)(1+1000*Math.random());
}
private class TextFieldHandler implements ActionListener
{
// process textfield events
@Override
public void actionPerformed (ActionEvent event)
{
while(true){
number=Integer.parseInt(guessField.getText());
while(number!=random)
{
number=Integer.parseInt(guessField.getText());
if(number>random)
{
hintJLabel.setText("猜高了,不要放弃哦↖(^ω^)↗。已试错"+(++counter)+"次");
guessField.setText("");
panel.setBackground(Color.RED);
}
else
{
hintJLabel.setText("猜低了,请继续!已试错"+(++counter)+"次");
panel.setBackground(Color.BLUE);
guessField.setText("");
}
}
//猜中后的用户提示
if (counter<10)
JOptionPane.showMessageDialog(null, "恭喜你,猜中了,难道你知道答案?O(∩_∩)O~");
else if (counter==10)
JOptionPane.showMessageDialog(null, "辛苦了,终于猜中了!");
else
JOptionPane.showMessageDialog(null, "您终于猜中了╮(╯▽╰)╭,您其实可以做得更好的!");
//开始下一轮猜数字游戏前的初始化工作
guessField.setText("");
random=(int)(1+1000*Math.random());
counter=0;
}
}
}
public static void main(String[] args)
{
NumberGuessGame2016 f = new NumberGuessGame2016(); // create Listframe
f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
f.setSize(400,300);
f.setVisible(true);
}
}
更多有趣的经典小游戏实现专题,也分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
Javascript经典游戏 玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



