java程序:
小游戏:剪刀石头布
设计思路:
两个角色:
电脑(随机) 玩家
1、玩家:用户名
2、电脑:提供角色供选择
3、玩家选择:1-剪刀 2-石头 3-布
4、电脑随机选择一个数字1,2,3
5、判断:玩家赢或者电脑赢(通过player_choice与com_choice的差值判断结果)
全局变量:
player_name String
com_name String
player_choice int
com_choice
import java.util.Scanner;
public class game{
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("*********************************");
System.out.println("欢迎进入本游戏,请输出游戏玩家的名字:");
//获取输入设备
Scanner scanner = new Scanner(System.in);
//结合上下文的变量来决定当前等式的变量,nextLine()游戏玩家的名字可以带空格
player_name=scanner.nextLine();
//这个变量的空格也可能是多个,包含空格 contains,这种 contains包含空格,但是中间也有,中间有合法
//只有player变量全是空格,不合法,trim()方法去掉字符串开头和结尾的空格
if(player_name.trim().equals("")){
player_name="匿名玩家";
}
//选择电脑的角色
System.out.println("********************************");
System.out.println("1-----鸣人");
System.out.println("2-----佐助");
System.out.println("*********************************");
//需要用户选择玩家
String com_no=scanner.next();
//把if换成switch.switch结构
switch(com_no){
case "1":
com_name="鸣人";
break;
case "2":
com_name="佐助";
break;
default:
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是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改成switch
switch(player_choice){
case 1:
player_choice_name="剪刀";
break;
case 2:
player_choice_name="石头";
break;
default:
player_choice_name="布";
}
//当用户出拳出的是1.2,看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
//判断电脑的出拳名称
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+"平局");
}
}
}
运行结果: