懒的看了 这是一个用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<<"ÇëÄúÊäÈëÈý¸öÊý ("<<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();
}
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<<"ÇëÄúÊäÈëÈý¸öÊý ("<<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();
}
用java编思路是一样的,不过说实话我还不大熟悉java,所以对我来说难度很大,哈哈
for(int k=0;k<4;k++){
if(j==k&&GuessNum[j]==CreateNum[k])
++JustNumOne;
if(j!=k&&GuessNum[j]==CreateNum[k])
++JustNumTwo;
}
就这么一句是属于算法的,其他的属于基础的,上面的代码是用来循环判断输入的数字是否符合条件的,各位看看吧!
第1次是1234 0A1B
第2次是2345 1A0B
...............
可是结果你们看看就知道了,在响应action()后会repaint(),使得结果显示为:
第1次是2345 1A0B
第2次是2345 1A0B
...............会刷新第一次的结果,怎么办呢?
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;
}
}