java实现猜数字⼩游戏(Swing版)
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
/* (Guess-the-Number Game) Write an application that plays “guess the number” as follows:
Your application chooses the number to be guessed by selecting an integer at random in the range
1–1000. The application then displays the following in a label:
I have a number between 1 and 1000. Can you guess my number?
Please enter your first guess.
A JTextField should be used to input the guess. As each guess is input, the background color
should change to either red or blue. Red indicates that the user is getting “warmer,” and blue,
“colder.” A JLabel should display either "Too High" or "Too Low" to help the user zero in. When
the user gets the correct answer, "Correct!" should be displayed, and the JTextField used for
input should be changed to be uneditable. A JButton should be provided to allow the user to play
the game again. When the JButton is clicked, a new random number should be generated and the
input JTextField changed to be editable.
*/
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.Text());
while(number!=random)
{
number=Integer.Text());
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)
javaswing实现购买{
NumberGuessGame2016 f = new NumberGuessGame2016(); // create ListFrame
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,300);
f.setVisible(true);
}
}
更多有趣的经典⼩游戏实现专题,也分享给⼤家:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论