题目是这样的:做一个剪刀、石头、布的游戏。
对象:人和计算机;
规则:1代表剪刀,2代表石头,3代表布。当在计算机输入1或2或3时,计算机则随机出剪刀、石头或布;然后输出的结果有3种情况:分别为。(1)恭喜你赢了;(2)很遗憾,你输了;(3)没关系,平局。
请写出该游戏的程序代码?
(这游戏很给力哦,既可以学习,又可以娱乐,希望大家多多参与。看到请回帖)
对象:人和计算机;
规则:1代表剪刀,2代表石头,3代表布。当在计算机输入1或2或3时,计算机则随机出剪刀、石头或布;然后输出的结果有3种情况:分别为。(1)恭喜你赢了;(2)很遗憾,你输了;(3)没关系,平局。
请写出该游戏的程序代码?
(这游戏很给力哦,既可以学习,又可以娱乐,希望大家多多参与。看到请回帖)
解决方案 »
- 自定义标签问题
- java生成xml文档和解析xml文档,分别使用哪种技术比较好?
- ibatis和Spring整合抛org.springframework.beans.factory.BeanCreationException
- 在Solaris下,与windows里的bat相对应的是什么文件?
- hibernate.properties not found
- 求Web Service资料
- sybase的Replication Server安装后,为什么11752端口的复制服务只有本机可以连得通????
- servlet传中文显示乱码,请教。
- 时间富余,想接一些外包项目
- [struts]请问,这一般是有什么引起的?
- Hibernate操作数据库删除方法的问题!
- java里面反射是否可以通过一个字段名得到它的实体类呢?
先写个java类:GuessGame
定义胜局数wins、和局数level、负局数loss,并初始化为0
定义游戏局数:intTimes 、无效局数:inValid(输入错误的局数)
定义出拳类型:intGuess(无需初始化,电脑随机数,1代表剪刀,2代表石头,3代表布)
再定义一个输入字符串:strNum ,主要作用是将输入结果与电脑出拳的1、2、3进行比较,在比较中定义。public class GuessGame{
//在控制台运行主函数
public static void main(String[] args){
int intTimes=-1,inValid=0,intNum=1,intGuess;
float wins=0.0,level=0.0,loss=0.0
String strNum;
System.out.print("\n 【 猜 拳 游 戏 】\n\n*************************\n\n游戏说明:\n\n");
System.out.print("你出拳:a:剪刀 b:石头 c:布\n\n电脑拳:1:剪刀 2:石头 3:布\n\n游戏开始:\"n\"\n\n*************************\n\n");
do{
intGuess = (int)(3*Math.random()+1); //定义1~3的随机数
boolean con =true; //定义标志
System.out.println("电脑:请出拳!");
System.out.print("你:");
Scanner sc =new Scanner(System.in);
strNum =sc.next();
if("a".equals(strNum))
{
intNum=1;
}else if ("b".equals(strNum)){
intNum=2;
}else if("c".equals(strNum)){
intNum=3;
}else if("n".equals(strNum)){
//是否继续的否 n
con=false;
}else{
//其他输入错误的情况
con=false;
System.out.println("注:你输入有误,请重新出拳!\n");
inValid++; //
}
if((intGuess-intNum)==0 && con){
System.out.println("电脑:"+intGuess);
System.out.println("电脑:没关系,平局!\n");
level++;
}
else if(con && ((Math.abs(intGuess-intNum))==1 && intNum>intGuess))
{
System.out.println("电脑:"+intGuess);
System.out.println("电脑:恭喜你赢了!\n");
wins++;
}
else if(con && ((Math.abs(intGuess-intNum))==2 && intNum<intGuess) )
{
System.out.println("电脑:"+intGuess);
System.out.println("电脑:恭喜你赢了!\n");
wins++;
}
else if(con && (((Math.abs(intGuess-intNum))==1)&& intNum<intGuess || (Math.abs(intGuess-intNum))==2 && intNum>intGuess))
{
System.out.println("电脑:"+intGuess);
System.out.println("电脑:很遗憾,你输了!\n");
loss++;
}
intTimes++;
}while(!"n".equals(strNum));
System.out.println("电脑:结束游戏,欢迎再来!");
float rate1=(float)(wins/(intTimes-inValid));
float rate2=(float)(loss/(intTimes-inValid));
float rate3=(float)(level/(intTimes-inValid));
System.out.println("\n你的战绩统计如下:");
System.out.println("总局数:"+intTimes);
System.out.println("无效局数:"+inValid);
System.out.printf("胜局数:%.0f ,胜率:%.2f\n",wins,rate1);
System.out.printf("负局数:%.0f ,负率:%.2f\n",loss,rate2);
System.out.printf("和局数:%.0f ,和率:%.2f\n",level,rate3);
}}
最后你可以将其中的一些逻辑抽取并集合在一个方法中,这样能让代码更清晰更易于理解。
希望以上程序能对你有所帮助。
import java.util.Scanner;public class GameTest {
public static Scanner input=new Scanner(System.in);
public static void main(String[] args) {
//int randomNum=(int) (Math.ceil((Math.random()*3)));
//1代表剪刀,2代表石头,3代表布
boolean flag=true;
while(flag){
System.out.println("1代表剪刀,2代表石头,3代表布");
People p=new People();
Computer c=new Computer();
System.out.println(Compare(p,c));
System.out.println("是否继续(Y/N)");
String s=input.next();
if(!s.equalsIgnoreCase("Y")){
System.out.println("欢迎下次再玩哦");
flag=false;
}
}
}
public static String Compare(People p,Computer c){
System.out.print("请输入(1-->3之间的任意整数)");
// int peopleInput=input.nextInt();
p.setNumP(input.nextInt());
if(c.getNumC()==1){
if(p.getNumP()==1){
System.out.println("电脑出:"+c.getNumC());
return "没关系,平局";}
else if(p.getNumP()==2){
System.out.println("电脑出:"+c.getNumC());
return "恭喜你赢了";
}else{
System.out.println("电脑出:"+c.getNumC());
return "很遗憾,你输了";
}
}
if(c.getNumC()==2){
if(p.getNumP()==1){
System.out.println("电脑出:"+c.getNumC());
return "很遗憾,你输了";}
else if(p.getNumP()==2){
System.out.println("电脑出:"+c.getNumC());
return "没关系,平局";
}else{
System.out.println("电脑出:"+c.getNumC());
return "恭喜你赢了";
}
}
if(c.getNumC()==3){
if(p.getNumP()==1){
System.out.println("电脑出:"+c.getNumC());
return "恭喜你赢了";}
else if(p.getNumP()==2){
System.out.println("电脑出:"+c.getNumC());
return "很遗憾,你输了";
}else{
System.out.println("电脑出:"+c.getNumC());
return "没关系,平局";
}
}
return "ss";
}
}
class Computer{
int numC=(int) (Math.ceil((Math.random()*3)));
public int getNumC() {
return numC;
}
public void setNumC(int numC) {
this.numC = numC;
}
}
class People{
int numP; public int getNumP() {
return numP;
}
public void setNumP(int numP) {
this.numP = numP;
}
}
有点麻烦
case -2:
case 1:
人胜利 ;break;case 0:
平局;break;default:
人失败}
import java.util.Random;
import java.util.Scanner;public class ShiTou {
public static void main(String[] args){
System.out.println("请输入1~4的数字,1为剪刀,2为石头,3为布!4为退出!");
Scanner sc=new Scanner(System.in);
while(true){
int you=sc.nextInt();
int computer=new Random().nextInt(3)+1;
if(you==computer){
System.out.println("没关系,平局!");
}else if(you==1){
System.out.println(computer==2?"很遗憾,您输了!":"恭喜,您赢了!");
}else if(you==2){
System.out.println(computer==3?"很遗憾,您输了!":"恭喜,您赢了!");
}else if(you==3){
System.out.println(computer==1?"很遗憾,您输了!":"恭喜,您赢了!");
}else{
break;
}
}
}}