黑马程序员技术交流社区

标题: Java小游戏:谁先数到30谁就输啦 [打印本页]

作者: wusiyi    时间: 2016-2-26 19:08
标题: Java小游戏:谁先数到30谁就输啦
该Java程序实现的功能为:玩家和电脑猜数字,喊到最后一个数字者就算输了。本程序中,先后手(也就是先喊或者后喊)、喊的数字个数以及每次可以最多可以喊的数字个数也是可以进行设置的。在一轮游戏结束的时候玩家可以选择结束游戏或者继续进行游戏。

  1. import java.util.Scanner;
  2. class WhatTheFuck {
  3.     static Scanner sc = new Scanner(System. in ); //创建一个Scanner类
  4.     static int player; //定义一个变量,0代表电脑,1代表玩家
  5.     static int num; //定义一个变量,指定最大数字个数
  6.     static int maxInput; //定义一个变量,指定最大能输入的数字
  7.     static int whereNum = 0; //计数器,用于记录哪些数字被叫过,默认值为0
  8.     static int selectNum = 0; //选择个数
  9.     static int gameOver = 0; //游戏是否结束,1为游戏结束
  10.     public static void main(String[] args) {
  11.         System.out.println("|^^^^^^^^^^^^^^^^^^^^^^|");
  12.         System.out.println("|*-----欢迎来找虐-----*|");
  13.         System.out.println("|*--------v1.0--------*|");
  14.         System.out.println("|======================|");
  15.         while (true) {
  16.             while (true) {
  17.                 player = askInput("\r\n你是否选择先手?[0:否/1:是]\r\n"); //是否选择先手?0 电脑先手;1 玩家先手
  18.                 if (player == 0 || player == 1) {
  19.                     break;
  20.                 } else {
  21.                     System.out.println("\r\n[你输入的数字不正确!]\r\n");
  22.                 }
  23.             }
  24.             while (true) {
  25.                 int modem = askInput("\r\n你是否要自定义设置?[0:否/1:是]\r\n"); //选择自定义或默认设置
  26.                 if (modem == 0) {
  27.                     num = 30;
  28.                     maxInput = 3;
  29.                     break;
  30.                 } else if (modem == 1) {
  31.                     while (true) {
  32.                         num = askInput("\r\n请输入供选数字的个数:\r\n");
  33.                         if (num <= 0) {
  34.                             System.out.println("\r\n[你输入的数字不正确!]\r\n");
  35.                         } else {
  36.                             break;
  37.                         }
  38.                     }
  39.                     while (true) {
  40.                         maxInput = askInput("\r\n请输入每次最大可选择的数量:\r\n");
  41.                         if (maxInput > num) {
  42.                             System.out.println("\r\n[每次最大可输入的数字不能大于供选数字的个数!]\r\n");
  43.                         } else if (maxInput <= 0) {
  44.                             System.out.println("\r\n[每次至少要选一个数!]\r\n");
  45.                         } else {
  46.                             break;
  47.                         }
  48.                     }
  49.                     break;
  50.                 } else {
  51.                     System.out.println("\r\n[你输入的数字不正确!]\r\n");
  52.                 }
  53.             }
  54.             showNum();
  55.             while (gameOver != 1) {
  56.                 playGame();
  57.             }
  58.             int jixu = askInput("\r\n是否继续游戏?[0:否/1:是]\r\n");
  59.             if (jixu != 1) {
  60.                 break;
  61.             }
  62.         }
  63.     }
  64.     public static int askInput() {
  65.         System.out.println("玩家:选的个数为:");
  66.         return sc.nextInt();
  67.     }
  68.     public static int askInput(String str) {
  69.         System.out.println(str);
  70.         return sc.nextInt();
  71.     }
  72.     public static void machineInput() {
  73.         selectNum = (num - 1 - whereNum) % (maxInput + 1);
  74.         if (selectNum == 0) {
  75.             selectNum = (int)(Math.random() * 1000) % maxInput + 1;
  76.         } else {
  77.         }
  78.     }
  79.     public static void showNum() {
  80.         System.out.println("\r\n|----------目前还剩----------|");
  81.         for (int i = whereNum + 1; i <= num; i++) {
  82.             System.out.print(i + " ");
  83.         }
  84.         System.out.println("\r\n");
  85.     }
  86.     public static void playGame() {
  87.         if (player == 0) {
  88.             System.out.println("电脑:选的个数为:");
  89.             machineInput();
  90.             System.out.println(selectNum);
  91.         } else if (player == 1) {
  92.             while (true) {
  93.                 selectNum = askInput();
  94.                 if (selectNum > maxInput) {
  95.                     System.out.println("\r\n[选择的数不能大于最大可选择的数!]\r\n");
  96.                 } else if (selectNum <= 0) {
  97.                     System.out.println("\r\n[你输入的数字不正确!]\r\n");
  98.                 } else {
  99.                     break;
  100.                 }
  101.             }
  102.         } else {
  103.             System.out.println("\r\n<未知异常,程序退出!>\r\n");
  104.             gameOver = 1;
  105.         }
  106.         whereNum += selectNum;
  107.         doNum();
  108.     }
  109.     public static void doNum() {
  110.         if (whereNum < num) {
  111.             showNum();
  112.             if (player == 0) {
  113.                 player = 1;
  114.             } else if (player == 1) {
  115.                 player = 0;
  116.             } else {
  117.                 System.out.println("\r\n<发生未知异常!>\r\n");
  118.                 gameOver = 1;
  119.             }
  120.         } else {
  121.             if (player == 0) {
  122.                 System.out.println("\r\n<电脑输了>\r\n");
  123.             } else if (player == 1) {
  124.                 System.out.println("\r\n<玩家输了>\r\n");
  125.             } else {
  126.                 System.out.println("\r\n<发生未知异常!>\r\n");
  127.             }
  128.             gameOver = 1;
  129.         }
  130.     }
  131. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2