首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单一游戏Blackjack

简单一游戏Blackjack
EN

Code Golf用户
提问于 2013-12-10 23:31:48
回答 2查看 510关注 0票数 4

这是一个非常精简的版本的BlackJack KOTH竞赛.

这就是目标:

执行时:有两个输入,"H“来点击(有代码交易一张卡),"S”站起来(停止拿牌,让经销商尝试赢)。

编码规则:

  1. 为了这一挑战的简单性,没有下注或两手分开。
  2. 西装是HDCS,分别代表红心,钻石,棍棒和黑桃。
  3. 王牌必须被格式化为A23456789TJQK,其中T是10,因此TH是心脏的10,等等。
  4. A值1或11,扑克牌值10分。一场完美的比赛是21分。
  5. 如果你超过21分,输出和卡片必须显示“萧条”。
  6. 如果经销商超过21分,而你站着,用卡片输出必须显示“赢”
  7. 如果经销商打你,即使你站着,输出的卡片必须显示“输”
  8. 如果经销商与你的站立得分相匹配,卡片输出必须显示“推”。
  9. 经销商必须站在17至21之间。
  10. 如果你站着,它会计算你的分数并显示出来(见下文),然后进入经销商播放模式。如果经销商站起来或失败,它计算它的分数和显示它。
  11. 标准的52张牌在一副牌中,不可以产生复本。
  12. 输出必须类似如下:H您的手: 3H H您的手: 3H 8S H您的手: 3H 8S 9D S站在…你的手:3H-8s9D=20分我的手:2C5H8H9s=24分获胜
  13. 最短代码获胜
EN

回答 2

Code Golf用户

回答已采纳

发布于 2013-12-11 16:45:36

高尔夫-基本84,852个字符(所有遵守的规则)

代码语言:javascript
复制
:"YOUR HAND:"_Str1:-1_X:0_O:0_A:0_P:2_H:3_2l`Ii`I@I=2o`H#o`Sl`H:Str1+" "_Str1:round(rand*13,0)_R@R=0:Str1+"A"_Str1@R=1:Str1+"2"_Str1@R=2:Str1+"3"_Str1@R=3:Str1+"4"_Str1@R4:Str1+"5"_Str1@R=5:Str1+"6"_Str1@R=6:Str1+"7"_Str1@R=7:Str1+"8"_Str1@R=8:Str1+"9"_Str1@R=9:Str1+"10"_Str1@R=10:Str1+"J"_Str1@R=11:Str1+"Q"_Str1@R=12:Str1+"K"_Str1@R=1:A+10_A@R<9:P+R+1_P#P+10_P:round(rand*4,0)_R@R=0:Str1+"H"_Str1@R=1:Str1+"D"_Str1@R=2:Str1+"C"_Str1@R=3:Str1+"S"_Str1d`Str1@P>20:o`So`Il`St`STANDING... "+Str1+", POINTS:"d`P@P=21 or P+A=21:"WIN"_Str2@P>21:"BUST"_Str2:round(rand*8,0)_R:"MY HAND: "_Str3l`X:X+1_X:round(rand*8,0)@R=0:Str3+"9H"_Str3@R=1:Str3+"9D"_Str3@R=2:Str3+"9C"_Str3@R=3:Str3+"9S"_Str3@R4:Str3+"JH"_Str3@R=5:Str3+"QD"_Str3@R=6:Str3+"KC"_Str3@R=7:Str3+"KS"_Str3@R<4:O+9_O#:O+10_O@Xo`E#o`Xl'Et`Str3+"= POINTS:"d`O@P=O:"PUSH"_Str2@P<O:"LOSE"_Str2d`Str2

全是我自己编码的!

解释

  • 初始化变量;将0放在P中,"YOUR HAND:"放在Str1
  • 输入,HS (不需要引号)
  • 基于输入,goto Lbl HLbl S
  • 如果输入为H,则生成一张随机卡片,添加一个空格、一个数字/字母和一个适合Str1
  • 根据生成的卡,将卡的值添加到P,并将1添加到A (ace计数)
  • 获得更多的输入
  • 如果输入为S,则计算点数和经销商的点数
  • 根据生成的点将WINBUST放入Str2
  • 展示经销商的手
  • 计算您的积分和经销商的点数,有条件地将LOSEPUSH放在Str2
  • 显示WINPUSHLOSEBUST

样本输出

代码语言:javascript
复制
?H
YOUR HAND: 9C
?H
YOUR HAND: 9C 7S
?H
YOUR HAND: 9C 7S 4S
?S
STANDING... YOUR HAND: 3H 8S 9D, POINTS:
                                      20
MY HAND: 9H KS = POINTS:
                                      19
WIN
票数 0
EN

Code Golf用户

发布于 2013-12-11 16:39:27

Javascript 838

第一个版本,没有优化!并非所有规则都得到充分遵守:

代码语言:javascript
复制
!function(){var f=require("readline").createInterface(process.stdin,process.stdout),g=[],h=function(){for(var b;!b||-1<g.indexOf(b);)b="A23456789TJQK".charAt(13*Math.random()|0)+"HDCS".charAt(4*Math.random()|0);g.push(b);return b},k=function(b){var a=0,d=0;for(z=b.length;z--;){var c=b[z].charAt(0);/[TJQK]/.test(c)?a+=10:/[2-9]/.test(c)?a+=+c:"A"==c&&(d++,a++)}for(;d--;)21>=a+10&&(a+=10);return a};(function(){var b=[],a=[],d=0,c=0;f.prompt();f.on("line",function(e){e=e.charAt(0);"H"==e&&(b.push(h()),
c=k(b),console.log("Your hand: "+b+" = "+c+" points"),21<c&&(console.log("LOSE"),process.exit(0)));if("S"==e){for(;17>(d=k(a));)a.push(h());console.log("My hand: "+a+" = "+d+" points");21<d||d<c?console.log("WIN"):d>c?console.log("LOSE"):console.log("DRAW");process.exit(0)}f.prompt()}).on("close",function(){process.exit(0)})})()}();

用nodeJS执行它

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/15789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档