我是靠谱客的博主 碧蓝镜子,最近开发中收集的这篇文章主要介绍java gui 猜数字游戏_尝试为猜数字游戏写的GUI程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

之前写过一个控制台的程序,正在初学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程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部