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;}
 } 

 }
}

运行结果

随机数产生测试:

运行:

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

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

(0)

相关推荐

  • Java实现24点小游戏

    本文实例为大家分享了Java实现24点小游戏的具体代码,供大家参考,具体内容如下 程序设计要求: 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表

  • java实现纸牌游戏之小猫钓鱼算法

    星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏--"小猫钓鱼".游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份.小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌.出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾.当任意一人手中的牌全部出完时,游戏结束,对手获胜. 假如游戏开始时,小哼手中有 6 张牌,顺序为 2 4

  • Java扑克牌速算24的方法

    已知一副扑克牌有54张,去除大王和小王,剩余52张.在其中随机抽取4张牌,利用加减乘除进行计算得到24. 从A到10,他们的值分别为1到10. 从J到K,他们对应的值是减去10以后的值.编写程序生成一副扑克牌,随机抽取4张,进行计算是否能得到24. 如果可以,列出可能的计算表达式,可能有多种计算形式. 主要思想就是先生成除去大小王的52张扑克牌,然后从中随机抽取四张.接着用排列组合的方式找到能计算得到24的表达式. package Poker; import java.util.Random;

  • Java编写的24点纸牌游戏

    任意4个1-13数字,加减乘除计算24点. 实现原理: 1)排列组合4个数字 2)计算每次排列组合的可能性 Cal24.java import java.util.HashSet; import java.util.Set; public class Cal24 { private static final double precision = 0.00001; private static final int target = 24; public String[] execute(Strin

  • java实现24点游戏

    游戏规则 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式 列出表达式无重复 用户初始生命值为一给定值(比如3),初始分数为0.随机生成4个代表扑克牌牌面的数字或字母,由用户输入包含这4个数字或字母的运算表达式(可包含括号),如果表达式计算结果为24则代表用户赢了此局. 使用计时器要求用户在规定时间内输入表达式,如

  • java用扑克牌计算24点

    一副扑克牌的每张牌表示一个数(J.Q.K 分别表示 11.12.13,两个司令都表示 6).任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式.每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取.运算遵从一定优先级别,可加括号控制,最终使运算结果为 24.请输出一种解决方案的表达式,用括号表示运算优先.如果没有一种解决方案,则输出 -1 表示无解. 输入格式: 输入在一行中给出 4 个整数,每个

  • java实现24点纸牌游戏

    本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 分析 用穷举法列出四个数加上三个运算符号所构成的表达式所有

  • 利用Java编写24点小游戏的实例代码

    话不多说直接给大家上代码 package com.company; import java.util.*; /** * 24点小游戏 * 游戏规则:系统自动生成4个1-10的随机整数,玩家通过加减乘除操作,得到结果为24,每个数字只能使用一次 */ public class Game24Player { final String[] patterns = {"nnonnoo", "nnonono", "nnnoono", "nnnono

  • 基于Java实现经典蜘蛛纸牌游戏

    目录 效果展示 游戏结构 核心代码 AboutDialog.java类 PKCard.java类 SpiderMenuBar.java类 Spider.java 类 效果展示 前面的导入过程这里就不多说了,不会的可以自己去问度娘.导入后,选择Spider.java类直接运行就可以了,下面是游戏运行的截图: 游戏结构 核心代码 代码显示:代码注释很清楚 ,大家可以自行参考. AboutDialog.java类 import javax.swing.*; import java.awt.*; /*

  • C语言实现纸牌24点小游戏

    本文实例为大家分享了C语言纸牌24点小游戏的具体实现代码,供大家参考,具体内容如下 此程序参考C语言实现经典24点纸牌益智游戏,并做出一些改进. 一.题目要求: 24点游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(

  • 用Java实现24点游戏

    一.常见游戏规则 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表达式无重复. 提高要求:用户初始生命值为一给定值(比如3),初始分数为0.随机生成4个代表扑克牌牌面的数字或字母,由用户输入包含这

  • C++实现经典24点纸牌益智游戏

    本文为大家分享了经典24点纸牌益智游戏的具体实现方法,供大家参考,具体内容如下 一.实验内容 24点游戏是经典的纸牌益智游戏. 常见游戏规则: 从扑克中每次取出4张牌.使用加减乘除,第一个能得出24者为赢.(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏. 基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题. 1.程序风格良好(使用自定义注释模板) 2.列出表达式

  • C#编写控制台程序纸牌游戏

    本文实例为大家分享了C#编写纸牌游戏的具体代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace ConsoleApplication2 { class Game { string[] str = new string[52]; int[] number = new int[52]; int i = 0; int[] a

  • Java实现的打地鼠小游戏完整示例【附源码下载】

    本文实例讲述了Java实现的打地鼠小游戏.分享给大家供大家参考,具体如下: 这里涉及到java线程和GUI的相关知识,一个简单的java小游戏打地鼠,有兴趣的朋友可以优化一下.先来看看运行效果: 具体代码: Mouse.java: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt

随机推荐