懒的看了 这是一个用C++写的你参考一下吧/*
  Name: roundNum.cpp
  Copyright:  LiXiang
  Author:   LiXiang
  Date: 23-09-03 19:27
  Description: round number
*/#include<string>
#include"h\monkey.cpp"
#include"h\d_random.h"using namespace std;class NumError
{
public:
void what(void)const
{
cerr<<"error"<<endl<<endl;
}
};
//--------------------------------------------------------class GetNumList: public MonkeyList<int>
{
public:
   int getNumber(int num);
   void printList(void)const;
};void GetNumList::printList(void)const
{
   Node<int>*p = _front;
   
   for(int i=_size; i!=0; --i)
   {
      cout<<p->_data<<" ";
      p=p->_next;
   }
}int GetNumList::getNumber(int num)
{
   try
   {
      if(_size<1 || num<0)
            throw NumError();
   }
   catch(NumError &err)
   {
      err.what();
      exit(1);
   }
   
   Node<int>* tmp;
   if(num == 0)
   {
      tmp = _back;
   }
   else
   {
      tmp = _front;
   }
   
   for(int i=1; i<(num); ++i)
   {
      tmp = tmp->_next;
   }
   
   Node<int>* tmpNext = tmp->_next;
   tmp->_next = tmpNext->_next;   if(tmpNext == _front)
   {
       _front = _front->_next;
   }
   if(tmpNext == _back)
   {
       _back = tmp;
   }
   
   int returnNumber = tmpNext->_data;
   
   tmp = tmp->_next;
   delete tmpNext;
   --_size;
   
   return returnNumber;
}//----------------------------------------------//class RoundNum
{
public:
   RoundNum(){setThreeNum();} //
   
   void playRoundNum(void);   //
   bool judeg(int x, int y, int z); //
   
   void printDeal(void)const;   //
   void printOK(void)const;   //
   void printInputNum(int i)const;   //
   
   void printThreeNum(void)const;   //
   
private:
   void setThreeNum(void);   //
   
   int _x;
   int _y;
   int _z;
};void RoundNum::playRoundNum(void)
{
   int x;
   int y;
   int z;
   
   for(int i=1; i<11; ++i)
   {
      printInputNum(i);
      cin>>x>>y>>z;
      if(judeg(x, y, z))
      {
            printOK();
            return;
      }
   }
   printDeal();
   return;
}bool RoundNum::judeg(int x, int y, int z)
{
   int a = 0;
   int b = 0;
   
   if(x == _x)
      ++a;
   else if(x==_y || x==_z)
      ++b;
      
   if(y == _y)
      ++a;
   else if(y==_x || y==_z)
      ++b;
   
   if(z == _z)
      ++a;
   else if(z==_x || z==_y)
      ++b;
   
   if(a == 3)
      return true;
   
   cout<<a<<"A, "<<b<<"B"<<endl<<endl;
   return false;
}void RoundNum::setThreeNum(void)
{
   GetNumList getNum;
   for(int i=0; i<10; ++i)
   {
      getNum.push(i);
   }
   
   randomNumber rNum;
   
   _x = getNum.getNumber(int(rNum.frandom() * 10));
   _y = getNum.getNumber(int(rNum.frandom() * 10));
   _z = getNum.getNumber(int(rNum.frandom() * 10));
}
void RoundNum::printThreeNum(void)const
{
   cout<<_x<<" "<<_y<<" "<<_z<<endl;
}void RoundNum::printOK(void)const
{
   cout<<"-----------------"<<endl;
   cout<<"Done"<<endl;
}void RoundNum::printDeal(void)const
{
   cout<<"----------------"<<endl<<"sorry"<<endl;
   cout<<"Game over"<<endl;
}void RoundNum::printInputNum(int i)const
{
   cout<<"&Ccedil;&euml;&Auml;ú&Ecirc;&auml;&Egrave;&euml;&Egrave;&yacute;&cedil;&ouml;&Ecirc;&yacute; ("<<i<<") :";
} //===============================================//int main(int argc, char* argv[])
{
   RoundNum r;
   
   if(argc == 2)
{
string tmp = argv[1];
if(tmp == "-xx")
{
  r.printThreeNum();
  cout<<"--------------"<<endl<<endl;
      }
}
   r.playRoundNum();
}

解决方案 »

  1.   

    我以前用VB编过
    用java编思路是一样的,不过说实话我还不大熟悉java,所以对我来说难度很大,哈哈
      

  2.   

    我认为这个猜数字的游戏没什么难度的,要说到算法:
    for(int k=0;k<4;k++){
            if(j==k&&GuessNum[j]==CreateNum[k])
               ++JustNumOne;
            if(j!=k&&GuessNum[j]==CreateNum[k])
               ++JustNumTwo;
                            }
    就这么一句是属于算法的,其他的属于基础的,上面的代码是用来循环判断输入的数字是否符合条件的,各位看看吧!
      

  3.   

    只是我想另外显示这样的结果:
        第1次是1234 0A1B
        第2次是2345 1A0B
        ...............
    可是结果你们看看就知道了,在响应action()后会repaint(),使得结果显示为:
        第1次是2345 1A0B
        第2次是2345 1A0B
        ...............会刷新第一次的结果,怎么办呢?
      

  4.   

    真高兴,我自己解决了!import java.awt.*;
    import java.applet.*;
    import java.util.*;
    public class GuessNum extends Applet {
               int[] CreateNum;
               int[][] GuessNum;
               int[]   JustNumOne,JustNumTwo;
               TextField[] textField;
               Random r;
               int count;
               String[] EndStr;
    public void init() {
               int i=1;
               count=0;
               GuessNum=new int[4][8];
               CreateNum=new int[4];
               textField=new TextField[4];
               r=new Random();
               JustNumOne=new int[8];
               JustNumTwo=new int[8];
               EndStr=new String[8];
       for(int j=0;j<8;j++)
               EndStr[j]=" ";
       for(int j=0;j<4;j++){
               textField[j]=new TextField(5);
               add(textField[j]);
               textField[j].setText("0");
                           }
               CreateNum[0]=(int)(r.nextDouble()*9+1);
       outer:
        while(i<4){
         CreateNum[i]=(int)(r.nextFloat()*9+1);
          for(int j=0;j<i;j++){
             if(CreateNum[i]==CreateNum[j])
                continue outer;
                              }
           i++;
                   }                     
                     
                     }       
    public void paint(Graphics g){
       for(int i=0;i<4;i++){
               String s=textField[i].getText();
               GuessNum[i][count]=Integer.parseInt(s);
                   EndStr[count]+=s;            
       for(int j=0;j<4;j++){
            if(i==j&&GuessNum[i][count]==CreateNum[j])
               ++JustNumOne[count];
            if(i!=j&&GuessNum[i][count]==CreateNum[j])
               ++JustNumTwo[count];
                            }
                            }
               g.drawString("please input your guess number,the end is",50,60);
           
          
                  
      for(int i=1;i<=count;i++){
        
       g.drawString("第"+i+"次是"+EndStr[i]+" "+JustNumOne[i]+"A"+JustNumTwo[i]+"B",72,60+15*i);  
       
        if(JustNumOne[i]==4)
             g.drawString("you win",200,60+15*i);
        
        }
        for(int j=0;j<4;j++)
        g.drawString(CreateNum[j]+"",290+j*10,60);
          
           }
                               
    public boolean action(Event event,Object arg){
               count++;
               repaint();
               return true;
                                               }                           
                                          }
      

  5.   

    同意 overawe(理想) ,要不要用JAVA 在写一个,思路和overawe(理想) 一样.