概述
之前写过一个控制台的程序,正在初学GUI程序,就为这个游戏写了个很丑陋的GUI,欢迎大家拍砖
由于之前写过其控制台的程序,所以基本算法做了一点修改
玩法就是玩家输入4个不同的十进制数字,
与要猜的数字进行对比,如果含有该数字但位置不对,就显示为_A,如果不但数字对,位置也对就显示_B(_表示有几个这样的情况)
GuessDigit类,生成4个不同的十进制数字
package 猜数字;
import java.util.*;
public class GuessDigit {
private String digit="";
private static final int SIZE=4;
public String getDigit(){
Random r=new Random();
int n=0;
while(n
String temp="";
int i=r.nextInt(10);
temp+=(char)('0'+i);
if(!digit.contains(temp)){
digit+=(char)('0'+i);
n++;
}
}
return digit;
}
public int getSize(){
return SIZE;
}
}
GuessResult类,显示猜测结果
package 猜数字;
public class GuessResult {
private int A=0; //位置不同数字相同的个数
private int B=0; //数字相同位置不同的个数
private String result="";
GuessDigit g=new GuessDigit();
int size=g.getSize();
public String getResult(String guessDigit,String digitIn){
int flag=-1; //存储相匹配的数字所在的位置
A=0;
B=0;
for(int i=0;i
if(digitIn.charAt(i)==guessDigit.charAt(i)){
B++;
}
}
for(int j=0;j
for(int k=0;k
if((digitIn.charAt(j)==guessDigit.charAt(k))&&flag!=k){//防止重复对A++
A++;
flag=k;
break;
}
}
}
A-=B;
result=A+"A"+B+"B";
return result;
}
public int getB(){
return B;
}
}
GuessDigitGUI类,初次尝试,不是很好看,欢迎读者给出建议
package 猜数字;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GuessDigitGUI extends JFrame implements ActionListener{
//猜数字的GUI程序
//第一次猜测
private JTextField guessFirstTime=new JTextField(4);//填写数字的区域
private JButton firstButton=new JButton("First Guess");
private JLabel firstResult=new JLabel("Result"); //显示猜数字结果
//第二次猜测
private JTextField guessSecondTime=new JTextField(4);//填写数字的区域
private JButton secondButton=new JButton("Second Guess");
private JLabel secondResult=new JLabel("Result"); //显示猜数字结果
//第三次猜测
private JTextField guessThirdTime=new JTextField(4);//填写数字的区域
private JButton thirdButton=new JButton("Third Guess");
private JLabel thirdResult=new JLabel("Result"); //显示猜数字结果
//第四次猜测
private JTextField guessForthTime=new JTextField(4);//填写数字的区域
private JButton forthButton=new JButton("Forth Guess");
private JLabel forthResult=new JLabel("Result"); //显示猜数字结果
//第五次猜测
private JTextField guessFifthTime=new JTextField(4);//填写数字的区域
private JButton fifthButton=new JButton("Fifth Guess");
private JLabel fifthResult=new JLabel("Result"); //显示猜数字结果
//第六次猜测
private JTextField guessSixthTime=new JTextField(4);//填写数字的区域
private JButton sixthButton=new JButton("Sixth Guess");
private JLabel sixthResult=new JLabel("Result"); //显示猜数字结果
public GuessDigitGUI(){
JOptionPane.showMessageDialog(null, "你有6次机会,每次输入4个不同数字"
+"显示结果为_A_Bn"+"A表示有要猜的数字有该数字但位置不对,B表示不仅数字对位置也对n"
+"祝你好运!");
add(guessFirstTime);
add(firstButton);
add(firstResult);
add(guessSecondTime);
add(secondButton);
add(secondResult);
add(guessThirdTime);
add(thirdButton);
add(thirdResult);
add(guessForthTime);
add(forthButton);
add(forthResult);
add(guessFifthTime);
add(fifthButton);
add(fifthResult);
add(guessSixthTime);
add(sixthButton);
add(sixthResult);
firstButton.addActionListener(this);
secondButton.addActionListener(this);
thirdButton.addActionListener(this);
forthButton.addActionListener(this);
fifthButton.addActionListener(this);
sixthButton.addActionListener(this);
setTitle("猜数字");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,200);
setLocation(300,200);
setVisible(true);
}
GuessDigit d=new GuessDigit();
GuessResult r=new GuessResult();
String guessDigit=d.getDigit();
int count=0;
boolean flag=true; //输入字符串全是数字则为true
//鼠标点击事件
public void actionPerformed(ActionEvent e){
if(count!=6){ //如果猜数字次数没到6次
if(e.getSource()==firstButton){
String digitIn=new String(guessFirstTime.getText());
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
firstResult.setText("4 digit");
count++;
}
//输入结果正常
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
firstResult.setText(result);
count++;
}
}
}
if(e.getSource()==secondButton){
String digitIn=new String(guessSecondTime.getText());
boolean flag=true; //输入字符串全是数字则为true
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
secondResult.setText("4 digit");
count++;
}
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
secondResult.setText(result);
count++;
}
}
}
if(e.getSource()==thirdButton){
String digitIn=new String(guessThirdTime.getText());
boolean flag=true; //输入字符串全是数字则为true
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
thirdResult.setText("4 digit");
count++;
}
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
thirdResult.setText(result);
count++;
}
}
}
if(e.getSource()==forthButton){
String digitIn=new String(guessForthTime.getText());
boolean flag=true; //输入字符串全是数字则为true
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
forthResult.setText("4 digit");
count++;
}
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
forthResult.setText(result);
count++;
}
}
}
if(e.getSource()==fifthButton){
String digitIn=new String(guessFifthTime.getText());
boolean flag=true; //输入字符串全是数字则为true
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
fifthResult.setText("4 digit");
count++;
}
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
fifthResult.setText(result);
count++;
}
}
}
if(e.getSource()==sixthButton){
String digitIn=new String(guessSixthTime.getText());
boolean flag=true; //输入字符串全是数字则为true
//检查是否是数字
for(int j=0;j
if(digitIn.charAt(j)'9'){
flag=false;
}
}
//数字数目不对,或者形式不对
if(digitIn.length()!=d.getSize()||!flag){
sixthResult.setText("4 digit");
count++;
}
else{
String result=r.getResult(guessDigit,digitIn);
if(r.getB()==d.getSize()){ //如果6次机会内猜中
JOptionPane.showMessageDialog(null, "你猜中它了,数字是"+guessDigit);
}
else{
sixthResult.setText(result);
count++;
}
}
}
}
else{
JOptionPane.showMessageDialog(null, "很遗憾,数字是 "+guessDigit);
}
}
public static void main(String []args){
new GuessDigitGUI();
}
}
最后
以上就是碧蓝镜子为你收集整理的java gui 猜数字游戏_尝试为猜数字游戏写的GUI程序的全部内容,希望文章能够帮你解决java gui 猜数字游戏_尝试为猜数字游戏写的GUI程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复