比赛正式结束。蓝队获胜!
我autoran 2 组的50个战斗和令人惊讶的,蓝为他们赢得了所有100个。从统计数据来看,很明显,PhiNotPi和Sp3000的合作条目是真正的英雄。你们两个干得好!实际上,如果您取消了Blue Team的其他所有成员的资格,Sphibot仍然会打出很好的战斗。一些红队人员正计划拆除Sphibot,但是这种努力似乎正在消失。对不起,红队。
竞赛已正式结束,但这并不意味着您不能再回答,这仅意味着我永远不会再宣布官方获胜者。欢迎两个团队继续提交机器人程序,只是为了好玩。只要以后没有任何输入中断,控制器将保持运行状态并保持运行状态。
这是一场山丘之王的比赛,但是将有两支球队参加比赛,而不是每个人都在互相对抗:红色和蓝色。获胜者只有一个。
您所在的团队取决于您的PPCG用户ID号。要找到此内容,请单击屏幕顶部的头像(您必须登录),然后查看打开的页面的网址。后面的数字users/
是您的身份证号:
https://codegolf.stackexchange.com/users/[id number]/[display name]
https://codegolf.stackexchange.com/users/26997/calvins-hobbies
请注意,对于不同的Stack Exchange站点,此数字是不同的。
如果您的ID是偶数,则说明您是Red小组的成员。
如果您的ID是一个奇数,那么您就在Blue团队中。
无法更改团队。
您必须与您的团队一起努力,以在某种战场上击败其他团队,在这种情况下,每个用户都在战场的128×128网格上控制其团队颜色的“像素”。像素可以四处移动,与队友进行交流并取出另一个团队的像素。如果任何人都可以创建任意数量的像素,那将一发不可收拾,因此每个用户只能对此问题提交一个答案。
此堆栈代码段(此小提琴 [ 全屏 ] 的缩小版本)是整个比赛的控制器。它会自动读取提交的内容,确保其有效,并在团队之间进行战斗。它随时可以使用JavaScript在浏览器中完成此操作。由于JavaScript是大多数浏览器支持的唯一客户端脚本语言,因此所有提交内容也必须使用JavaScript编写。
function toggleDebug(){debug=$("#debug").is(":checked")}function rnd(e){return Math.floor(Math.random()*e)}function shuffle(e){for(var t,a,r=e.length;r;t=rnd(r),a=e[--r],e[r]=e[t],e[t]=a);return e}function maskedEval(e,t){var a={};for(i in this)a[i]=void 0;for(i in t)t.hasOwnProperty(i)&&(a[i]=t[i]);return new Function("with(this) { "+e+";}").call(a)}function createBattle(e,t,a,r){function n(){var e=rnd(i.length),t=i[e];return i.splice(e,1),t}var l={};l.width=l.height=128,l.totalMoves=2048,l.radius=16,l.msgMaxLength=64,l.timeLimit=15,l.move=0,l.redToMove=a,l.animated=r,l.running=!1,l.over=!1;for(var o=0,i=new Array(l.width*l.height),d=0;d<l.height;d++)for(var s=0;s<l.width;s++)i[o++]={x:s,y:d};l.redTeam=shuffle(e.slice()),l.redMsgs={},l.redKills={};for(var o=0;o<l.redTeam.length;o++){var u=n();l.redTeam[o].x=u.x,l.redTeam[o].y=u.y,l.redMsgs[l.redTeam[o].id]="",l.redKills[l.redTeam[o].id]=0}l.blueTeam=shuffle(t.slice()),l.blueMsgs={},l.blueKills={};for(var o=0;o<l.blueTeam.length;o++){var u=n();l.blueTeam[o].x=u.x,l.blueTeam[o].y=u.y,l.blueMsgs[l.blueTeam[o].id]="",l.blueKills[l.blueTeam[o].id]=0}return l}function drawBattle(e){function t(e){var t=3*e.x,a=3*e.y;ctx.fillRect(t,a,3,3),showNames.is(":checked")&&ctx.fillText(e.title,t+5,a+12)}function a(t){ctx.beginPath(),ctx.arc(3*t.x,3*t.y,3*e.radius,0,2*Math.PI),ctx.closePath(),ctx.fill()}e.animated&&(ctx.clearRect(0,0,canvas.width,canvas.height),showCircles.is(":checked")&&(ctx.fillStyle="rgba(255, 0, 0, 0.1)",e.redTeam.forEach(a),ctx.fillStyle="rgba(0, 0, 255, 0.1)",e.blueTeam.forEach(a)),ctx.fillStyle="red",e.redTeam.forEach(t),ctx.fillStyle="blue",e.blueTeam.forEach(t),moveCounter.text((e.move+1).toString()))}function movePlayer(e,t,a,r,n,l,o,i){function d(a){t.id!==a.id&&Math.sqrt(Math.pow(t.x-a.x,2)+Math.pow(t.y-a.y,2))<e.radius&&(u.push({x:a.x,y:a.y,id:a.id}),debug&&console.log(a.title+" is near"))}debug&&(console.log("--- Moving "+t.title+" ---"),console.log("position before move = ("+t.x.toString()+", "+t.y.toString()+")"));var s={};s.move=a,s.x=t.x,s.y=t.y,s.tCount=r.length,s.eCount=n.length,s.setMsg=function(a){"string"==typeof a&&(l[t.id]=a.length>e.msgMaxLength?a.substring(0,e.msgMaxLength):a,debug&&console.log('set message to "'+l[t.id]+'"'))},s.getMsg=function(e){var t=l.hasOwnProperty(e)?l[e]:void 0;return debug&&console.log('got message "'+t+'" from player with id '+e.toString()),t};var u=[];r.forEach(d),s.tNear=u,u=[],n.forEach(d),s.eNear=u,-1===t.id&&(s.console=console);var c=0,g=performance.now();try{c=maskedEval(t.code,s)}catch(v){c=0,debug&&(console.log("encountered error:"),console.log(v))}g=performance.now()-g,debug&&console.log("time taken = "+g.toString()+"ms"),g>e.timeLimit&&(c=0,debug&&console.log("went over the time limit of "+e.timeLimit+"ms"));var m=t.x,h=t.y;switch(c){case 1:e.redToMove?++m:++h;break;case 2:e.redToMove?--m:--h;break;case 3:++m,--h;break;case 4:--m,--h;break;case 5:--m,++h;break;case 6:++m,++h}m>=0&&m<e.width&&h>=0&&h<e.height&&(t.x=m,t.y=h),debug&&console.log("move direction = "+c);for(var f=0;f<n.length;f++)t.x===n[f].x&&t.y===n[f].y&&(debug&&console.log("took out "+n[f].title),++i[t.id],o[n[f].id]="X",n.splice(f--,1))}function advanceBattle(e){debug&&console.log("====== "+(e.redToMove?"Red ":"Blue ")+e.move.toString()+" ======");var t,a,r,n,l;e.redToMove?(t=e.redTeam,a=e.blueTeam,r=e.redMsgs,n=e.blueMsgs,l=e.redKills):(t=e.blueTeam,a=e.redTeam,r=e.blueMsgs,n=e.redMsgs,l=e.blueKills),t.forEach(function(o){movePlayer(e,o,Math.floor(e.move/2)+1,t,a,r,n,l)}),drawBattle(e);var o;return 0===a.length?(o=e.redToMove?1:-1,e.over=!0):++e.move>=e.totalMoves&&(o=e.redTeam.length>e.blueTeam.length?1:e.redTeam.length<e.blueTeam.length?-1:0,e.over=!0),e.redToMove=!e.redToMove,debug&&"undefined"!=typeof o&&console.log("win status = "+o.toString()),o}function newBattle(){if(0===redTeam.length||0===blueTeam.length)return void alert("Each team must have at least one player.");"undefined"!=typeof interval&&clearInterval(interval);var e=parseInt($("#delay").val());return isNaN(e)||0>e?void alert("Delay must be a non-negative integer."):(debug&&console.log("Created new battle with delay "+e.toString()),battle=createBattle(redTeam,blueTeam,$("#redMovesFirst").is(":checked"),!0),drawBattle(battle),void moveCounter.text("0").css("color","black"))}function reportKills(e,t){for(var a="Red Kills:\n",r=0;r<redTeam.length;r++)a+=e[redTeam[r].id].toString()+" by "+redTeam[r].title+"\n";a+="\nBlue Kills:\n";for(var r=0;r<blueTeam.length;r++)a+=t[blueTeam[r].id].toString()+" by "+blueTeam[r].title+"\n";return a}function intervalCallback(){var e=advanceBattle(battle);"undefined"!=typeof e&&(clearInterval(interval),battle.running=!1,alert([0===e?"Tie!":e>0?"Red Wins!":"Blue Wins!","Red remaining: "+battle.redTeam.length,"Blue remaining: "+battle.blueTeam.length,"\n"].join("\n")+reportKills(battle.redKills,battle.blueKills)))}function run(){if("undefined"!=typeof battle&&!battle.running&&!battle.over){battle.running=!0;var e=parseInt($("#delay").val());if(isNaN(e)||0>e)return void alert("Delay must be a non-negative integer.");interval=setInterval(intervalCallback,e)}}function pause(){"undefined"!=typeof battle&&(battle.running=!1),"undefined"!=typeof interval&&clearInterval(interval)}function step(){"undefined"==typeof battle||battle.running||battle.over||intervalCallback()}function autorunBattles(){function e(e){for(var t,i=createBattle(redTeam,blueTeam,e,!1);!i.over;)if(t=advanceBattle(i),"undefined"!=typeof t){i.over=!0,1===t?++a:-1===t?++n:++r;for(var d in i.redKills)i.redKills.hasOwnProperty(d)&&(l[d]+=i.redKills[d]);for(var d in i.blueKills)i.blueKills.hasOwnProperty(d)&&(o[d]+=i.blueKills[d])}}if(pause(),battle=void 0,0===redTeam.length||0===blueTeam.length)return void alert("Each team must have at least one player.");var t=parseInt($("#N").val());if(isNaN(t)||0>t)return void alert("N must be a non-negative integer.");console.log("Autorunning "+t.toString()+" battles");for(var a=0,r=0,n=0,l={},o={},i=0;i<redTeam.length;i++)l[redTeam[i].id]=0;for(var i=0;i<blueTeam.length;i++)o[blueTeam[i].id]=0;for(var i=0;t>i;i++)console.log("Battle "+i.toString()),e(i%2===0);alert([a===n?"Tie overall!":a>n?"Red wins overall!":"Blue wins overall!","Red wins: "+a.toString(),"Blue wins: "+n.toString(),"Ties: "+r.toString(),"\n"].join("\n")+reportKills(l,o))}function changeSelect(e){var t=e?redTeam:blueTeam,a=$(e?"#redSelect":"#blueSelect").val(),r=$(e?"#redCode":"#blueCode"),n=$(e?"#redLink":"#blueLink");null!==a&&a>-1?(r.text(t[a].code),n.attr("href",t[a].link)):(r.text(""),n.attr("href","javascript:;"))}function loadEntries(){function e(e,t){url="https://api.stackexchange.com/2.2/questions/"+qid.toString()+"/answers?page="+e.toString()+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter=!JDuPcYJfXobC6I9Y-*EgYWAe3jP_HxmEee",$.get(url,t)}function t(d){d.items.forEach(function(e){function t(e,t){t.append(" ").append($("<a>").text(e.owner.display_name).attr("href",e.link))}function n(e){return $("<textarea>").html(e).text()}var d=e.owner.user_id%2===0,s=d?redTeam:blueTeam;if(e.owner.display_name=n(e.owner.display_name),e.hasOwnProperty("last_edit_date")&&e.last_edit_date-e.creation_date>r||dq.indexOf(e.owner.user_id)>-1||l.indexOf(e.owner.user_id)>-1)return void t(e,o);l.push(e.owner.user_id);var u=a.exec(e.body);if(null===u||u.length<=1)return void t(e,i);var c={};c.id=e.owner.user_id,c.title=e.owner.display_name+" ["+e.owner.user_id.toString()+"]",c.code=n(u[1]),c.link=e.link;var g=$(d?"#redSelect":"#blueSelect");g.append($("<option>").text(c.title).val(s.length)),s.push(c)}),d.has_more?e(++n,t):($("#loadStatus").hide(),$("#redCount").text(redTeam.length.toString()),$("#blueCount").text(blueTeam.length.toString()),0===o.html().length&&o.html(" none"),0===i.html().length&&i.html(" none"))}var a=/<pre><code>((?:\n|.)*?)\n<\/code><\/pre>/,r=28800,n=1,l=[],o=$("#disqualified"),i=$("#invalid");pause(),battle=void 0,redTeam=[],blueTeam=[],$("#loadStatus").show(),$("#redSelect").empty(),$("#redCode").empty(),$("#redLink").attr("href","javascript:;"),$("#blueSelect").empty(),$("#blueCode").empty(),$("#blueLink").attr("href","javascript:;");var d=$("#testbot").val();if(d.length>0){debug&&console.log("Using test entry");var s={id:-1,title:"TEST ENTRY [-1]",link:"javascript:;",code:d};$("#testbotIsRed").is(":checked")?(redTeam.push(s),$("#redSelect").append($("<option>").text(s.title).val(0))):(blueTeam.push(s),$("#blueSelect").append($("<option>").text(s.title).val(0)))}e(1,t)}var qid=48353,dq=[],ctx,moveCounter,showNames,showCircles,debug=!1,battle,redTeam,blueTeam,interval;$(document).ready(function(){ctx=$("#canvas")[0].getContext("2d"),moveCounter=$("#moveCounter"),showNames=$("#showNames"),showCircles=$("#showCircles"),loadEntries()});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>html *{font-family: Consolas, Arial, sans-serif;}select{width: 100%; margin: 12px 0 0 0;}button, select, input{font-size: 100%;}input{text-align: right;}textarea{font-family: "Courier New", monospace;}textarea[readonly]{background-color: #eee; width: 100%;}canvas{margin: 12px 0 0 0; border: 2px solid gray;}.redWrapper, .blueWrapper{width: 30%;}.redWrapper{float: left;}.blueWrapper{float: right;}.arenaWrapper{width: 40%; display: inline-block;}.redTeam, .blueTeam, .arena{padding: 12px;}.arena{text-align: center;}.redTeam, .blueTeam{border-style: solid; border-width: medium;}.redTeam{border-color: red; background-color: #fee;}.blueTeam{border-color: blue; background-color: #eef;}.redTitle, .blueTitle, .arenaTitle{text-align: center; font-size: 200%;}.redTitle, .blueTitle{font-weight: bold;}.redTitle{color: red;}.blueTitle{color: blue;}.control{margin: 12px 0 0 0;}.count{font-size: 75%; margin: 0 0 12px 0;}.footnotes{font-size: 75%; clear: both; padding: 12px;}</style><div id='loadStatus'> Loading entries...</div><div> <div class='redWrapper'> <div class='redTeam'> <div class='redTitle'> Red Team </div><select id='redSelect' size='20' onchange='changeSelect(true)'> </select> <div class='count'> <span id='redCount'></span> players </div>Code: <br><textarea id='redCode' rows='12' readonly></textarea> <br><a id='redLink' href='javascript:;'> Answer Link </a> </div></div><div class='arenaWrapper'> <div class='arena'> <div class='arenaTitle'> Battlefield </div><canvas id='canvas' width='384' height='384'> Your browser does not support the canvas tag. </canvas> <div>Move <span id='moveCounter'>0</span></div><br><div> <div class='control'> <input id='showNames' type='checkbox'>show names <input id='showCircles' type='checkbox'>show circles </div><div class='control'> <input id='redMovesFirst' type='checkbox'>red moves first </div><div class='control'> <input id='delay' type='text' size='4' value='20'> millisecond delay </div><div class='control'> <button type='button' onclick='newBattle()'> New Battle </button> <button type='button' onclick='run()'> Run </button> <button type='button' onclick='pause()'> Pause </button> <button type='button' onclick='step()'> Step </button> </div><hr class='control'> <div class='control'> <button type='button' onclick='autorunBattles()'> Autorun N Battles </button> N = <input id='N' type='text' size='4' value='16'> </div><div class='footnotes'> Autoruns may hang browser tab until complete. </div></div></div></div><div class='blueWrapper'> <div class='blueTeam'> <div class='blueTitle'> Blue Team </div><select id='blueSelect' size='20' onchange='changeSelect(false)'> </select> <div class='count'> <span id='blueCount'></span> players </div>Code: <br><textarea id='blueCode' rows='12' readonly></textarea> <br><a id='blueLink' href='javascript:;'> Answer Link </a> </div></div></div><div class='footnotes'> Test Entry: (id = -1) <input id='testbotIsRed' type='checkbox'>On Red Team <br><textarea id='testbot' rows='1' cols='32'></textarea> <br><button type='button' onclick='loadEntries()'> Reload with test entry </button> <br><br>This was designed and tested in Google Chrome. It might not work in other browsers. <br>Disqualified entries:<span id='disqualified'></span> <br>Could not find code block:<span id='invalid'></span> <br><input id='debug' type='checkbox' onclick='toggleDebug()'>Debug messages <br></div>
为了提高可见度,Snippet的战场缩放了3倍,因此为384×384实际像素,“像素”为3×3。
Pixel Team Battlebots-概述
玩家们
该问题的每个有效答案都代表一个玩家。(有关有效性的详细信息,请参阅“规则和取消资格”。)每个玩家都可以控制128×128单元战场上的单个1×1单元(又称像素)。红队的队员有红色像素,蓝队的队员有蓝色像素。
战役
一战是之间的斗争都在两队球员,即使球队不具备的玩家数量相等。战斗的开始是将每个玩家放置在战场上的任意位置,即从左上角的(0,0)到右下角的(127,127)的任何整数坐标。确保没有两个玩家会从同一位置开始。
动作
每场战斗分为2048 步。实际上,只有一支球队在每一步都可以移动他们的球员。该团队从红色到蓝色来回切换,因此每个团队总共进行1024次移动(除非游戏提前结束)。
首先要移动的团队是您必须在控制器中设置的选项。
当战斗自动进行时,在每个战斗中先行的团队都会交替出现。
玩家动作
当团队移动时,该团队中的所有球员都被要求移动。对于每次移动,这些调用均以完全随机的顺序进行。被召唤时,将为每个玩家提供有关战斗状态的数据,以便他们可以决定移动的方式。
所有移动距离最多只有一个像素。这些图中的黑圈标记了每个彩色播放器(正方形)可以移动到的位置:
两种颜色都可以沿任何方向对角移动或保持静止,但是只有红色玩家可以左右移动,只有蓝色玩家可以上下移动。感谢Phi和其他人。
如果玩家试图移出战场范围,或者花费太长时间决定移动方式,或者出现某种错误,他们将自动保持静止。
除了移动外,转弯期间,玩家还可以阅读队友写的消息,并可以依次读入消息。这允许进行团队沟通的粗略形式。
您提交作为答案的代码是确定移动播放器的方式以及要读取和写入哪些消息的逻辑(请参阅“如何回答”)。
删除敌人玩家
当一名球员与对战球队的球员进入同一牢房时,该对战球员将立即从战斗中移出。刚刚移动的播放器继续正常运行。这是使玩家脱离战斗的唯一机制,并且掌握它是获胜的关键!
如果一个玩家刚刚移到该单元中有多个敌方玩家,则所有敌方玩家都将被移除。如果同一团队中的两个玩家占用相同的单元,则不会发生任何事情。
赢得一场战斗
一旦完成2048个动作或一个团队中没有球员离开,战斗就会结束。幸存球员人数最多的球队获胜。如果两队的幸存球员数相等,那是平局。
如何回答
在您的答案中,您需要提供JavaScript代码,该代码确定调用像素时像素将以哪种方式移动。
在答案的第一个缩进代码示例(以4个空格为前缀的示例)中,为此函数编写一个主体:
function moveMe(move, x, y, tCount, eCount, tNear, eNear, setMsg, getMsg) {
//the body goes here
}
无需打扰您的代码。
返回什么
函数的返回值确定像素移动的方式:
0
保持静止
1
以向红队右移,向下使蓝队
2
向红队左移,向上使蓝队
3
对角移动,向右
4
对角移动,向左
5
对角移动,向左
6
对角移动,向左对角移动上下
如图所示:
如果您的代码执行以下任何操作,则默认情况下,像素将保持静止:
- 返回0到6之外的整数。
- 尝试将像素移出战场范围。
- 运行时间超过15毫秒。
- 引发任何形式的异常。
您的输入不必是确定性的;使用Math.random
很好。
参数
的前7个功能参数moveMe
提供有关战斗状态的信息:
move
是一个整数,从1开始并在每次移动后递增,直到您团队的最后一次移动为1024。x
是您当前的x位置,是0(最左侧)到127(最右侧)之间的整数。y
是您当前的y位置,是0(最顶部)到127(最底部)之间的整数。tCount
是您团队中目前尚存的球员总数。eCount
是敌方队伍中目前尚存的玩家总数。tNear
是您的团队中目前尚不到16像素(欧几里德距离)的幸存球员的列表。中的每个元素tNear
是与对象x
,y
和id
属性:
x
是其他玩家的x位置y
是其他玩家的y位置id
是其他播放器的PPCG用户ID号(整数)eNear
就像tNear
是附近的敌方玩家而不是队友的名单一样。
在片段中的圆圈是每个玩家的tNear
和eNear
范围。
留言内容
最后两个参数setMsg
和和的getMsg
用途略有不同。
在整个战斗中,每个玩家都有一串最多64个字符的字符串,可以在每次移动中操纵它们以存储数据并可能与队友进行通信。每个玩家的字符串都以空字符串开头。当玩家退出战斗时,其字符串将设置为“ X”。
setMsg
是一个参数函数,可将您的字符串设置为传入的字符串。- 如果传入的值不是字符串,则您的字符串不会更改。
- 如果该值是包含64个以上字符的字符串,则仅保留前64个字符。
getMsg
是一个单参数函数,它获取团队中某人的PPCG用户ID号(作为整数)并返回其字符串。- 该玩家可能在网格中的任何位置。它们不必位于您的16像素半径内。
undefined
如果找不到给定的ID,则返回。
提交示例
如果左边有一个敌人,则该球员向上和向右移动;如果ID 123的队友向对方说,则该球员向下和向左移动,否则保持静止:
for (var i = 0; i < eNear.length; i++) {
if (eNear[i].x === x - 1)
return 3
}
if (getMsg(123) === 'move down and left')
return 5
return 0
请注意,仅此代码块即可。功能定义和括号不应出现。
规则与取消资格
如果用户不遵守以下列出的规则,我可能会将其标记为不合格,控制器将自动忽略其答案。我相信这里的大多数用户不会故意违反规则,并且由于偶然原因只会暂时取消资格。
重要规则
发布答案后,您只能在8小时内直接编辑答案。
从发布之日起8小时后编辑的答案将自动被取消资格。该规则是为了防止初始答案不断优化其方法,从而可能从后来的答案中窃取想法。您的团队必须解决最初提出的任何答案。未经特别许可,您不得删除并重新发布答案。如果有人在8小时标记后或诸如此类的时候不经意地编辑了您的帖子,而不仅仅是因为您发现了一个错误,我将给出此信息。
如果删除帖子并选择取消删除,则编辑规则仍然适用。(控制器无法看到已删除的答案。)
声明新的JavaScript变量时,必须使用
var
关键字。
这是因为声明为no的变量var
变为全局变量而不是局部变量,因此很容易意外地(或有意地)与控制器混淆或与其他玩家自由通信。必须明确的是,您并不是在作弊。声明函数时,最好也使用
var
关键字。即使用var f = function(...) {...}
代替function f(...) {...}
。我不确定原因为何,但有时似乎有所作为。您的代码不应运行过多的时间。
如果您的代码运行超过15毫秒,则像素完全不会移动。但是,由于用JavaScript很难在执行过程中停止功能,因此所有播放器脚本在每次移动时都运行完毕,然后检查时间。这意味着,如果您的代码需要花费大量时间,那么运行控制器的每个人都会注意到并感到烦恼。
自动取消资格
出于以下原因,控制器自动取消参赛资格:
- 用户已经回答。
- 创建后超过8小时进行了编辑。
- 用户被特别标记为不合格。
其他规定
在您的代码中,您可能不会...
- 尝试访问或修改控制器或其他播放器的代码。
- 尝试修改JavaScript中内置的任何内容。
- 尝试与其他玩家交流,除非使用
getMsg
和setMsg
。 - 进行网络查询。
- 做其他恶意的事情。
我会密切注意其他不喜欢运动的行为,例如从其他答案中逐字窃取代码或使用袜子木偶与其他团队打成一片。
欢迎您与您的团队合作并制定计划,但请保持比赛的友好性和道德性。
如果您认为某人需要取消资格,或者您认为自己已经确定了取消资格的原因,请在此处为我或在特定问题的聊天中留下评论。我不参加比赛。
建议答案格式
#[team color] Team - [entry title]
//function body
//probably on multiple lines
Explanations, notes, etc.
条目标题是您可以随意指定的名称。控制器不执行任何操作。
计分
该竞赛将于2015年4月19日正式结束。在这一天(UTC晚上11点左右),我将自动进行至少100场战斗(根据战斗时间长短,可能会更多)。获胜最多的团队将成为总冠军。如果是平局或非常接近,我将进行更多的战斗,直到明显有一支球队占据优势为止。
(您可以在获胜者确定后回答,但我不会更改官方结果。)
我将在装有Windows 8.1 64位,4 GB内存和1.6GHz四核处理器的笔记本电脑上,在最新版本的Google Chrome中运行它们。确保您的JavaScript可在Chrome中使用。
胜利主要是关于球队的荣耀,但是我将接受获胜球队的最高票数。
在整个比赛中,请记住基于团队的方面以及完全在Stack Snippet中运行的事实是非常试验性的。我寄予厚望,但我不能肯定地说一切会做得如何。
提示:
- 您可以在回答前测试条目。编辑堆栈代码段底部附近的“测试条目”文本框,然后单击“重新加载测试条目”。如果不为空,它将成为指定团队中的一名球员。
- 答案是在一个蒙面范围内运行,所以像
alert
和console.log
将无法正常工作。该console
对象只能在测试条目中使用。 - 检查堆栈摘录底部的“调试消息”,然后查看浏览器的控制台(F12)。战斗进行时,会打印很多有用的信息。
- 您可以将Meta Sandbox帖子用作一种临时区域。那里的答案当然不同于这里,那里的控制器可能会过时。
- 由于这不是官方的Stack App,因此如果您一天重启300次以上,控制器可能会停止为您加载答案。
这个挑战的“续集”:建造机器人群!