大约在2007年1月,我想起了C和Javascript之间的相似之处,我想知道是否有可能对我最近的获奖作品进行翻译(第19个IOCCC,大多数便携国际象棋),我在一个下午这样做了,结果是目前世界上最小的Javascript国际象棋程序,也检查我的JS1K微型国际象棋。
您可以使用该控件选择促销项目。某些浏览器会显示脚本太慢的消息,请指明您不想停止脚本。
如果你想玩黑色的棋子,点击这个按钮来强制移动,你需要在每次移动后都点击一下。
除了将指针转换为数组访问之外,大部分代码都与原始代码相似。最近,我用Toledo Nanochess的代码更新了内核,2009年11月20日。
游戏级别固定在3层深度,你可以修改它(在源代码中搜索/*PLY*/),要小心,因为每多一层都会慢一个数量级。
这个代码的内部工作原理的简要描述可以在托莱多国际象棋1或CheckMy Toledo Nanochess书的页面上找到。
来自拉脱维亚的ChessForeva提供了一个带有3D面板的版本,包括缩放和旋转功能,也可以作为Google Gadget使用。
由迈克尔·斯通(Michael Stone)博士设计的澳大利亚版Toledo Chess(Rooloose版)具有更好的图形效果,还有一个适用于Android手机的版本。
来自意大利的Stefano Gioffré,具有更好的CSS渲染的版本,也是基于Jacob Seidelin开发的3D棋盘渲染器的3D版本。
来自土耳其的Azer Koçulu,Github的版本,界面简单,适用于更大的项目,同样的程序员在他的网站multiplayerchess.com上使用。
来自英国的Phil Mainwaring,托莱多国际象棋的版本,巧妙地集成了使用数据协议的图形,大小为2235字节。
来自西班牙的安德烈斯·莫雷诺(Andrés Moreno),3个版本的托莱多国际象棋(Toledo Chess),经过修改后的可视化和核心的细微变化。
由弗雷德里克·温茨(Frédéric untz)著的《来自法国》(From France),对我的Javascript国际象棋版本进行了修改,以便在elementaire.org上帮助教孩子们国际象棋。
在法国,ecrucru创建了一个带有UCI接口的Toledo Javascript Chess版本,可以在node.js上运行。
JS1K大赛于2010年8月1日星期日开始,由Peter van der Zee组织,评委包括Thomas Fuchs(《手写体》的作者)、Remy Sharp、Patrick H.Lauke和Christopher Williams,他们都是Javascript编程专家。大赛的目的很简单,参赛者应该创建1024字节(即1千字节)的最具刺激性的Javascript程序,而不使用任何外部文件。比赛于9月10日结束。
我在8月8日得到了比赛的消息,脑海中浮现出用1K的Javascript编写国际象棋的挑战,所以基于我在6个小时内用2.2K的Javascript国际象棋,我设法把它写到了1K。我不得不去掉卡斯特、通行证,限制晋升为女王,只留下一个简单的棋盘,上面写着棋子的字母,点击起点广场和目标广场移动棋子。
第二天,我把它发给了大赛,你仍然可以在网上把它作为#226的参赛作品播放。请注意,我的Javascript代码的1018八位字节包括人工智能以及用户界面和棋盘可视化。有些人注意到这不是一件容易的事。
出版两个小时后,狂热的Laxminarayan Kamath给我发了一封电子邮件,建议我放置UnicodeGraphics和一个优化提示,稍后我会用到。在周三11号,在另外6个小时的工作中,我剪切了50多个字节,腾出足够的空间来放置国际象棋棋子,我仔细打量了棋盘,以便舒适地实现可视化,并照亮了点击的方块。就在同一天,我把这个更新发送给了大赛(它的编号是298),图片让公众大吃一惊。
西班牙人Román Cortés亲切地与我分享了节省字节的优化技巧几天后,我同时重写了ArtifialIntelligence以节省空间,并在游戏中引入了额外的空间(Math.Random),还可以在FinalClick上即时更新棋盘。这是第三次更新(条目435),收到了大量的评论,在推特上被提及了数百次,来自美国、西班牙、中国、日本、俄罗斯、法国和德国的论坛和博客的访问者数以千计。我估计这个版本在全世界至少有25000人玩,这个数字远远超过了我上一个版本的估计10万人。
一位匿名的德国人报告说,很容易强迫我的程序愚弄同伴,我意识到额外的“情报”可以解决这个问题,我还对最后移动的作品进行了照明。这是第四次更新(条目699)。
就在我更新的同一天,我收到了一封来自英语的Matt round的电子邮件,他告诉我他的一篇文章,是关于我的国际象棋版本--传奇的1K ZX81国际象棋,我的象棋打成平局,而不是给对手。我立刻知道它可以被增强,所以我再次上了任务,很难“Crash”这些最后的字节(在这里我终于用到了Kamath&39;s优化技巧),我做到了,这是我在比赛结束前的最后一次更新(参赛750)。
它赢了!2010年9月25日,Thomas Fuchs和RemySharp在德国柏林的jsConf.eu会议上展示了获胜的JS1K参赛作品,我的小国际象棋获得了第二名,引发了一波又一波的提及。
这是我的Javascript国际象棋的最终版本,长度为1023字节,请注意,原始版本是在一行中编写的,并且这是纯Javascript,必须由诸如<;body>;<;scriptsrc=";iny_chess.js=#34;>;<;/body>;这样的HTML标记来调用(<;body>;<;/body>;/body>;
要在本地玩这款小小的国际象棋,请点击这里或在JS1K网站上玩。你也可以从我的Toledo Nanochess书中获得评论源代码。
我设法得到了一个1024字节的版本(是的,这是可能的!),但是可视化是黑白的,而且游戏质量也很差,可以作为原型,但对于比赛来说还不够好。它被存档了(虽然我可以在这里发布它,如果有有趣的人:),而不是我最后一个条目的扩展版本,包括角色和通过,这里是1251字节的版本。
//国际象棋(C)2010年?SCAR Toledo G.for(B=i=y=u=b=i=5-5,x=10,z=15,i=[],l=[];l[B]=(";ustvrtsuqqqqqqqq";+";yyyyyyyy}{|~z|{}@G@TSb~?A6J57IKJT576,+-48HLSUmgukgg OJNMLK IDHGFE";).charCodeAt(B)-64,B++<;120;I[B-1]=B%x?B/x%x<;2|B%x<;2?7:B/x&;4?0:l[u++]:7);函数X(c,h,e,S,s){c^=8;for(var T,o,L,E,D,O=20,G,N=-1e8,n,g,d=S&;&;X(c,0)>;1e4,C,R,A,K=78-h<;<;9,a=c?x:-x;++O<;99;)if((o=I[T=O])&;&;(G=o&;z^c)<;7){A=G--&;2?8:4;C=9-o&;z?l[61+G]:49;do{R=I[T+=l[C]];g=D=G|T+a-e?0:e;if(!R&;&;(G||A<;3||g)||(1+R&;z^c)>;9&;&;G|A>;2){if(!(2-R&;7))return K;for(E=n=G|I[T-a]-7?o&;z:6^c;E;E=!E&;&;!d&;&;!(G=T,D=T<;O?G-3:G+2,I[D]<;z|I[D+O-T]|I[T+=T-O])){L=(R&;&;l[R&;7|32]*2-h-G)+(G?0:n-o&;z?110:(D&;&;14)+(A<;2)+1);if(S>;h||1<;S&;S==h&;&;L>;2|d){I[T]=n,I[g]=I[D],I[O]=D?I[D]=0:0;L-=X(c,h+1,E=G|A>;1?0:T,S,L-N);if(!(h||S-1|B-O|T-b|L<;-1e4))返回W(y=E),c&;&;setTimeout。Z||X(c,0)>;1e4;I[O]=o;I[T]=R;I[D]=I[g];D?I[g]=G?0:9^c:0}if(L>;N||!h&;L==N&;&;Math.random()<;.5)if(N=L,S&>1)IF(h?s-L<;0:(B=O,b=T,0))Return N}}While(!r&;G&>2||(T=O,G|A>;2|z<;o&;!R&;&;++C*--A))}return-K+768<;N|d&;&;N}function W(){i=";<;table>;";;for(u=18;u<;98;document.body.innerHTML=i+=++u%x-9?";<;th Width=60 Height=60 onclick=';I[b=";+u+";]&;8?W():X(0,0,y,1)';Style=';font-size:50px';bgcolor=#";+(u-B?u*.9&;1||9:";d";)+";0f0e0>;&;#";+(I[u]&;15?9808+l[67+(I[u]&;15)]:160)+";;";:u++&;&;";&;lt;tr&;gt;";)B=b}W()<;/Small&>;/Pre&>;<;div class=";texto&34;>;在此页面上下载带有源代码的ZIP文件。<;/div&>;a name=";othe";>;<;/a>;<;h2>;Other Small Javascript国际象棋程序<;/h2&>;&div class=";texto&34;&。来自新西兰的道格拉斯·巴格纳尔为现已不复存在的http://www.the5k.org/";>;5K Javascript大赛编写了第一个5KJavascript国际象棋游戏。目前基于他源代码的最小程序超过4千字节。这些程序和其他程序都可以在href=";http://p4wn.sourceforge.net/";>;http://p4wn.sourceforge.net/<;/a>;.<;/div>;<;div上找到。英国华威大学的数学家约翰·A·穆迪也写了自己的href=";http://www.maths.warwick.ac.uk/~moody/chess.html";>;。小Javascript象棋游戏/a&>大小为2.7KB,目前不能检测到非法走法,也不能处理投掷和过路人。<;/div&>;<;a name=";link";>;<;/a>;<;h2>;Related链接/H2&>;ul&>t;<;li>;the<;a href=&34;chess3.html#book";/lt;a href=&34;chess3.html#book";a href=&34;chess3.html#book&34;a href=&34;chess3.html#book&34;a href=&34;chess3.html#book&34;/a&>包含Javascript One所基于的程序的分割源代码。<;/li&>;li&>;a href=";http://jorgerubira.blogspot.com/";>;Jorge rubia;/a>;来自西班牙语<;a href=";http://www.javahispano.org/";>;Asociación Javahispano;/a&>mademe an<;a href=";Http://www.javahispano.org/contenidos/es/javahispano_podcast__098__javascript_1k_entrevista_a_oscar_toledo/";>;interviewin Javahispano Podcast第98<;/a>;(西班牙语音频)<;/li&>;li>;li>;Milenio报纸(墨西哥)发表了一篇关于我的评论:一位href=";http://www.milenio.com/node/546303";>;Mexican在全球Javascript程序员大赛中获得第二名。/a&>(西班牙语)<;/li&>;<;<;li&>Quo杂志(墨西哥)2010年11月第157期发表了一篇关于我的小笔记。<;/li&>;<;<;a href=";http://bitelia.com/";>;Bitelia<;/a>;对我的<;a href=&34;发表了评论。<;/li&>;<;<;li>;Quo Magazine(墨西哥)发表了一篇关于我的小笔记,2010年11月第157期。Http://bitelia.com/2010/09/motor-de-ajedrez-javascript-de-1014-bytes";hrefang=";es&34;>;Javascript象棋引擎,1014字节/a>;(西班牙语)。<;/li>;<;The<;a href=";http://malevolent.com/524";>;war of 1K象棋程序<;/a>;,查看这篇有趣的马特回合文章。/li&>;<;li&>德国著名杂志<;a href=";http://www.chip.de/";>;Chip<;/a>;精选了来自<;a http://js1k.com/";>;JS1K Contest;/a&>的最酷的Javascript演示,参见";<;a href=&34;Http://www.chip.de/bildergalerie/Die-coolsten-Javascript-Demos-mit-1KB-Galerie_44202334.html?show=8";Hrefang=>;模具冷却爪哇