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

  利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的。程序主要功能已完成,目前还有部分细节未处理,待完成ing...对于代码中的错误,恳请批评指正。

游戏描述:

  A-10:分别代表数字 1-10。
  J,Q,K:均代表数字1。
  考虑到部分地方的规则,J,Q,K 也可以当成10 ,或者直接代表本身所代表的数字,即11、12、13来运算。
  使用加减乘除,能得出24者为赢,存在无解情况。
  游戏开始得分为1000分,每一秒钟减少1分,当答对一次时,分数增加100分。(暂未实现)
 
代码如下:
 
  /*
*
* Project : 计算24
*
* Author : 鬼狐_Ambrose
*
* Date : 2015年3月25日10:55:47
*
* Remark :纸牌中的10以0代替,减法得数均为正数
*/
#include <stdio.h>
#include <math.h>
#include <time.h> char getPokerCard(int value)
{
if(value==)
{
return 'A';
}
else if(value<)
{
return value+'';
}
else if(value==)
{
return '';
}
else if(value==)
{
return 'J';
}
else if(value==)
{
return 'Q';
}
else if(value==)
{
return 'K';
}
} void printAnswer(int flag,int *poker,char *oper,char *answer)
{
char a=getPokerCard(poker[]);
char b=getPokerCard(poker[]);
char c=getPokerCard(poker[]);
char d=getPokerCard(poker[]); switch(flag)
{
//1.((A*B)*C)*D
case :
printf("((%c%c%c)%c%c)%c%c\n",a,oper[],b,oper[],c,oper[],d);
break;
//2.(A*(B*C))*D
case :
printf("(%c%c(%c%c%c))%c%c\n",a,oper[],b,oper[],c,oper[],d);
break;
//3.(A*B)*(C*D)
case :
printf("(%c%c%c)%c(%c%c%c)\n",a,oper[],b,oper[],c,oper[],d);
break;
//4.A*(B*(C*D))
case :
printf("%c%c(%c%c(%c%c%c))\n",a,oper[],b,oper[],c,oper[],d);
break;
//5.A*((B*C)*D)
case :
printf("%c%c((%c%c%c)%c%c)\n",a,oper[],b,oper[],c,oper[],d);
break;
default:
break;
} //存储answer return ;
} double getValue(double num1,double num2,char oper)
{
double result; switch(oper)
{
case '+':
result=num1+num2;
break;
case '-':
result=fabs(num1-num2);
break;
case '*':
result=num1*num2;
break;
case '/':
result=num1/num2;
break;
default :
break;
} return result;
} int getResult(int *poker,char *oper,char *answer)
{
double t;
//将计算值取到
int a=poker[]>?:poker[];
int b=poker[]>?:poker[];
int c=poker[]>?:poker[];
int d=poker[]>?:poker[]; //穷举运算次序
//1.((A*B)*C)*D
t=;
t=getValue(a,b,oper[]);
t=getValue(t,c,oper[]);
t=getValue(t,d,oper[]); if(fabs(t-)<0.0001)
{
printAnswer(,poker,oper,answer);
return ;
} //2.(A*(B*C))*D
t=;
t=getValue(b,c,oper[]);
t=getValue(a,t,oper[]);
t=getValue(t,d,oper[]); if(fabs(t-)<0.0001)
{
printAnswer(,poker,oper,answer);
return ;
} //3.(A*B)*(C*D)
t=;
t=getValue(getValue(a,b,oper[]),getValue(c,d,oper[]),oper[]); if(fabs(t-)<0.0001)
{
printAnswer(,poker,oper,answer);
return ;
} //4.A*(B*(C*D))
t=;
t=getValue(c,d,oper[]);
t=getValue(b,t,oper[]);
t=getValue(a,t,oper[]); if(fabs(t-)<0.0001)
{
printAnswer(,poker,oper,answer);
return ;
} //5.A*((B*C)*D)
t=;
t=getValue(b,c,oper[]);
t=getValue(t,d,oper[]);
t=getValue(a,t,oper[]); if(fabs(t-)<0.0001)
{
printAnswer(,poker,oper,answer);
return ;
} return ;
} void printResult(int *poker,char *answer)
{
char OperKey[]={'+','-','*','/'};
char oper[];
int i,j,k;
int count=; for(i=;i<;i++)
for(j=;j<;j++)
for(k=;k<;k++)
{
oper[]=OperKey[i];
oper[]=OperKey[j];
oper[]=OperKey[k]; if(getResult(poker,oper,answer))
count++;
}
if(count)
{
printf("共%d种解法\n",count);
}
else
{
printf("该情况无解\n");
} return ;
} void printPoker(int *poker)
{
int i;
for(i=;i<;i++)
{
printf("%c ",getPokerCard(poker[i]));
}
printf("\n"); return ;
} void getRandomPokers(int *poker)
{
int i; //利用系统时间设定种子
srand((unsigned)time(NULL));
for(i=;i<;i++)
{
poker[i]=rand()%+;
} return ;
} main()
{
int poker[];
char answer[];
char c; printf("纸牌计算24点\n--------------------------------------------\n");
do
{
//生成随机纸牌
getRandomPokers(poker); printf("随机生成的纸牌为:\n"); //输出生成的纸牌
printPoker(poker); printf("\n任意键获得结果...\n");
getchar(); //输出计算结果
printResult(poker,answer); printf("\n回车键继续,其他键并回车退出...\n");
c=getchar(); printf("--------------------------------------------\n");
}
while(c=='\n'); return ;
}

C语言-纸牌计算24点小游戏的更多相关文章

  1. 24点小游戏app宣传文案

    24点小游戏app宣传文案 游戏背景 24点小游戏是传统的扑克牌游戏,是通过扑克牌来完成的竞争性智力游戏,除了希望能够消磨我们的空闲时间,加强同学们的临机和速算能力,还能够促进我们每个人的大脑和逻辑性 ...

  2. 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  3. python+pyqt5实现24点小游戏

    本文实例为大家分享了python实现24点游戏的具体代码,供大家参考,具体内容如下 描述:一副牌中A.J.Q.K可以当成是1.11.12.13.任意抽取4张牌,用加.减.乘.除(可加括号)把牌面上的数 ...

  4. C语言实现的猜数字小游戏(主要是对于自定义函数的运用)

    #include <stdio.h> #include <stdlib.h> #include<time.h>//加上此头文件的作用是什么?另外不加的话有什么影响? ...

  5. 利用c语言做简单的迷宫小游戏

                       #include <stdio.h> #define ROW 6 #define COL 6 // 封装打印地图的函数 void printMap(c ...

  6. C 语言实例 - 约瑟夫生者死者小游戏

    30 个人在一条船上,超载,需要 15 人下船. 于是人们排成一队,排队的位置即为他们的编号. 报数,从 1 开始,数到 9 的人下船. 如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了 ...

  7. C语言编程学习打造——做题游戏

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  8. 012-C语言小游戏之推箱子

    012-C语言小游戏之推箱子 一.创建游戏地图   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #define ROWS 11 #define COLS 12   char ...

  9. 2048小游戏代码解析 C语言版

    2048小游戏,也算是风靡一时的益智游戏.其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练.本篇分析2048小游戏的C语言实现代码. 前言 游戏截图:  游 ...

随机推荐

  1. JavaScript系列文章:自动类型转换-续

    在上一篇文章中,我们详细讲解了JavaScript中的自动类型转换,由于篇幅限制,没能覆盖到所有的转换规则,这次准备详细讲解一下. 上次我们提到了对象类型参与运算时转换规则: 1). 在逻辑环境中执行 ...

  2. shell脚本自动拉起启动程序

    一.我们先看看编写的shell脚本的内容,该shell的作用主要是实现监控某个程序崩溃之后就自动重启该进程. while true do procnum=` ps -ef|grep "tes ...

  3. Day12-mysql&&redis

    1. 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数 ...

  4. angular2学习--根模块

    最近有时间,学习一下angular2,根据自己的理解添加一些自己的理解,有什么不对的地方请指教, 学习的地址是https://angular.cn/ 下边是分享一下我学习过程 angular2和ang ...

  5. Linux学习之CentOS(二十一)--Linux系统启动详解

      在这篇随笔里面将对Linux系统的启动进行一个详细的解释!我的实验机器是CentOS6.4,当然对于现有的Linux发行版本,其系统的启动基本上都是一样的! 首先我们来看下Linux系统启动的几个 ...

  6. 利用Tomcat内置的servlet实现文件下载功能

    起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...

  7. ThinkPHP Where 条件中使用表达式

    本文转自:这里 Where 条件表达式格式为: $map['字段名'] = array('表达式', '操作条件'); 其中 $map 是一个普通的数组变量,可以根据自己需求而命名.上述格式中的表达式 ...

  8. Android中Context的理解及使用(一)——Context的作用

    Context的作用:用来访问全局信息的接口,通过Context进行资源的访问. 1.Context获取字符串资源: public class MainActivity extends AppComp ...

  9. 全文检索解决方案(lucene工具类以及sphinx相关资料)

    介绍两种全文检索的技术. 1.  lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...

  10. 《jQuery判断radio、checkbox、select 是否选中和设置选中问题以及获取选中值》总结

    <form> <input type="radio" name="gender" id="man" value=" ...