zoukankan      html  css  js  c++  java
  • 用户与计算机的几个简单交互游戏(猜数字、猜单词、剪刀石头布)

    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!


  • 相关阅读:
    AD9 如何画4层pcb板
    在Altium Designer 2009下如何添加Logo图
    [置顶] 整数拆分 整合算法
    altium designer 中的top/bottom solder和top/bottom paste mask
    vs2012 与 win7 不兼容的问题
    poj1742 Coins
    poj3181 Dollar Dayz
    poj1065 Wooden Sticks
    poj1631 Bridging signals
    poj3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/diligentcalf/p/3615600.html
Copyright © 2011-2022 走看看