24点游戏(java)
2017-04-14 22:44
316 查看
//[b]****24点纸牌游戏******[/b]
//版本:v1.0
//创建时间:2017年4月14日
//主要功能:系统随机生成1~13的4张牌(1用A代替,11用J代替,12用Q代替,13用K代替),要求将四张牌用加减乘除混合运算求得出24
//主要原理:系统通过对随机生成的四张扑克牌进行运算,如果结果为24,则输出结果及结果个数
//[b]**************************[/b]
总结
零零散散自学java,学了大概2周了,这是自己第一次用java独立写出的第一个代码(之前用c语言写过这个程序),虽然不是很复杂,但也从中学到了很多小知识点。
//版本:v1.0
//创建时间:2017年4月14日
//主要功能:系统随机生成1~13的4张牌(1用A代替,11用J代替,12用Q代替,13用K代替),要求将四张牌用加减乘除混合运算求得出24
//主要原理:系统通过对随机生成的四张扑克牌进行运算,如果结果为24,则输出结果及结果个数
//[b]**************************[/b]
import java.util.Scanner; import java.util.Random; public class Game { public static void main(String[] args) { int[] p=new int[4];//声明数组 int c; Scanner scn=new Scanner (System.in); System.out.println("--------------------------------------------"\n); System.out.println("*******24点纸牌游戏******"); System.out.println("0代表扑克牌中的10"); System.out.println("--------------------------------------------"); do { System.out.println("随机生成的纸牌为:\n"); Random( p) ;//函数调用 printResult(p);//函数调用 System.out.println("1.继续游戏 2.结束\n"); c=scn.nextInt(); }while(c==1); } //如果X为1时,返回A;同样,返回J,Q,K public static char Card(int x) { if(x==1) return 'A'; if(x<10) return (char)(x+'0'); else if(x==10) return '0'; else if(x==11) return 'J'; else if(x==12) return 'Q'; else if(x==13) return 'K'; return 0; } //随机生成四个数 public static void Random(int[] p) { int i; Random random=new Random(); for(i=0;i<4;i++) { p[i]=(int)(Math.abs(random.nextInt())%13+1); System.out.println(Card(p[i])+" "); } } //四个运算符的运算 public static double ys(double num1,double num2,char o) { double result=0; switch(o) { case '+': result=num1+num2; break; case '-': { if(num1>=num2) result=num1-num2; else result=num2-num1; } break; case '*': result=num1*num2; break; case '/': result=num1/num2; break; default : break; } return result; } //如果通过运算算得的结果为24,则输出结果 public static int Result(int[] p,char[] o) { double t; int a=p[0]; int b=p[1]; int c=p[2]; int d=p[3]; //1.((A*B)*C)*D t=0; t=ys(ys(ys(a,b,o[0]),c,o[1]),d,o[2]); if((t-24)==0) //如果计算结果的绝对值与24相等,输出结果 { System.out.println("("+"("+"("+Card(p[0])+o[0]+Card(p[1])+")"+o[1]+Card(p[2])+")"+o[2]+Card(p[3])+")"); return 1; } //2.(A*(B*C))*D t=0; t=ys(ys(a,ys(b,c,o[1]),o[0]),d,o[2]); if((t-24)==0) //如果计算结果的绝对值与24相等,输出结果 { System.out.println("("+"("+Card(p[0])+o[0]+"("+Card(p[1])+o[1]+Card(p[2])+")"+")"+Card(p[2])+Card(p[3])+")"); return 1; } //3.(A*B)*(C*D) t=0; t=ys(ys(a,b,o[0]),ys(c,d,o[2]),o[1]); if((t-24)==0) //如果计算结果的绝对值与24相等,输出结果 { System.out.println("("+"("+Card(p[0])+o[0]+Card(p[1])+")"+o[1]+"("+Card(p[2])+o[2]+Card(p[3])+")"+")"); return 1; } //4.A*(B*(C*D)) t=0; t=ys(a,ys(b,ys(c,d,o[2]),o[1]),o[0]); if((t-24)==0) //如果计算结果的绝对值与24相等,输出结果 { System.out.println("("+Card(p[0])+o[0]+"("+Card(p[1])+o[1]+"("+Card(p[2])+o[2]+Card(p[3])+")"+")"+")"); return 1; } //5.A*((B*C)*D) t=0; t=ys(a,ys(ys(b,c,o[1]),d,o[2]),o[0]); if((t-24)==0) //如果计算结果的绝对值与24相等,输出结果 { System.out.println("("+Card(p[0])+o[0]+"("+"("+Card(p[1])+o[1]+Card(p[2])+")"+o[2]+Card(p[3])+")"+")1"); return 1; } return 0; } //输出结果的数目 public static void printResult(int[] p) { char[] O={'+','-','*','/'}; char[] o =new char[3]; int i,j,k; int count=0; for(i=0;i<4;i++)//三层for循环列出了所有运算符可能出现的情况 { for(j=0;j<4;j++) { for(k=0;k<4;k++) { o[0]=O[i]; o[1]=O[j]; o[2]=O[k]; if(Result(p,o)==1) //如果输出函数返回值为真,输出结果数目递加 count++; } } } System.out.println("共"+count+"种方法"); } }
总结
零零散散自学java,学了大概2周了,这是自己第一次用java独立写出的第一个代码(之前用c语言写过这个程序),虽然不是很复杂,但也从中学到了很多小知识点。
相关文章推荐
- 扑克牌24点游戏JAVA实现
- Java实现 扑克24点游戏src
- 使用java编写计算24点游戏程序
- 24点游戏 Java 递归
- 华为机试题--24点游戏--In Java
- 24点游戏--java打开方式
- Java swing实现的小游戏24点游戏源码附带视频指导教程
- 24点扑克牌游戏——(含java源码)(GUI实现)
- JAVA开发--游戏24点
- Java实现24点纸牌游戏
- Java编写的24点纸牌游戏
- 24点游戏:java的一种穷举实现
- 程序员笔试笔试-典型编程题——24点游戏(java)
- 24点游戏动态规划解法(java)
- [OJ]24点游戏之递归实现(JAVA)
- java 游戏API--
- JAVA游戏直棋之前言
- JAVA与游戏开发
- 新Java技术工具亮相游戏开发商大会
- 24点算法的java代码