当前位置: 首页 > 编程笔记 >

java实现24点纸牌游戏

易弘亮
2023-03-14
本文向大家介绍java实现24点纸牌游戏,包括了java实现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;}
 } 

 }
}

运行结果

随机数产生测试:

运行:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Java编写的24点纸牌游戏,包括了Java编写的24点纸牌游戏的使用技巧和注意事项,需要的朋友参考一下 任意4个1-13数字,加减乘除计算24点。 实现原理: 1)排列组合4个数字 2)计算每次排列组合的可能性 Cal24.java Combination.java 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍C++实现经典24点纸牌益智游戏,包括了C++实现经典24点纸牌益智游戏的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了经典24点纸牌益智游戏的具体实现方法,供大家参考,具体内容如下 一.实验内容 24点游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编

  • 本文向大家介绍C语言实现纸牌计算24点小游戏,包括了C语言实现纸牌计算24点小游戏的使用技巧和注意事项,需要的朋友参考一下 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的。程序主要功能已完成,目前还有部分细节未处理,待完成ing...对于代码中的错误,恳请批评指正。 游戏描述:   A-10:分别代表数字 1-10

  • 我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32

  • 我尝试在Java实施纸牌游戏“滑冰” 规则: 有32张牌。每张牌在游戏中只存在一次。 颜色是:梅花、黑桃、红心、钻石 这些值是:王牌、国王、王后、杰克、十、九、八、七 那些牌被洗牌了。有三个队员 第一回合:每位玩家获赠3张牌。然后将2张牌放入滑板中。 第二回合:每名玩家再获4张牌。 第三回合:每名玩家再获3张牌。 想要的输出:露出的每个玩家的牌(每张牌都要存在一次) 我的输出:钻石七(32次) 我

  • 我在做一个匹配的纸牌游戏,但我不明白如何实际做到这一点。我希望有人能帮我解释一下我能做些什么来解决这个问题。 以下是规格: 在一个对的纸牌游戏中,目标是翻出对匹配的纸牌。 https://en.wikipedia.org/wiki/contension_(游戏)以下是我们考虑的配对变化的规则。 在游戏开始时,有n张牌面朝下,其中n是4的倍数。每种卡片有4张,卡片上标有字母a、b、....例如,如果