终于接触java了,java跟C果然很不一样,设计思路可以说是完全不同。
现在体会到面对对象编程的厉害了,我发现我已经爱上这种编程语言。
前两天没事写了个java的猜数字游戏,其实这个我很早就想过写这个了,不过一直没有付诸实践。
正好最近刚学java就写个这个游戏来练练手。
记得在初中的时候在同学手上的玩的文曲星学习机里就是这个游戏。
随机生成4个数(0~9之间的,而且不重复),然后由玩家来猜。一共有6次机会
每猜一次,电脑给玩家一定提示
如果猜的数字里有几个是要猜的数字但是位置不对,就显示几个A
如果猜的数字里有几个是要猜的数字而且对应的位置也一样,就显示几个B
例如:要猜的数字 0713
如果玩家输入2045
就显示1A0B,数字里有0但是位置不对
玩家再次输入0231
就显示2A1B
这毕竟是我写的第一个比较有意思的java程序,我觉得还是有收藏价值的
GuessDigit类(生成四个不重复的随机数)
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<SIZE){
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; //数字相同位置不同的个数
GuessDigit g=new GuessDigit();
int size=g.getSize();
public void getResult(String guessDigit,String digitIn){
A=0;
B=0;
for(int i=0;i<size;i++){
if(digitIn.charAt(i)==guessDigit.charAt(i)){
B++;
}
}
for(int j=0;j<size;j++){
for(int k=0;k<size;k++){
if((digitIn.charAt(j)==guessDigit.charAt(k))){//防止重复对A++
A++;
break;
}
}
}
A-=B;
System.out.println(A+"A"+B+"B");
}
public int getB(){
return B;
}
}
GuessDigitTester类(玩家测试的类)
package 猜数字;
import java.util.*;
public class GuessDigitTester {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("你有6次机会!每次输入四个(0-9)数字");
System.out.println("A表示含有该数字但位置不对,B表示数字位置也对了");
System.out.println("祝你好运!");
int count=6;
int i=0;
String digitIn;
String guessDigit;
Scanner sc=new Scanner(System.in);
GuessResult g=new GuessResult();
GuessDigit h=new GuessDigit();
guessDigit=h.getDigit();
for(i=0;i<count;i++){
digitIn=sc.next();
if(digitIn.length()!=h.getSize()){
System.out.println("请输入四个数字:");
continue;
}
g.getResult(guessDigit,digitIn);
if(g.getB()==h.getSize()){
System.out.println("你猜中它了!");
}
else{
int j=count-i-1;
System.out.println("你还有"+j+"次机会");
}
}
if(i>=count){
System.out.println("很遗憾,这数字是"+guessDigit);//不能用h.getDigit(),那样会重新初始化要猜的数字
}
}
}