24点游戏 java实现_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;}

}

}

}

运行结果

随机数产生测试:

1c23f455d261f41f635e4de9ebf3174c.png

运行:

19bebe8c0bc5a587fe765806ea1f5754.png

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值