大家好,又见面了,我是你们的朋友全栈君。
1.代码截图:
2.设计思路
建立GUI界面,系统产生一个随机数(对用户不可见),然后用户输入猜测数,系统根据用户每次输入的数据给出评语(偏大,偏小,猜测成功)。当用户最终猜测成功后,就把当次的随机数和猜测次数放到文件夹内。
3.遇到的问题:
(1).Guess里面每次产生的随机数m和最终猜测次数n一直不知道怎么传到sava里并保存输出到文件。
(2).怎么在生成的guessgame文件里追加内容,而不是每次运行程序后guessgame里的内容就被清空。
第(2)题解决:
4.代码
(1)猜数
package work1;
import javax.swing.*;
import java.awt.event.;
import java.util.;
public class Guess extends JFrame implements ActionListener { //Guess继承JFrame类,继承 ActionListener接口;
private JLabel userlabel; //私有属性;
private JTextField usertext;
private Random random = new Random(); //调用Ramdom()方法,获取随机数;
public int m=(int)(Math.random()*100)+1;
public int n = 1;
public Guess() { //猜数游戏函数;
setTitle(“GuessGame”); //设置文本框标题;
setLocation(300,400);//设置整个文本框位置
setSize(400, 200); //设置文本框的大小;
System.out.println(“程序随机分配的值为:”+m);
getContentPane().setLayout(null); //设置布局管理器
userlabel = new JLabel(“请输入一个猜想数(1-100)?;
userlabel.setBounds(20, 20, 180, 40);//设置组件(请输入一个猜想数(1-100))并调整其大小。由 x(左边坐标) 和 y(上边坐标) 指定左上角的新位置,由 width(宽度) 和 height(高度)指定新的大小。
usertext = new JTextField(10);
usertext.setBounds(100, 60, 150, 40); //设置组件(输入方框)并调整其大小。由 x(左边坐标) 和 y(上边坐标) 指定左上角的新位置,由 width(宽度) 和 height(高度)指定新的大小。
getContentPane().add(userlabel); // contentPane 对象,往容器添加上述两个组件;
getContentPane().add(usertext);
usertext.addActionListener(this); // 添加指定的操作侦听器以从此文本字段接收操作事件;
setVisible(true); //图形界面设置为可见
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
save.saveMandN(m, n);//将随机数和猜测次数保存
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) { //游戏内容;
int text = Integer.parseInt(usertext.getText());
if (n != 10) { //10次及以下;
if (text == m) {//当用户猜对时,根据所用次数不同,显示不同内容;
if(n == 1){
JOptionPane.showMessageDialog(null,n+”次就猜对了,你太有才了! 优秀”);
save.saveMandN(m, n);
System.exit(0);
}
else if((n >=2) && (n<=6)){
JOptionPane.showMessageDialog(null,”猜了” + n +”次猜出来了,还不错哦! 良好”);
save.saveMandN(m, n);
System.exit(0);
}
else if(n >6){
JOptionPane.showMessageDialog(null,”猜了” + n +”次才猜出来,尚需努力啊!合格”);
save.saveMandN(m, n);
System.exit(0);
}
}
else if(text<1 || text>100)
JOptionPane.showMessageDialog(null, “输入数字非法哦!请重新输入一个1~100之间的数。”);
else if (text < m) //对用户输入数据的提醒;
JOptionPane.showMessageDialog(null, “很遗憾!偏小了,请重新再猜。”);
else if (text > m)
JOptionPane.showMessageDialog(null, “很遗憾!偏大了,请重新再猜。”);
n++;
} else{
JOptionPane.showMessageDialog(null, “10次都猜不出来…,猜测次数已用尽”); //超过十次,自动结束游戏;
save.saveMandN(m, n);
System.exit(0);
}
}
public static void main(String[] args) {
Guess mathgame = new Guess();
mathgame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //退出整个程序
}
}
(2)保存数据
package work1;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class save {
public static void saveMandN(int m,int n)
{
try {
FileWriter fw = new FileWriter(“d:/guessgame.txt”, true); //定义FileWriter变量
fw.write(“随机数: “+m+”\n”+”猜测所用次数 : “+n+”\n”);//写入数据
fw.close();//关闭文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5.感受:
GUI界面之前只了解一点点,这次是想到一点就百度或请教别人该怎么实现,所以这次做的很艰难。多数并未了解原理,只是拿来能用就行。
另外我学会了怎么从Eclipse导出可执行jar包。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158027.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...