第13章 指导学习:人机猜拳
赵冬梅
2018-10-15public class Person { String name = "匿名"; // 名字 int score = 0; // 积分 /** * 出拳 * * @return 出拳结果:1.剪刀 2.石头 3.布 */ public int showFist() { // 接收用户的选择 Scanner input = new Scanner(System.in); System.out.print("\n请出拳:1.剪刀 2.石头 3.布 (输入相应数字) :"); int show = input.nextInt(); // 输出出拳结果,并返回 switch (show) { case 1: System.out.println("你出拳: 剪刀"); break; case 2: System.out.println("你出拳: 石头"); break; case 3: System.out.println("你出拳: 布"); break; } return show; } }
public class Computer { String name = "电脑"; // 名字 int score = 0;; // 积分 /** * 出拳 * @return 出拳结果:1.剪刀 2.石头 3.布 */ public int showFist(){ // 产生随机数 int show = (int)(Math.random()*10)%3 + 1; //产生随机数,表示电脑出拳 // 输出出拳结果并返回 switch(show){ case 1: System.out.println(name+"出拳: 剪刀"); break; case 2: System.out.println(name+"出拳: 石头"); break; case 3: System.out.println(name+"出拳: 布"); break; } return show; } }
public class Game1 { Person person; //甲方 Computer computer; //乙方 int count; //对战次数 /** * 初始化 */ public void initial(){ person = new Person(); computer = new Computer(); count = 0; } /** * 开始游戏 */ public void startGame() { initial(); System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n"); System.out.println("\n\t\t******************"); System.out.println ("\t\t** 猜拳, 开始 **"); System.out.println ("\t\t******************"); System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布"); /*选择对方角色*/ System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): "); Scanner input = new Scanner(System.in); int role = input.nextInt(); if(role == 1){ computer.name = "刘备"; }else if(role == 2){ computer.name = "孙权"; }else if(role == 3){ computer.name = "曹操"; } System.out.print("你选择了"+computer.name+"对战"); } }
public class Game2 { Person person; //甲方 Computer computer; //乙方 int count; //对战次数 /** * 初始化 */ public void initial(){ person = new Person(); computer = new Computer(); count = 0; } /** * 开始游戏 */ public void startGame() { initial(); // 初始化 System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n"); System.out.println("\n\t\t******************"); System.out.println ("\t\t** 猜拳, 开始 **"); System.out.println ("\t\t******************"); System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布"); /*选择对方角色*/ System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): "); Scanner input = new Scanner(System.in); int role = input.nextInt(); if(role == 1){ computer.name = "刘备"; }else if(role == 2){ computer.name = "孙权"; }else if(role == 3){ computer.name = "曹操"; } System.out.println("你选择了 "+computer.name+"对战"); /*开始游戏*/ System.out.print("\n要开始吗?(y/n) "); String con = input.next(); int perFist; //用户出的拳 int compFist; //计算机出的拳 if(con.equals("y")){ /*出拳*/ perFist = person.showFist(); compFist = computer.showFist(); /*裁决*/ if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){ System.out.println("结果:和局,真衰!\n"); //平局 }else if((perFist == 1 && compFist == 3) || (perFist == 2 && compFist == 1) || (perFist == 3 && compFist == 2)){ System.out.println("结果: 恭喜, 你赢了!"); //用户赢 }else{ System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢 } } } }
public class Game3 { Person person; //甲方 Computer computer; //乙方 int count; //对战次数 /** * 初始化 */ public void initial(){ person = new Person(); computer = new Computer(); count = 0; } /** * 开始游戏 */ public void startGame() { initial(); // 初始化 System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n"); System.out.println("\n\t\t******************"); System.out.println ("\t\t** 猜拳, 开始 **"); System.out.println ("\t\t******************"); System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布"); /*选择对方角色*/ System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): "); Scanner input = new Scanner(System.in); int role = input.nextInt(); if(role == 1){ computer.name = "刘备"; }else if(role == 2){ computer.name = "孙权"; }else if(role == 3){ computer.name = "曹操"; } System.out.println("你选择了 "+computer.name+"对战"); /*开始游戏*/ System.out.print("\n要开始吗?(y/n) "); String con = input.next(); int perFist; //用户出的拳 int compFist; //计算机出的拳 while(con.equals("y")){ /*出拳*/ perFist = person.showFist(); compFist = computer.showFist(); /*裁决*/ if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){ System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n"); //平局 }else if((perFist == 1 && compFist == 3) || (perFist == 2 && compFist == 1) || (perFist == 3 && compFist == 2)){ System.out.println("结果: 恭喜, 你赢了!"); //用户赢 person.score++; }else{ System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢 computer.score++; } count++; System.out.print("\n是否开始下一轮(y/n): "); con = input.next(); } } }
public class Game4 { Person person; //甲方 Computer computer; //乙方 int count; //对战次数 /** * 初始化 */ public void initial(){ person = new Person(); computer = new Computer(); count = 0; } /** * 开始游戏 */ public void startGame() { initial(); // 初始化 System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------\n"); System.out.println("\n\t\t******************"); System.out.println ("\t\t** 猜拳, 开始 **"); System.out.println ("\t\t******************"); System.out.println("\n\n出拳规则:1.剪刀 2.石头 3.布"); /*选择对方角色*/ System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): "); Scanner input = new Scanner(System.in); int role = input.nextInt(); if(role == 1){ computer.name = "刘备"; }else if(role == 2){ computer.name = "孙权"; }else if(role == 3){ computer.name = "曹操"; } System.out.println("你选择了 "+computer.name+"对战"); System.out.print("\n要开始吗?(y/n) "); String con = input.next(); int perFist; //用户出的拳 int compFist; //计算机出的拳 while(con.equals("y")){ /*出拳*/ perFist = person.showFist(); compFist = computer.showFist(); /*裁决*/ if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){ System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n"); //平局 }else if((perFist == 1 && compFist == 3) || (perFist == 2 && compFist == 1) || (perFist == 3 && compFist == 2)){ System.out.println("结果: 恭喜, 你赢了!"); //用户赢 person.score++; }else{ System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢 computer.score++; } count++; System.out.print("\n是否开始下一轮(y/n): "); con = input.next(); } /*显示结果*/ showResult(); } /** * 显示比赛结果 */ public void showResult(){ /*显示最后结果*/ System.out.println("---------------------------------------------------"); System.out.println(computer.name + " VS " + person.name); System.out.println("对战次数:"+ count); int result = calcResult(); if(result == 1){ System.out.println("结果:打成平手,下次再和你一分高下!"); }else if(result == 2){ System.out.println("结果:恭喜恭喜!"); //用户获胜 }else{ System.out.println("结果:呵呵,笨笨,下次加油啊!"); //计算机获胜 } System.out.println("---------------------------------------------------"); } /** * 计算比赛结果 * @return 1:战平;2:用户赢;3:电脑赢 */ public int calcResult(){ if(person.score == computer.score){ return 1; // 战平 }else if(person.score > computer.score){ return 2; // 用户赢 }else{ return 3; // 电脑赢 } } }
public class Game { Person person; //甲方 Computer computer; //乙方 int count; //对战次数 /** * 初始化 */ public void initial(){ person = new Person(); computer = new Computer(); count = 0; } /** * 开始游戏 */ public void startGame() { System.out.println("----------------欢 迎 进 入 游 戏 世 界----------------"); System.out.println("\n\t\t******************"); System.out.println ("\t\t** 猜拳, 开始 **"); System.out.println ("\t\t******************"); System.out.println("\n出拳规则:1.剪刀 2.石头 3.布"); Scanner input = new Scanner(System.in); String exit = "n"; // 退出系统 do{ initial(); // 初始化 /*选择对方角色*/ System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操): "); int role = input.nextInt(); if(role == 1){ computer.name = "刘备"; }else if(role == 2){ computer.name = "孙权"; }else if(role == 3){ computer.name = "曹操"; } // 扩展功能1:输入用户姓名 /*输入用户姓名*/ System.out.print("请输入你的姓名:"); person.name = input.next(); System.out.println(person.name+" VS "+computer.name+" 对战\n"); // 扩展功能1结束 System.out.print("要开始吗?(y/n) "); String start = input.next(); // 开始每一局游戏 int perFist; //用户出的拳 int compFist; //计算机出的拳 while(start.equals("y")){ /*出拳*/ perFist = person.showFist(); compFist = computer.showFist(); /*裁决*/ if((perFist == 1 && compFist == 1) || (perFist == 2 && compFist == 2) || (perFist == 3 && compFist == 3)){ System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧 !\n"); //平局 }else if((perFist == 1 && compFist == 3) || (perFist == 2 && compFist == 1) || (perFist == 3 && compFist == 2)){ System.out.println("结果: 恭喜, 你赢了!"); //用户赢 person.score++; }else{ System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢 computer.score++; } count++; System.out.print("\n是否开始下一轮(y/n): "); start = input.next(); } /*显示结果*/ showResult(); // 扩展功能3:循环游戏,直到退出系统 System.out.print("\n要开始下一局吗?(y/n):"); exit = input.next(); System.out.println(); // 扩展功能3结束 }while(!exit.equals("n")); System.out.println("系统退出!"); } /** * 显示比赛结果 */ public void showResult(){ /*显示对战次数*/ System.out.println("---------------------------------------------------"); System.out.println(computer.name + " VS " + person.name); System.out.println("对战次数:"+ count); // 扩展功能2:显示最终的得分 System.out.println("\n姓名\t得分"); System.out.println(person.name+"\t"+person.score); System.out.println(computer.name+"\t"+computer.score+"\n"); // 扩展功能2结束 /*显示对战结果*/ int result = calcResult(); if(result == 1){ System.out.println("结果:打成平手,下次再和你一分高下!"); }else if(result == 2){ System.out.println("结果:恭喜恭喜!"); //用户获胜 }else{ System.out.println("结果:呵呵,笨笨,下次加油啊!"); //计算机获胜 } System.out.println("---------------------------------------------------"); } /** * 计算比赛结果 * @return 1:战平;2:用户赢;3:电脑赢 */ public int calcResult(){ if(person.score == computer.score){ return 1; // 战平 }else if(person.score > computer.score){ return 2; // 用户赢 }else{ return 3; // 电脑赢 } } }