找回密码
 注册
快捷导航
查看: 3537|回复: 16

【原创】刚刚写的一个小游戏,算扑克牌24点的。

[复制链接] |自动提醒
阅读字号:

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
发表于 2007-3-4 02:19:39| 字数 147| - 中国–陕西–西安 电信 | 显示全部楼层 |阅读模式
最近没事用纸牌玩这个游戏,用4张扑克牌计算24点的,只能用加减乘除。
想起写一个小程序玩玩,这样没事就可以在办公室玩了。


大家可以随便试试。



20070304...修正了2个算法上的bug。
20070305...修正了1个bug。

[ 本帖最后由 superman_xyz 于 2007-3-5 11:25 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
T42 4WU PM1.7 512M 40G

1万

回帖

174

积分

12万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2004-4-17
银牌荣誉勋章(注册10年以上会员)年全勤勋章2022月全勤勋章银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)
发表于 2007-3-4 07:57:39| 字数 15| - 中国–江苏–南京 电信 | 显示全部楼层
不错!!楼主很厉害!!收了!!
简单的事情重复做,复杂的人生简单过。
回复 支持 反对

使用道具 举报

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
 楼主| 发表于 2007-3-4 08:32:30| 字数 42| - 中国–陕西–西安 电信 | 显示全部楼层
刚刚发现在让计算机求解时存在bug,导致某些需要括号来运算的组合算不出结果,有空改。
T42 4WU PM1.7 512M 40G
回复 支持 反对

使用道具 举报

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
 楼主| 发表于 2007-3-4 09:14:38| 字数 11| - 中国–陕西–西安 电信 | 显示全部楼层
上面的bug已经修正。
T42 4WU PM1.7 512M 40G
回复 支持 反对

使用道具 举报

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
 楼主| 发表于 2007-3-5 11:25:43| 字数 19| - 中国–陕西–西安 电信 | 显示全部楼层
修改了算法,试试算3,3,8,8看看!
T42 4WU PM1.7 512M 40G
回复 支持 反对

使用道具 举报

9万

回帖

603

积分

21万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2004-6-23
发表于 2007-3-5 12:07:58| 字数 38| - 中国–广东–深圳 电信 | 显示全部楼层
J,3,9,8
答案是J-8*9-3
看不懂啊.

另外, 一般J,Q,K是当10的.
回复 支持 反对

使用道具 举报

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
 楼主| 发表于 2007-3-5 12:28:27| 字数 205| - 中国–陕西–西安 电信 | 显示全部楼层
QUOTE:
原帖由 Drifter 于 2007-3-5 12:07 发表
J,3,9,8
答案是J-8*9-3
看不懂啊.

另外, 一般J,Q,K是当10的.


我在结果显示中做了个约定:不考虑乘除法的优先级。
另外,J,Q,K分别是11,12,13。
这样,J-8*9-3就得到24。

还有,没有过滤原理相同的方法,因为计算机不好判断。。。主要是我还没找到方法。:)

[ 本帖最后由 superman_xyz 于 2007-3-5 12:29 编辑 ]
T42 4WU PM1.7 512M 40G
回复 支持 反对

使用道具 举报

4692

回帖

88

积分

79

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2006-10-2
发表于 2007-3-5 12:56:50| 字数 7| - 中国–河北–廊坊 电信 | 显示全部楼层
不错,收了看看
Alienware M15x I7 GTX260M SSD U2311H
3P,HD2,NOKIA 9500,IP4
回复 支持 反对

使用道具 举报

3604

回帖

33

积分

7963

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2005-3-20
发表于 2007-3-5 12:57:22| 字数 24| - 中国–陕西–西安 电信/西北工业大学(电信出口) | 显示全部楼层
用什么做的?
能否公布一下源代码?让大家学习一下。
不是思考,而是一种直觉!
回复 支持 反对

使用道具 举报

9713

回帖

116

积分

3万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2003-4-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章
发表于 2007-3-5 15:00:35| 字数 14| - 中国–江苏–常州 电信 | 显示全部楼层
楼主能否做一个J Q K当10的
...
回复 支持 反对

使用道具 举报

469

回帖

32

积分

649

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2005-10-29
发表于 2007-3-5 15:14:11| 字数 14| - 中国–湖北–武汉 电信 | 显示全部楼层
小时候常玩的游戏!试哈!!!
回复 支持 反对

使用道具 举报

1万

回帖

115

积分

9万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2004-2-18
银牌荣誉勋章(注册10年以上会员)月全勤勋章银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)年全勤勋章2022年全勤勋章2023年全勤勋章2024
发表于 2007-3-5 16:39:50| 字数 44| - 中国–重庆–重庆 电信 | 显示全部楼层
多加点自定义就好玩了,比如自定义结果,哪就可以算21点了,JQK的点数自定,多了不少玩法
回复 支持 反对

使用道具 举报

460

回帖

1

积分

895

资产值

初级会员 Rank: 1

注册时间
2005-8-2
 楼主| 发表于 2007-3-5 16:53:01| 字数 1,167| - 中国–陕西–西安 电信 | 显示全部楼层
嗯,有时间我按照各位的提议修改一下吧。其实我最想先把雷同的计算方法过滤掉,呵呵。。
程序用VC写的,算法上没什么难度。我刚刚在网上搜了一下,找到一个别人写的代码,感觉比我的精简,感兴趣的可以看看:



  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>

  4. char op[3], o[5]="+-*/";
  5. float n[4], on[10];
  6. int used[4] = {0}, top=0, tp=0, x;

  7. void chk(float k);
  8. void search24(int d);
  9. float calc(float n1, float n2, char o);
  10. void make(int i, float p, float q, char o, int d);

  11. int main( void )
  12. {
  13.     scanf("%f%f%f%f", &n[0], &n[1], &n[2], &n[3]);
  14.     search24(0);
  15.     printf("No answer.\n");
  16.     return 0;
  17. }

  18. void chk(float k)
  19. {
  20.     if( (tp != 3) || ( fabs(k-24.0) > 0.001 )) return;
  21.     for(x=0; x<5; x+=2)
  22.         {
  23.         printf("%g %c %g = %g\n", on[x], op[x/2], on[x+1], calc(on[x], on[x+1], op[x/2]));
  24.         }

  25.     exit(0);
  26. }
  27. float calc(float n1, float n2, char o)
  28. {
  29.     switch(o){
  30.         case '+': return (n1+n2);
  31.         case '-': return (n1-n2);
  32.         case '*': return (n1*n2);
  33.         case '/': return (n1/n2);
  34.     }
  35. }
  36. void make(int i, float p, float q, char o, int d)
  37. {
  38.     if(fabs(q)>0.001 || o!='/')
  39.         n[i] = calc(p, q, o);
  40.     op[tp++] = o;  chk(n[i]);
  41.     search24(d+1); tp--;
  42. }

  43. void search24(int d)
  44. {
  45.     int i, j, k;
  46.     float p, q;
  47.     if(d>=3) return;
  48.     for(i=0; i<4; i++)
  49.         for(j=0; j<4; j++)
  50.             if( (i!=j)&& (used[i]+used[j] == 0) ) {
  51.                 used[j] = 1; p=n[i]; q=n[j];
  52.                 on[top++] = p; on[top++] = q;
  53.                 for(k=0; k<4; k++)
  54.                     make(i, p, q, o[k], d);
  55.                 n[i] = p; used[j] = 0;
  56.                 top -= 2;
  57.             }
  58. }
复制代码
T42 4WU PM1.7 512M 40G
回复 支持 反对

使用道具 举报

1

回帖

0

积分

1

资产值

入门会员 Rank: 1

注册时间
2009-12-16
发表于 2009-12-16 11:13:35| 字数 2| - 中国–湖北–武汉 电信 | 显示全部楼层
下载
回复 支持 反对

使用道具 举报

70

回帖

0

积分

109

资产值

入门会员 Rank: 1

注册时间
2004-5-17
发表于 2009-12-16 11:28:36| 字数 67| - 中国–江苏–南京 电信 | 显示全部楼层
QUOTE:
Posted by superman_xyz on 2007-3-5 11:25
修改了算法,试试算3,3,8,8看看!

这个要用分数的
回复 支持 反对

使用道具 举报

2万

回帖

145

积分

6988

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2004-3-13
银牌荣誉勋章(注册10年以上会员)金牌荣誉勋章(注册20年以上会员)铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2009-12-16 13:12:38| 字数 8| - 中国–北京–北京 电信/IDC机房 | 显示全部楼层
5 5 5 1 能算么?
X390 i7-85665U/13.3FHD-TP/16G/512G/UHD620/BT/FR/BL/MX Master
X60 T7200/SXGA+/3G/M500-120G/abgn/BT/F
回复 支持 反对

使用道具 举报

2万

回帖

145

积分

6988

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2004-3-13
银牌荣誉勋章(注册10年以上会员)金牌荣誉勋章(注册20年以上会员)铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2009-12-16 13:14:32| 字数 30| - 中国–北京–北京 电信/IDC机房 | 显示全部楼层
J Q K 当11 12 13才好玩么。,。。。当10多无聊。。。。。
X390 i7-85665U/13.3FHD-TP/16G/512G/UHD620/BT/FR/BL/MX Master
X60 T7200/SXGA+/3G/M500-120G/abgn/BT/F
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-21 18:47 , Processed in 0.178036 second(s), 59 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部