编程(游戏,逻辑中的算法)
剪刀石头布-à程序
玩法:
两个玩家
电脑(随机) 玩家
- 玩家参与:输入用户名
- 电脑:提供角色供选择(1、蜡笔小新,2、葫芦娃)
- 玩家选择:1-剪刀 2-石头 3-布
- 电脑随机选对一个数字1,2,3
- 判断对错(实现玩家赢或者电脑赢的结果)
实现代码如下:
import java.util.Scanner; public class game1_modi2 { public static void main(String[] args) { //定义全局变量,玩家名字player_name,电脑名字com_name,玩家出拳player_choice,电脑出拳com_choice String player_name; String com_name; int player_choice; int com_choice; //增加的bug变量,玩家的出拳名称 player_choice_name 电脑出拳名称 com_choice_name String player_choice_name; String com_choice_name; //按照流程写程序 //欢迎界面 System.out.println("**********************************"); System.out.println(" 游戏:剪刀石头布"); System.out.println(" 作者:XXXXXX"); System.out.println(" 版本:v1.2"); System.out.println("*********************************"); System.out.println("欢迎进入本游戏,请输出游戏玩家的名字:"); //获取输入设备 Scanner scanner = new Scanner(System.in); //结合上下文的变量来决定当前等式的变量,nextLine()游戏玩家的名字可以带空格 player_name=scanner.nextLine(); //玩家可能输入空格,哪一个结果为true,就是player_name的变量内容 // System.out.println(player_name.equals("")); //这个变量的空格也可能是多个,包含空格 contains,这种 contains包含空格,但是中间也有,中间有合法 //只有player变量全是空格,不合法,trim()方法去掉字符串开头和结尾的空格 // System.out.println(player_name.trim().equals("")); if(player_name.trim().equals("")){ player_name="匿名玩家"; } // if(player_name) //选择电脑的玩家 System.out.println("********************************"); System.out.println("1-----蜡笔小新"); System.out.println("2-----葫芦娃"); System.out.println("*********************************"); //需要用户选择玩家 String com_no=scanner.next(); //把if换成switch.switch结构 /* swtich (变量名){ case 值1:break; case 值2:break; default(其它): */ switch(com_no){ case "1": com_name="蜡笔小新"; break; case "2": com_name="葫芦娃"; break; default: com_name="匿名用户"; } // if (com_no.equals("1")){ // com_name="蜡笔小新"; // }else if(com_no.equals("2")){ // com_name="葫芦娃"; // }else{ // com_name="匿名用户"; // } //玩家出拳 System.out.println("****请玩家选择出拳的代表数字*********"); System.out.println("1------剪刀"); System.out.println("2------石头"); System.out.println("3------布"); System.out.println("*********************************"); //玩家出拳为了运算方便,使用数字,next()接收的是字符串,如果用户输入1.2 // player_choice=scanner.nextInt(); //因为变量player_choice是int型,直接接收可能会报错,这里使用字符串变量 String tmp_choice=scanner.next(); //把if改成switch switch(tmp_choice){ case "1": player_choice=Integer.parseInt(tmp_choice); break; case "2": player_choice=Integer.parseInt(tmp_choice); break; case "3": player_choice=Integer.parseInt(tmp_choice); break; default: player_choice=(int)Math.round(Math.random()*2+1); } // if(tmp_choice.equals("1") || tmp_choice.equals("2")||tmp_choice.equals("3")){ // //因为不同类型String转化成整理,用到整型的大写Integer,调用parseInt方法,除char型和int型 // //前面类型全称大写.parse类型,如Integer.parseInt,把后面变量的类型转化成需要的类型 // player_choice=Integer.parseInt(tmp_choice); // }else{ // //如果用户的选择在1,2,3之外,就随机给一个 // player_choice=(int)Math.round(Math.random()*2+1); // } //根据player_choice的名字,决定player_choice_name的名字,这里player_choice只有1,2,3 // if(player_choice==1){ // player_choice_name="剪刀"; // }else if(player_choice==2){ // player_choice_name="石头"; // }else{ // player_choice_name="石头"; // } //把if改成switch switch(player_choice){ case 1: player_choice_name="剪刀"; break; case 2: player_choice_name="石头"; break; default: player_choice_name="布"; } //当用户出拳出的是1.2,看player_choice // System.out.println(player_choice); //电脑出拳(Math.random()产生0-1 +1 1-2 Math.round四舍五入取整( 1,2),如果把Math.random()扩大2倍 0-2 +1 1-3 //把Math.random()*2扩大2倍,再加1,再round四舍五入,就会把数字变成1,2,3 //这里(int)强制转化,把long型的8个字节,只用4个字节存储,丢掉了4个字节,这里只有1,2,3 com_choice=(int)Math.round(Math.random()*2+1); //如果你采用0,1,2,直接用(int)Math.random()*3 //也要判断电脑的出拳名称 // if(com_choice==1){ // com_choice_name="剪刀"; // }else if(com_choice==2){ // com_choice_name="石头"; // }else{ // com_choice_name="布"; // } switch(com_choice){ case 1: com_choice_name="剪刀"; break; case 2: com_choice_name="石头"; break; default: com_choice_name="布"; } //判断数值计算用== if(player_choice-com_choice==1 || player_choice-com_choice==-2){ System.out.println("玩家:"+player_name+",出拳:"+player_choice_name+"赢"); System.out.println("电脑:"+com_name+",出拳:"+com_choice_name+"输"); }else if(com_choice-player_choice==1 || com_choice-player_choice==-2){ System.out.println("电脑:"+com_name+",出拳:"+com_choice_name+"赢"); System.out.println("玩家:"+player_name+",出拳:"+player_choice_name+"输"); }else{ System.out.println("电脑:"+com_name+",出拳:"+com_choice_name+"平局"); System.out.println("玩家:"+player_name+",出拳:"+player_choice_name+"平局"); } } }
实现结果: