您的位置:首页 > 理论基础

用户与计算机的几个简单交互游戏(猜数字、猜单词、剪刀石头布)

2014-03-21 12:47 387 查看
1)计算机产生一1~100的随机数,用户猜测,会有提示是较大还是较小。用户可以多玩几次(需要输入玩的次数),退出时打印他猜测的总次数及猜中一个数字的平均次数。

package userGuessInteger2;

import java.util.Random;
import java.util.Scanner;

public class userGuessInteger2 {

public static void main(String[] args) {
Random r = new Random();

Scanner console = new Scanner(System.in);
System.out.print("input the times you want to guess:");
int times = console.nextInt();
int count = 0;

int[] numguess = new int[times];
while(count!=times)
{

int number= r.nextInt(100)+1;
System.out.print("input an integer between 1~100: ");
int guess = console.nextInt();
numguess[count] = 1;//用户猜的次数
while(guess != number)
{
if(guess > number)
System.out.println("incorrect, bigger than the given number,guess again: ");
else
System.out.println("incorrect,smaller than the given number,guess again: ");

numguess[count ]++;
guess = console.nextInt();
}
System.out.println("guess it!. " + numguess[count ]+ " tries.");
count++;
}
int sum =0,average=0;
for(int i=0;i<count;i++)
sum += numguess[i];
average = sum /count;
System.out.println("the times you guess is: " + sum +
",and the average times you guess right is: " + average);

}

}


运行结果类似:

input the times you want to guess:2
input an integer between 1~100: 50
incorrect,smaller than the given number,guess again:
75
incorrect, bigger than the given number,guess again:
60
incorrect, bigger than the given number,guess again:
55
incorrect,smaller than the given number,guess again:
57
guess it!. 5 tries.
input an integer between 1~100: 50
incorrect,smaller than the given number,guess again:
75
incorrect,smaller than the given number,guess again:
85
incorrect,smaller than the given number,guess again:
90
incorrect,smaller than the given number,guess again:
95
incorrect,smaller than the given number,guess again:
99
incorrect, bigger than the given number,guess again:
96
guess it!. 7 tries.
the times you guess is: 12,and the average times you guess right is: 6

2)用户从1~10中挑选数字,计算机去猜测,用户会提示计算机是较大还是较小。程序最终打印出猜中的数字和猜测的次数。

package computerGuessInteger;

import java.util.Random;
import java.util.Scanner;

public class ComputerGuessInteger {

public static void main(String[] args) {
giveIntro();

Scanner console = new Scanner(System.in);
System.out.print("input an integer between 1 and 10: ");
int number= console.nextInt();

int numguess = 1;//记录猜测的次数
int guesslast1 = 1;
int guesslast2 =10;

int guess = getguess(guesslast1,guesslast2);
while(guess!= number)
{
System.out.println("Is it " + guess +"? (y/n) n");
numguess++;
if(guess > number)
{
System.out.println("bigger then given number.");
guesslast2 = guess-1;
guess = getguess(guesslast1,guesslast2);
}
else
{
System.out.println("smaller then given number.");
guesslast1 = guess + 1;
guess = getguess(guesslast1,guesslast2);
}
}

System.out.println("Is it " + guess +"? (y/n) y" );
System.out.println();
System.out.println("I got your number of " + number + " correct in " + numguess + " guesses");

}

public static void     giveIntro()
{

System.out.println("this program has you ,the user,choose a number");
System.out.println("between 1 and 10,then I,the computer,will try");
System.out.println("my best to guess it.");
System.out.println();
}
public static int getguess(int guesslast1,int guesslast2)
{
Random r= new Random();
return r.nextInt(Math.abs(guesslast1-guesslast2)+1)+ Math.min(guesslast1,guesslast2);
}
}


运行结果类似:

this program has you ,the user,choose a number
between 1 and 10,then I,the computer,will try
my best to guess it.

input an integer between 1 and 10: 4
Is it 10? (y/n) n
bigger then given number.
Is it 7? (y/n) n
bigger then given number.
Is it 4? (y/n) y

I got your number of 4 correct in 3 guesses

3)猜单词的游戏。用户想好一个单词,然后计算机去猜,用户会告诉计算机单词中包含几个字母。

package computerGuessWord2;

import java.util.Random;
import java.util.Scanner;

public class ComputerGuessWord {

public static final String S ="abcdefghijklmnopqrstuvwxyz";
public static void main(String[] args) {

Scanner console = new Scanner(System.in);
System.out.print("input the length of the word: ");
int length= console.nextInt();
System.out.print("input the word: ");
String word= console.next();

String guess = "";//与给定字符串相同的部分
String guess0 = getGuessWord(length,guess);//计算机猜测剩余的部分。

//比较计算机猜的单词和用户输入的是否相等。

int numguess = 1;//计算机猜的次数
while(!guess0.equals(word))
{
System.out.println("incorrect,guess again: ");
if(guess0.charAt(0)==word.charAt(0))
{
guess += guess0.charAt(0);
word=word.substring(1,length);
length -= 1;
}
guess0 = getGuessWord(length,guess);
numguess++;
}
System.out.println("guess it!. " + numguess+ " tries.");

}

//计算机输出给定长度的随机字符串。
public static String getGuessWord(int length,String guess)
{
System.out.print("you guess: ");

String guessword = "" ;
Random r =new Random();
for(int i = 0;i <length;i++)
{
int index = r.nextInt(26);
guessword += S.charAt(index);//字符串中也能连接字符 啊。
}
System.out.println(guess + guessword);
return guessword;
}
}


运行结果类似:

input the length of the word: 2
input the word: ac
you guess: ie
incorrect,guess again:
you guess: fm
incorrect,guess again:
you guess: ss
incorrect,guess again:
you guess: er
incorrect,guess again:
you guess: az
incorrect,guess again:
you guess: aw
incorrect,guess again:
you guess: at
incorrect,guess again:
you guess: ay
incorrect,guess again:
you guess: aw
incorrect,guess again:
you guess: aj
incorrect,guess again:
you guess: ah
incorrect,guess again:
you guess: as
incorrect,guess again:
you guess: ap
incorrect,guess again:
you guess: ar
incorrect,guess again:
you guess: aq
incorrect,guess again:
you guess: ab
incorrect,guess again:
you guess: am
incorrect,guess again:
you guess: al
incorrect,guess again:
you guess: ah
incorrect,guess again:
you guess: ac
guess it!. 20 tries.

4)多轮的石头剪刀布猜拳游戏。用户个计算机各取一个物品,规则跟平时一样。最后打印游戏结果。

package gamesStoneScissorsCloth;

import java.util.Random;
import java.util.Scanner;

public class gamesStoneScissorsCloth {

public static final String[] ITEMS = {"scissors","stone","cloth"};
public static void main(String[] args) {

Scanner console = new Scanner(System.in);
System.out.print("input the times you want to play: ");
int times= console.nextInt();
gamesStoneScissorsCloth(console,times);
}

public static void     gamesStoneScissorsCloth(Scanner console,int times)
{
Random r= new Random();
int computer=0;
int user= 0;
int countuser=0,countcomputer = 0,countdraw=0;
while(times!=0)
{
//得到用户和计算机所猜测的物品号,并打印出来
computer = r.nextInt(3);
System.out.print("input the label of the items you want to get,for " +
"scissors as 0,stone as 1,cloth as 2: ");
user= console.nextInt();
System.out.print("user: " + ITEMS[user] + ". computer: " + ITEMS[computer]);
//判断谁输谁赢,并打印。
if(computer == user)
{
countdraw++;
System.out.println(" draw");
}
else if((computer == 0&&user==2)||(computer==1&&user==0)||(computer==2&&user==1))
{
countcomputer++;
System.out.println(" computer win");
}
else
{
countuser++;
System.out.println(" user win");
}
times--;
}

judgeResult(countuser,countcomputer,countdraw);
}

//打印总结果。
public static void judgeResult(int countuser,int countcomputer,int countdraw)
{
System.out.println();
System.out.println("the result is:");
System.out.println("user win " + countuser + " times");
System.out.println("computer win " + countcomputer + " times");
System.out.println("draw " + countdraw + " times");
if(countuser > countcomputer)
System.out.println("user win!");
else if(countuser < countcomputer)
System.out.println("computer win!");
else
System.out.println("draw!");
}
}


运行结果类似:

input the times you want to play: 3
input the label of the items you want to get,for scissors as 0,stone as 1,cloth as 2: 0
user: scissors. computer: cloth user win
input the label of the items you want to get,for scissors as 0,stone as 1,cloth as 2: 1
user: stone. computer: scissors user win
input the label of the items you want to get,for scissors as 0,stone as 1,cloth as 2: 2
user: cloth. computer: stone user win

the result is:
user win 3 times
computer win 0 times
draw 0 times
user win!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: