如何用Java编写24点纸牌游戏程序?

2026-05-28 05:421阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1641个文字,预计阅读时间需要7分钟。

如何用Java编写24点纸牌游戏程序?

本文章为家庭分享了Java实现24点游戏的完整代码,供大家参考。整体内容如下:

主题:24点游戏实现

24点游戏是经典的益智游戏。常见游戏规则如下:

* 从扑克牌中随机抽取4张牌。* 使用加、减、乘、除运算,使这4张牌的结果为24。

例如:

* 从扑克牌中抽取4张牌:2, 3, 4, 5。* 使用运算符:2 * 3 + 4 - 5。* 计算结果:2 * 3 + 4 - 5=14。

代码实现:

javaimport java.util.ArrayList;import java.util.List;import java.util.Random;

public class TwentyFourGame {

public static void main(String[] args) { List cards=generateCards(); System.out.println(抽取的牌: + cards); List operations=generateOperations(cards); System.out.println(可能的运算符: + operations); boolean result=checkResult(cards, operations); System.out.println(是否可以凑成24: + result); }

// 生成随机牌 private static List generateCards() { List cards=new ArrayList(); Random random=new Random(); for (int i=0; i <4; i++) { cards.add(random.nextInt(10) + 1); // 1-10 } return cards; }

// 生成可能的运算符 private static List generateOperations(List cards) { List operations=new ArrayList(); operations.add(+); operations.add(-); operations.add(*); operations.add(/); return operations; }

// 检查是否可以凑成24 private static boolean checkResult(List cards, List operations) { for (int i=0; i

// 计算结果 private static int calculate(int[] arr, String op1, String op2, String op3, String op4) { int result=arr[0]; result=operate(result, arr[1], op1); result=operate(result, arr[2], op2); result=operate(result, arr[3], op3); result=operate(result, arr[4], op4); return result; }

如何用Java编写24点纸牌游戏程序?

// 运算符操作 private static int operate(int a, int b, String op) { switch (op) { case +: return a + b; case -: return a - b; case *: return a * b; case /: return a / b; default: return 0; } }}

总结:

本文介绍了如何使用Java实现24点游戏。通过随机抽取牌、生成可能的运算符和检查结果,实现了凑成24点的功能。希望对大家有所帮助。

本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下

题目

24点游戏是经典的纸牌益智游戏。

常见游戏规则:

从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。

分析

用穷举法列出四个数加上三个运算符号所构成的表达式所有可能的结果

算法实现

import java.util.*; public class point24 { static int sum=0; static int[] sum()//产生随机数并显示的方法 { Random rand=new Random(); int r1=(1+rand.nextInt(13)); int r2=(1+rand.nextInt(13)); int r3=(1+rand.nextInt(13)); int r4=(1+rand.nextInt(13)); System.out.print("发出的牌为:"); switch(r1) { case 1 :System.out.print("A");break; case 11:System.out.print("J");break; case 12:System.out.print("Q");break; case 13:System.out.print("K");break; default:System.out.print(r1);break; } switch(r2) { case 1 :System.out.print(" A");break; case 11:System.out.print(" J");break; case 12:System.out.print(" Q");break; case 13:System.out.print(" K");break; default:System.out.print(" "+r2);break; } switch(r3) { case 1 :System.out.print(" A");break; case 11:System.out.print(" J");break; case 12:System.out.print(" Q");break; case 13:System.out.print(" K");break; default:System.out.print(" "+r3);break; } switch(r4) { case 1 :System.out.println(" A");break; case 11:System.out.println(" J");break; case 12:System.out.println(" Q");break; case 13:System.out.println(" K");break; default:System.out.println(" "+r4);break; } int [] s=new int[] {r1,r2,r3,r4}; return s; } static int js(int i,int j,int x)//两个数之间计算符号确认 { int m=0; switch(x) { case 0:m=i+j;break; case 1:m=i-j;break; case 2:m=i*j;break; case 3: m=i/j;if(i%j!=0) m=-1;//如果除不尽直接让m=-1,以便直接结束此次循环 break; } return m; } static String prin(int s1,int s2,int s3,int s4,int x1,int x2,int x3)//打印解的表达式 { String ch=""; switch(s1) { case 1 :System.out.print("A");ch="A";break; case 11:System.out.print("J");ch="J";break; case 12:System.out.print("Q");ch="Q";break; case 13:System.out.print("K");ch="K";break; default:System.out.print(s1);ch=(String)(s1+"0");break; } switch(x1) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s2) { case 1 :System.out.print("A");ch+="A";break; case 11:System.out.print("J");ch+="J";break; case 12:System.out.print("Q");ch+="Q";break; case 13:System.out.print("K");ch+="K";break; default:System.out.print(s2);ch+=(String)(s2+"");break; } switch(x2) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s3) { case 1 :System.out.print("A");ch+="A";break; case 11:System.out.print("J");ch+="J";break; case 12:System.out.print("Q");ch+="Q";break; case 13:System.out.print("K");ch+="K";break; default:System.out.print(s3);ch+=(String)(s3+"");break; } switch(x3) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s4) { case 1 :System.out.println("A");ch+="A";break; case 11:System.out.println("J");ch+="J";break; case 12:System.out.println("Q");ch+="Q";break; case 13:System.out.println("K");ch+="K";break; default:System.out.println(s4);ch+=(String)(s4+"");break; } // System.out.println(" "+ch); return ch; } static String[] con(int s[])//枚举计算是否存在解 { boolean flag=false; String[] ch=new String [100]; int js1,js2,js3=0; for(int i = 0;i<4;i++) { for(int j=0;j<4;j++) { if(i!=j) { for(int k=0;k<4;k++) { if(i!=j&&j!=k&&i!=k) { for(int l=0;l<4;l++) { if(i!=j&&j!=k&&k!=l&&i!=k&&i!=l&&j!=l) { for(int x1=0;x1<3;x1++) { for(int x2=0;x2<3;x2++) { for(int x3=0;x3<3;x3++) { js1=js(s[i],s[j],x1); if(js1==-1) continue; js2=js(js1,s[k],x2); if(js2==-1) continue; js3=js(js2,s[l],x3); if(js3==-1) continue; if(js3!=-1) { if(js3==24) { ch[sum]=prin(s[i],s[j],s[k],s[l],x1,x2,x3); flag=true; sum++; } } }}}}}}}}}} if(flag==false) { System.out.println("不存在一组解使其成为\"24点\""); } return ch; } public static void main(String[] args) { boolean f=false; Scanner in=new Scanner(System.in); while(!f) { int [] s=sum();//产生4个随机纸牌 con(s);//求解并打印 System.out.println(); System.out.println("继续 (1)or结束(0)"); if(in.nextInt()==1) {f=false;} else {f=true;} } } }

运行结果

随机数产生测试:

运行:

更多精彩游戏小代码,请点击《游戏专题》阅读

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1641个文字,预计阅读时间需要7分钟。

如何用Java编写24点纸牌游戏程序?

本文章为家庭分享了Java实现24点游戏的完整代码,供大家参考。整体内容如下:

主题:24点游戏实现

24点游戏是经典的益智游戏。常见游戏规则如下:

* 从扑克牌中随机抽取4张牌。* 使用加、减、乘、除运算,使这4张牌的结果为24。

例如:

* 从扑克牌中抽取4张牌:2, 3, 4, 5。* 使用运算符:2 * 3 + 4 - 5。* 计算结果:2 * 3 + 4 - 5=14。

代码实现:

javaimport java.util.ArrayList;import java.util.List;import java.util.Random;

public class TwentyFourGame {

public static void main(String[] args) { List cards=generateCards(); System.out.println(抽取的牌: + cards); List operations=generateOperations(cards); System.out.println(可能的运算符: + operations); boolean result=checkResult(cards, operations); System.out.println(是否可以凑成24: + result); }

// 生成随机牌 private static List generateCards() { List cards=new ArrayList(); Random random=new Random(); for (int i=0; i <4; i++) { cards.add(random.nextInt(10) + 1); // 1-10 } return cards; }

// 生成可能的运算符 private static List generateOperations(List cards) { List operations=new ArrayList(); operations.add(+); operations.add(-); operations.add(*); operations.add(/); return operations; }

// 检查是否可以凑成24 private static boolean checkResult(List cards, List operations) { for (int i=0; i

// 计算结果 private static int calculate(int[] arr, String op1, String op2, String op3, String op4) { int result=arr[0]; result=operate(result, arr[1], op1); result=operate(result, arr[2], op2); result=operate(result, arr[3], op3); result=operate(result, arr[4], op4); return result; }

如何用Java编写24点纸牌游戏程序?

// 运算符操作 private static int operate(int a, int b, String op) { switch (op) { case +: return a + b; case -: return a - b; case *: return a * b; case /: return a / b; default: return 0; } }}

总结:

本文介绍了如何使用Java实现24点游戏。通过随机抽取牌、生成可能的运算符和检查结果,实现了凑成24点的功能。希望对大家有所帮助。

本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下

题目

24点游戏是经典的纸牌益智游戏。

常见游戏规则:

从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。

分析

用穷举法列出四个数加上三个运算符号所构成的表达式所有可能的结果

算法实现

import java.util.*; public class point24 { static int sum=0; static int[] sum()//产生随机数并显示的方法 { Random rand=new Random(); int r1=(1+rand.nextInt(13)); int r2=(1+rand.nextInt(13)); int r3=(1+rand.nextInt(13)); int r4=(1+rand.nextInt(13)); System.out.print("发出的牌为:"); switch(r1) { case 1 :System.out.print("A");break; case 11:System.out.print("J");break; case 12:System.out.print("Q");break; case 13:System.out.print("K");break; default:System.out.print(r1);break; } switch(r2) { case 1 :System.out.print(" A");break; case 11:System.out.print(" J");break; case 12:System.out.print(" Q");break; case 13:System.out.print(" K");break; default:System.out.print(" "+r2);break; } switch(r3) { case 1 :System.out.print(" A");break; case 11:System.out.print(" J");break; case 12:System.out.print(" Q");break; case 13:System.out.print(" K");break; default:System.out.print(" "+r3);break; } switch(r4) { case 1 :System.out.println(" A");break; case 11:System.out.println(" J");break; case 12:System.out.println(" Q");break; case 13:System.out.println(" K");break; default:System.out.println(" "+r4);break; } int [] s=new int[] {r1,r2,r3,r4}; return s; } static int js(int i,int j,int x)//两个数之间计算符号确认 { int m=0; switch(x) { case 0:m=i+j;break; case 1:m=i-j;break; case 2:m=i*j;break; case 3: m=i/j;if(i%j!=0) m=-1;//如果除不尽直接让m=-1,以便直接结束此次循环 break; } return m; } static String prin(int s1,int s2,int s3,int s4,int x1,int x2,int x3)//打印解的表达式 { String ch=""; switch(s1) { case 1 :System.out.print("A");ch="A";break; case 11:System.out.print("J");ch="J";break; case 12:System.out.print("Q");ch="Q";break; case 13:System.out.print("K");ch="K";break; default:System.out.print(s1);ch=(String)(s1+"0");break; } switch(x1) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s2) { case 1 :System.out.print("A");ch+="A";break; case 11:System.out.print("J");ch+="J";break; case 12:System.out.print("Q");ch+="Q";break; case 13:System.out.print("K");ch+="K";break; default:System.out.print(s2);ch+=(String)(s2+"");break; } switch(x2) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s3) { case 1 :System.out.print("A");ch+="A";break; case 11:System.out.print("J");ch+="J";break; case 12:System.out.print("Q");ch+="Q";break; case 13:System.out.print("K");ch+="K";break; default:System.out.print(s3);ch+=(String)(s3+"");break; } switch(x3) { case 0:System.out.print("+");ch+="+";break; case 1:System.out.print("-");ch+="-";break; case 2:System.out.print("*");ch+="*";break; case 3:System.out.print("/");ch+="/";break; } switch(s4) { case 1 :System.out.println("A");ch+="A";break; case 11:System.out.println("J");ch+="J";break; case 12:System.out.println("Q");ch+="Q";break; case 13:System.out.println("K");ch+="K";break; default:System.out.println(s4);ch+=(String)(s4+"");break; } // System.out.println(" "+ch); return ch; } static String[] con(int s[])//枚举计算是否存在解 { boolean flag=false; String[] ch=new String [100]; int js1,js2,js3=0; for(int i = 0;i<4;i++) { for(int j=0;j<4;j++) { if(i!=j) { for(int k=0;k<4;k++) { if(i!=j&&j!=k&&i!=k) { for(int l=0;l<4;l++) { if(i!=j&&j!=k&&k!=l&&i!=k&&i!=l&&j!=l) { for(int x1=0;x1<3;x1++) { for(int x2=0;x2<3;x2++) { for(int x3=0;x3<3;x3++) { js1=js(s[i],s[j],x1); if(js1==-1) continue; js2=js(js1,s[k],x2); if(js2==-1) continue; js3=js(js2,s[l],x3); if(js3==-1) continue; if(js3!=-1) { if(js3==24) { ch[sum]=prin(s[i],s[j],s[k],s[l],x1,x2,x3); flag=true; sum++; } } }}}}}}}}}} if(flag==false) { System.out.println("不存在一组解使其成为\"24点\""); } return ch; } public static void main(String[] args) { boolean f=false; Scanner in=new Scanner(System.in); while(!f) { int [] s=sum();//产生4个随机纸牌 con(s);//求解并打印 System.out.println(); System.out.println("继续 (1)or结束(0)"); if(in.nextInt()==1) {f=false;} else {f=true;} } } }

运行结果

随机数产生测试:

运行:

更多精彩游戏小代码,请点击《游戏专题》阅读

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。