Questions tagged «king-of-the-hill»

丘陵之王表示一种游戏,在此游戏中,提交内容以某种形式的游戏进行交互并相互竞争。在没有交互的情况下使程序相互竞争的竞赛应该使用[code-challenge]。

30
生存游戏-创建狼
董事会 该板是单元的二维阵列。细胞由动物组成。每天,董事会中的所有动物都同时采取行动。如果两个或多个动物移到同一牢房,它们会战斗直到剩下一个。可能的移动和攻击如下: 移动 - { Move.UP,Move.RIGHT,Move.DOWN,Move.LEFT,Move.HOLD} 攻击 - { Attack.ROCK,Attack.PAPER,Attack.SCISSORS,Attack.SUICIDE} 动物通过玩剪刀石头布进行战斗。标准规则适用,但有两个修改。首先,您可以随时自杀。第二,领带被随机打破。如果有两个以上的动物相撞,则将随机选择两个动物进行战斗,直到剩下一个。 玩家们 动物的行为和外观如下。 狮子 由人物代表L。移动DOWN,RIGHT,然后重复。用PAPER或伪随机攻击SCISSORS。 熊 由人物代表B。移动DOWNx 4,RIGHTx 4,UPx 4,LEFTx 4,然后重复。攻击PAPER。 石 由人物代表S。动作HOLD。攻击ROCK。 狼 仅包括作为答案提交的狼。以“ W”表示。随动而动。任意进攻 您将通过填写以下模板中的空白来实现Wolf。所有提交都必须使用Java,并且必须包含在一个文件中。另外,@ ProgrammerDan编写了一个包装器类,将竞争范围扩展到非Java提交。 // Optional code here public class Wolf extends Animal { // Optional code here public Wolf() { super('W'); /* Optional code here …

30
穴居人决斗(或:我用锋利的棍子戳你)
穴居人生气。其他穴居人拿棍子,但棍子是给我的。穴居人打架! 描述 穴居人需要用锋利的杖刺伤其他穴居人。其他穴居人也试图用锋利的棍子刺伤。穴居人可以削尖棍棒,用棍棒戳戳或阻塞戳棒。 如果穴居人用锋利的棍子戳了戳其他穴居人,那么其他穴居人就逃走了,我就赢了。但是,如果其他穴居人在我戳戳时巧妙地阻止了它,那么除了我的棍子变钝并且我需要再次削尖之外,什么也不会发生。 穴居人懒。还有,穴居人笨。穴居人不知道该怎么做,所以穴居人需要花哨的技术计算机程序来告诉穴居人该做什么。 输入项 您程序的输入将是发生的事件的历史记录,在这里S代表削尖(即穴居人削尖了棍子),P代表stands戳和B代表阻塞。输入将是双方(您和对手)的历史记录,因此您和对手的动作将以逗号(,)分隔。 输入示例: SPB,SBB 这意味着玩家削尖他的棍子,然后戳,然后被阻挡,而对手削尖然后被阻挡,然后再次被阻挡。 您在第一回合将不会收到任何输入。 输出量 输出与输入非常相似(因为穴居人不是很聪明)。您的程序应输出S为锐化,P戳戳和B阻塞。仅会考虑输出的第一个字符,而其他任何输入将被视为B(块)命令。 S:锐化 锐化时,穴居人的棍子的锐度提高1,并且棍子额外获得1戳。每次戳戳都会使摇杆的清晰度降低1,如果摇杆的清晰度为0,则无法使用它。清晰度从0开始。如果清晰度达到5,则棍子就是剑!(见下文。) 如果在锐化过程中对手戳(并且锐度> 0),则对手获胜! P: 戳 戳戳时,穴居人的棍子的锐度降低1,并且您戳破对手!如果您的对手变得敏锐,您就赢了!如果对手在戳戳,则您的棍棒会击中对手的棍棒,并且两者都会变钝(以1个“清晰度单位”表示)。如果对手阻塞,则除了您的杆变钝之外,什么也不会发生。 如果您在棍子的锐度为5或更大时进行戳戳,则棍子会变成一把剑,并且您将永远获胜!(除非您的对手也有剑并且也选择了剑P;在这种情况下,他们俩都变得钝了,并且如果他们的锐度低于5,他们可能会变回木棍。) 您不能以0的锐度戳。如果这样做,则什么也不会发生。 B:块 当你阻挡时,对手戳什么也没发生。如果您的对手没有戳,则Block不会执行任何操作。 即使你也有一把剑,阻挡也不能防止剑! 规则和约束 其他规则是: 如果您想保存数据,您的程序可以在自己的文件夹中读取和写入文件(不窃取!),但是您无法访问其中的任何内容(穴居人在旷野没有互联网连接)。 关于文件的重要说明:如果要保存文件,请记住将其保存在目录中players/YourBotsName/somefile.foo!您程序的当前工作目录将不是您程序的目录! 穴居人很公平:一个程序不能具有特定于另一程序的代码,并且程序不能互相帮助。(您可能有多个程序,但是它们不能以任何方式相互交互。) 穴居人的法官不耐心。如果穴居人每个决定决定获胜者超过100转,法官会感到无聊,并且两个穴居人都会输掉。 如果您的程序违反规则或不符合规范,则该程序将被取消资格,将其从中删除playerlist.txt,并且所有决斗将从头开始。如果您的程序不合格,穴居人负责人(我!)将在您程序的帖子中发表评论并解释原因。如果您没有违反任何规则,您的程序将被添加到排行榜中。(如果您的程序不在排行榜上,则您的帖子中没有说明性的注释,并且您在下面的“上次更新”时间之前发布了程序,请告诉穴居人的领导者!也许他忘记了。) 在您的帖子中,请包括: 一个名字。 一个shell命令来运行你的程序(例如:java MyBot.java,ruby MyBot.rb,python3 MyBot.py等)。 注意:输入将作为命令行参数附加在此之后。 穴居人使用Ubuntu 14.04,因此请确保您的代码可以(自由)运行。 如果您的代码在所选语言的不同版本上的工作方式不同,则为版本号。 您的代码(显然)。 如有必要,如何编译代码。 控制器代码/测试,示例机器人 穴居人负责人用C ++编写了控制代码,并将其发布在Github仓库中。您可以在那里运行和测试程序。 下面的答案中还发布了一个非常非常简单的程序(1行!)。 得分和排行榜 评分很容易。无论哪个穴居人获胜都可以得到一点。在3个对决中,得分最高的穴居人将成为新的穴居人领导者! …

22
红色与蓝色-Pixel Team Battlebots
比赛正式结束。蓝队获胜! 我autoran 2 组的50个战斗和令人惊讶的,蓝为他们赢得了所有100个。从统计数据来看,很明显,PhiNotPi和Sp3000的合作条目是真正的英雄。你们两个干得好!实际上,如果您取消了Blue Team的其他所有成员的资格,Sphibot仍然会打出很好的战斗。一些红队人员正计划拆除Sphibot,但是这种努力似乎正在消失。对不起,红队。 竞赛已正式结束,但这并不意味着您不能再回答,这仅意味着我永远不会再宣布官方获胜者。欢迎两个团队继续提交机器人程序,只是为了好玩。只要以后没有任何输入中断,控制器将保持运行状态并保持运行状态。 这是一场山丘之王的比赛,但是将有两支球队参加比赛,而不是每个人都在互相对抗:红色和蓝色。获胜者只有一个。 您所在的团队取决于您的PPCG用户ID号。要找到此内容,请单击屏幕顶部的头像(您必须登录),然后查看打开的页面的网址。后面的数字users/是您的身份证号: https://codegolf.stackexchange.com/users/[id number]/[display name] 例如,我的PPCG用户ID号是26997: 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 …

30
善与恶
结果-2014年7月19日 山的现任国王是佣兵用户Fabigler!继续提交条目,把他从王位上夺下来! 单击此处查看记分板。 包括2014年7月19日当天或之前提交的课程。所有其他提交的内容将包括在以后的试用中。新结果应该在8月9日左右发布,这样您就有足够的时间了。 由我的哥哥克里斯·雷恩博特(Chris Rainbolt)插图,也是萨凡纳艺术与设计学院的应届毕业生 介绍 天使和魔鬼正在战斗,并且像往常一样,以大地为战场。人类被困在中间,被迫站在一边。一支未知的中立力量会奖励那些不断为失败者而战的人。 游戏 每次试用时,您将被伪随机配对,然后与其他20到30个其他提交进行混洗。每个审判将包括1000发子弹。每回合,您都会收到一个输入,并期望产生输出。您的输出将被记录并评分。此过程将重复1000次。 输入项 您将收到一个代表每个玩家过去投票的参数。轮以逗号分隔。A 0代表在该回合中支持Evil的玩家。A 1代表支持善良的玩家。在试用期内,玩家将始终处于相同的顺序。您的投票将包括在内,但未明确标识。例如: 101,100,100 在此示例中,三轮比赛已经完成,三名选手正在竞争。玩家一向支持好。玩家二总是站在邪恶的一边。玩家3在第一回合中从Good换成了在第二和第三回合中的Evil。 输出量 Java提交 good如果要支持Good,则返回字符串。 evil如果要支持Evil,请返回字符串。 非Java提交 good如果您想支持Good,则将字符串输出到stdout。 evil如果要支持Evil,则将字符串输出到stdout。 如果您的程序在此确切的机器上输出或返回任何其他内容,引发异常,未编译或花费一秒钟以上的时间来输出任何内容,则它将被取消资格。 计分 我可以编译所有当前条目后,分数就会发布在Google文档电子表格中,以便于查看。不用担心-只要你们继续提交程序,我就会继续进行试验! 在一个回合中,您以多数票获得3分。 在一个回合中,与少数派保持联系时会得到n-1分,其中n是您站在少数派上的连续次数。 您的分数将是5次试验的中位数。每个审判包括1000发子弹。 可交付成果 非Java提交 您必须提交一个唯一的标题,一个程序和一个将运行程序的Windows命令行字符串。请记住,可以在该字符串后附加一个参数。例如: python Angel.py 请注意,这个没有参数。这是第一回合!为此做好准备。 python Angel.py 11011,00101,11101,11111,00001,11001,11001 Java提交 您必须提交一个唯一的标题和一个Java类,以扩展下面编写的抽象Human类。 public abstract class Human { public abstract String takeSides(String history) …

30
什么不会杀死我...
总览 这是一场机器人大战,看谁能生存最长。但是,这些漫游器会通过受到攻击来增强其功能,因此在拍摄前您需要仔细考虑。 每回合,您都可以选择要攻击或防御的机器人。攻击会缩短其生命并增加力量。最后一个机器人站获胜。 机器人 每个机器人以1000生命和10力量开始。 受到攻击时: 从你的生命中减去攻击者的力量 你的力量提高1。 因此,如果在第一回合中受到两个机器人的攻击,则您将拥有980点生命和12点力量。 如果您选择捍卫: 你的力量会降低1 此回合对您的所有攻击将减少一半 如果您受到攻击,则每个攻击者将获得2点力量,而不是1点 因此,如果您在第一回合防御并受到两个机器人的攻击,您将拥有990点生命和13点力量。如果您防御并且没有受到攻击,那么您将拥有1000点生命,但是只有9点力量。 如果转弯结束时您的力量小于1,则将其设置为1。如果您的生命低于1,您将死亡。 输入输出 机器人每回合叫一次。每转一圈有一个时间限制。 初始 第一次调用您的漫游器时,将不会给出任何参数。回应ok。这样做只是为了确保您的机器人能够响应。如果没有,它将不会被添加到播放器列表中。 每转 每回合,您的机器人都将获得有关游戏中所有机器人的信息作为命令行参数。这些参数的一个示例是: 1 0,1000,10,1 1,995,11,D 第一个参数是您的漫游器的唯一ID。然后,出现一个用空格分隔的漫游器列表。每个漫游器的格式为: id,life,power,lastAction lastAction可以是一个整数,表示他们攻击了哪个机器人,D是否防御了,以及X这是否是第一回合。其他都是整数。 因此,在上面的示例中,您1在最后一轮被机器人保护。Bot 0攻击了您,并且仍然处于启动状态。 每转的输出非常简单。只需将您要攻击的机器人输出为整数(例如0或3)或D进行防御即可。不要攻击已死亡或不存在的机器人,因为这将视为无效命令。任何无效的命令都将导致您失去1次电源。 比赛结构 每个游戏都包含以1000生命值和10力量开始的所有机器人。所有漫游器均同时采取措施。游戏的最大回合数为1000。 如果在回合结束时仍有一个机器人存活(生命> 0),则该机器人将获得1分并开始另一场比赛。如果达到转弯限制,并且有多个机器人处于活动状态,那么没人会得到积分。如果所有剩余的漫游器都死于同一回合,则没有人获得分数。 锦标赛包括15场比赛。最后谁得分最高者获胜!每种获胜游戏中剩余的生命总和打破关系。 州 漫游器只能在名为state(“ Hero”可以写入state/hero.whatever)的直接子文件夹中读取或写入以自身命名的单个文件。该文件的大小不得超过1024 2个字节。注意遵守时间限制。您的程序必须在一秒内终止才能计数,而不仅仅是给出响应。 这些文件将在每次锦标赛前擦除,但会在每个游戏中持续存在。id游戏之间的所有漫游器标识符()也将保持不变。 控制者 以下是比赛控制器(Stronger.java)。默认情况下,它仅输出最终结果(排序的玩家列表,优胜者排在首位),这可能需要一段时间。它没有冻结,只是保持沉默。如果您想要更详细的转弯输出,请-log在运行时添加参数。 要添加机器人,您有两种选择: 将命令添加为参数(java Stronger -log "python bot.py") 将命令添加到defaultPlayers[]源代码("python bot.py")中 …

30
甲酸功能-小山竞赛的蚁后
观看直播 | 积极答案 | 添加新答案 | 聊天室 | 源代码 | 排行榜 必要时进行新比赛。非常欢迎新玩家和新更新。 不是实际的游戏画面。 每个玩家都从一只蚂蚁开始-一只蚁后,会收集食物。每件食物都可以存放或用来生产工人。工人们还收集食物,带回女王手中。 16个玩家在一个竞技场上比赛。获胜者是女王,她完成了30,000转后,拥有最多的食物。值得注意的是,蚂蚁只能通过更改竞技场正方形的颜色来进行交流,而竞争对手的蚂蚁也可能会改变它们的颜色... 看比赛 这是一场JavaScript竞赛,这意味着您可以通过单击下面的链接在浏览器中实时观看比赛。 单击此处观看正在直播的游戏 非常感谢Helka Homba参加了最初的《山峰大王》大赛,Red vs. Blue-Pixel Team Battlebots和Block Building Bot Flocks,它们提供了托管KotH的网络浏览器的思想,并为该代码提供了很多信息。 也非常感谢Sandbox和Chat中优秀人员的所有反馈和测试。 排行榜 (单击该图像可查看完整的排行榜和联合位置说明-为了节省空间,此处仅显示少数玩家。) 此排行榜是基于球员,因为他们在周日2 次 2018年9月。 屏幕截图 比赛结束时竞技场的一些图像。单击图像查看完整大小。 要了解竞技场中正在发生的事情以及所有这些模式的形成方式,您可以运行游戏并将鼠标悬停在竞技场上以放大并查看工作中的蚂蚁。另请参见答案中引人入胜的解释。 竞技场 竞技场是正方形单元的环形(边缘包裹)网格。它的宽度为2500,高度为1000。所有单元格均从颜色1开始。 最初,精确的0.1%的细胞将包含食物。2500片食物将随机均匀地分散。游戏期间不会引入新食物。 皇后将随机放置在空的单元格上,不能保证它们不会彼此相邻(尽管这不太可能)。 蚂蚁能力 视线:每个蚂蚁都能看到其3 x 3社区中的9个牢房。它不了解该地区以外的任何其他蚂蚁。它可以看到9个单元格(其他蚂蚁和食物)中每个单元格的内容以及每个单元格的颜色。 没有记忆:每只蚂蚁都根据所见即所得做出决定-它不记得上一回合所做的事情,除了以竞技场单元格的颜色外,没有其他存储状态的方法。 没有方向:蚂蚁不知道它在哪里或面对什么方式-它没有北的概念。3 x 3邻域将以随机旋转的方向呈现给它,该定向每转一次都会改变,因此,除非它有颜色来指导它,否则它甚至不能沿直线行走。(每转相同的动作将导致随机走动,而不是直线走动。) 搬家,彩色标记和生产工人:请参见下面的输出。 不朽:这些是不会死亡的高地蚂蚁。您可以通过更改敌对蚂蚁的颜色来迷惑它们,或者通过用自己的8只蚂蚁包围它们来限制它们移动,但是除此之外,它们也不会受到伤害。 …

30
石头,石头,剪刀,蜥蜴,史诗般的斯波克比赛
最新排行榜@ 2014-08-02 12:00 | Pos # | Author | Name | Language | Score | Win | Draw | Loss | Avg. Dec. Time | +-------+----------------------+-------------------------+------------+-------+-------+-------+-------+----------------+ | 1st | Emil | Pony | Python2 | 064 | 064 | 000 | 005 | 0026.87 ms | | 2nd | Roy …

30
生存游戏-AlienWar
异形战争 这场比赛发生在一个非常拥挤的星球上,外星人是最出色的种族。您的任务是创建自己的外星人并击败其他所有外星人。 董事会 这是一个二维板。 木板一侧的长度Math.ceil(sqrt(species * 100 * 2.5))约为所用木板的40%。棋盘是一颗行星,因此,如果您走出西部的地图,便会回到东部。如果您在北部走出去,就会发现自己在南部。 能力 地球上的每个物种都有能力。他们来了: 名称 受益 寿命HP = lifeLVL * 5(每次击中都会减少,0 =死亡),基本HP = 10 强度你的命中值在[1至强度LVL]伤害范围内随机产生一个整数 防御在[0到(50 / 防御LVL + 1)] 范围内随机选择int ,如果int == 0,则躲避下一次攻击 视力带给您视力LVL / 2视野 机灵当发送给其他外星人时,会随机模糊(增加)[从0到clevernessLVL / 2] 范围内的每个能力 游戏 每个提交将有100个实例。 实例化后,每个外星人总共可以设置10个能力点。您可以为每个实例设置不同的点。 如果设置的点数超过10,实例将死亡。 一场比赛包括1000发回合。每轮: 每个外星人都必须通过来退回行动move(char[] fields)。这包括Move.STAY。 如果有几个外星人在场上,将随机选择2个: 如果双方都同意和平(返回错误wantToFight),他们将留在原地,否则他们将战斗。 这样循环直到只有一个外星人留在田野上或者所有人都同意和平。 如果一个外星人杀死了某些东西,他将获得每一种敌人技能的1/5。获胜者HP将被补充2 * …

30
BrainF *** edBotsForBattling-Brainf ***锦标赛
战场上的所有机器人都突然被搞砸了,没人能解释原因。但是,只要他们仍然能够战斗,谁就会在乎-尽管Brainfuck是他们现在唯一能理解的语言。 自上次提交以来已经有一段时间了,所以我终于宣布BrainFuckedBotsForBattling的赢家:祝贺LymiaAluysia在NyurokiMagicalFantasy上获胜! 计分板 | Owner | Bot Score | |--------------------|-------------------------------| | LymiaAluysia | NyurokiMagicalFantasy - 600 | | Sylwester | LethalLokeV2.1 - 585 | | weston | MickeyV4 - 584 | | Sp3000 | YandereBot - 538 | | Comintern | CounterPunch - 512 | | Sylwester | BurlyBalderV3 - …

30
KOTH:全球大流行
最终结果在这里! 介绍 在2042年,世界变得人口过多。全球化,人满为患,新的生活方式以及全球缺乏卫生条件导致了新的流行病蔓延。在那些困难时期,国家领导人必须管理局势。您不能让人口大量减少,但也许可以让邻居死掉而受益…… 词汇表 健康:人们没有感染 感染:谁可以从大流行死亡人 死亡:尸体数量,没有特别的影响(只计分) 感染率:数健康谁就会成为感染每回合 传染率:百分比感染,将转换健康到被感染每回合 死亡率:每回合将死亡的感染百分率 迁移率:每回合将迁移/迁徙的健康和感染百分率 当地:仅影响您的州 全局:影响每个州 原理 每个参与者将从100个人开始管理一个城镇。不幸的是,其中有一个被感染。 该游戏是回合制的。转弯由七个阶段组成,最后一个阶段是交互式的(向机器人询问命令)。玩家的顺序在每个回合中都是随机的。下一个阶段在每个城镇都执行了上一个阶段时开始(第1轮:玩家1,第2玩家,...;第2轮:第3玩家,第2玩家,第1玩家...): 1. Mutation - AUTOMATED 2. Reproduction - AUTOMATED 3. Migration - AUTOMATED 4. Infection - AUTOMATED 5. Contagion - AUTOMATED 6. Extinction - AUTOMATED 7. Players Turn - INTERACTIVE 控制器通过命令参数为您提供输入,而程序必须通过stdout输出。 句法 输入值 每次调用程序时,它将收到以下格式的参数: Round;YourPlayerId;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;... …

18
未来派枪决斗
未来的背景 在2017年,您和您的对手将在一场只有未来一场生存的未来派枪战中对峙。您是否有足够的经验击败对手?现在是时候以您最喜欢的编程语言来提高您的枪支技能,并与一切斗争吧! 比赛结果 本次比赛在早上UTC 2月2日结束的第二,2017年由于我们的选手,我们有一个令人兴奋的未来的比赛! 经过与CBetaPlayer和StudiousPlayer的激烈角逐,MontePlayer是最终的赢家。三位关岛顶级决斗者拍摄了纪念照: MontePlayer - by TheNumberOne +------------+ CBetaPlayer | | - by George V. Williams +------------+ # 1 | StudiousPlayer - by H Walters | +----------------+ | # 2 # 3 | +------------------------------------------+ The Futurustic Gun Duel @ PPCG.SE 2017 恭喜获奖者!详细的排行榜可以在本文结尾处看到。 一般指导 访问官方资源库以获取本比赛中使用的源代码。 C ++条目:请继承Player该类。 非C …

18
BattleBots:锦标赛
结果已经完成,比赛结束了。 获胜者是arshajii的 EvilBot,取得14胜,Neo-Bot取得13胜,CentreBot和LastStand各自获得11胜。 最终成绩 Results: java Rifter: 9 match wins (45 total bout wins) java EvadeBot: 10 match wins (44 total bout wins) java EvilBot: 14 match wins (59 total bout wins) java LastStand: 11 match wins (43 total bout wins) java UltraBot: 9 match wins (40 total bout wins) …

23
小山之王-太空大战!
如果您曾经玩过《太空大战》!,您知道这是一个有趣的游戏。如果您还没有,那就知道这一点:它曾经是(也是现在)最重要,最重要的计算机游戏之一。而且还是很有趣的!我长大的克隆就是这个克隆,显然,不幸的是,它仅是Windows。所以我重新创建了它! KotH托管在这里:PPCG-太空大战!山丘之王。我鼓励您以人类的身份与至少另一个机器人进行对抗,以了解游戏的工作原理。 游戏 一帧为30毫秒(因此,约为每秒33帧)。 场宽为800像素,高为600像素。 该场是环形的,这意味着从场外移动的飞船和导弹会重新出现在相反的一侧。 有两个宇宙飞船,红色和蓝色。 红色位于x = 50,y随机位于50(场高-50)像素之间。 蓝色位于x =(视场宽度-50),y随机位于50(视场高度-50)像素之间。 双方x =(字段宽度)/ 2。 可用的控件有: 向左转-每帧逆时针旋转5度。 向右转-顺时针每帧5度。 射击导弹-除了舰船的速度外,还沿着舰船指向的方向每帧额外传播10个像素。 消防车-在飞船指向的方向上以每帧0.30像素的速度加速飞船。 超空间跳跃-传送到野外一些随机坐标,爆炸几率25%。这些随机坐标可能在太阳的顶部。 在发动机功率下,舰船的最大速度为每帧15像素,而重力提升时则为每帧40像素。 当行进速度超过每帧15像素时,引擎推力只能改变方向或放慢速度。 关于导弹: 导弹成一直线。 导弹可以每0.1秒发射1次。 导弹的寿命为2.25秒。 每艘船最多装有20枚导弹。 导弹内部是点粒子。 中心处有太阳,这对您的船极为危险。在轻微的接触是致命的。太阳也摧毁了导弹。 太阳有重力。结果加速度为5000 /(距离^ 2)像素/帧^ 2,其中距离以像素为单位。飞船和导弹受到影响。 两艘战舰都有三个打击区:机头,左翼和右翼。 鼻子上的一击就是立即死亡。 任一机翼受到撞击都会使飞船的转弯速度和发动机加速度降低一半。 如果两个机翼都被破坏,飞船将无法机动,只能发射导弹。 船可能会相互碰撞。 鼻鼻碰撞对两艘船都是致命的。 机翼撞击会破坏机翼。 机翼-机翼碰撞会毁坏两个机翼。 死船坚固并冻结,直到1秒后爆炸。 至少一艘船死亡后,该字段将在3秒后重置。在此之前,太阳和任何剩余的导弹仍然很危险。 原始游戏还具有致命且坚不可摧的小行星,但我将不包括它们。 规则 您的漫游器必须使用JavaScript编写。 您的漫游器应将其决定限制在10毫秒左右。如果由于您的漫游器而导致出现持续的滞后现象,我将取消其资格,并通知您,以便您进行修复。 机器人可以访问以下内容: 场宽和场高 …

30
Art Attack KoTH
条目现已关闭。任何新条目或编辑内容将不计入最终运行次数。 加入聊天! 挑战 尝试用尽可能多的油漆填充画布。但是要注意其他可能掩盖您辛苦工作的机器人! 注:在这个挑战说明,涂料是指以改变正方形的颜色对电网和未上漆意味着对电网的广场上有颜色0,而不是归因于任何机器人的。 输入项 您的函数将被赋予四个参数:您自己,网格,所有机器人在网格上的位置以及游戏信息。 我 这是一维数组,表示您在网格上的颜色和位置:[id, xpos, ypos]。 网格的左上角是位置(0, 0)。位置(1,0)在该位置的右侧,位置(0,1)在下方 您的ID是一个与您的颜色同义的整数(请参阅下文,了解您的ID如何影响绘制网格的方式)。您的ID对您的漫游器而言是唯一的。 格网 这是一个2D数组,其中包含整数,告诉您每个单元格是什么颜色。如果网格单元的数目为0,则表示该单元未上漆。如果网格单元的数目是整数x,则表示该单元已被机器人用ID绘制x。 要获取位置的网格颜色(x, y),请使用数组,如下所示:grid[x][y]。 机器人 这是一个数组,其中包含有关机器人位置的信息。bots数组的每个元素都是一个描述每个bot的数组,看起来像:[id, xpos, ypos],其中idbot的ID,是bot xpos的x位置,是bot ypos的y位置。 该数组包括您自己的机器人的位置和ID。被淘汰的漫游器将不包含在此阵列中。 游戏资讯 这是一个包含有关当前游戏信息的数组,如下所示:[roundNum, maxRounds]其中,roundNum是当前回合的编号(1索引),maxRounds是当前游戏的回合数量。 输出量 输出应该是您的函数返回的字符串。这是运动命令。 运动命令确定您的下一个动作。可用的命令是: up down left right wait 每当您移动时,就绘制要移动到的正方形。(请参阅下面的详细信息) 哪里wait意味着你不动。(但您要绘制停留的正方形) 如果尝试移出网格,则命令将被忽略,并且将留在原处。 画网格 每当您移动到正方形时,都需要对其进行绘画,但是有一些规则可以确定该正方形的颜色。 如果正方形未绘制(0),则只需将其绘制为与自己的ID相同的颜色。但是,如果正方形先前已绘制过(非零),则将根据以下JavaScript代码找到正方形的最终颜色: [botColour, 0, floorColour][Math.abs(botColour - floorColour)%3] 制定此公式是为了使机器人能够在不重绘颜色的情况下移动自己的颜色。 消除 如果在第5轮之后您绘制了一个或更少的正方形(网格上与您颜色相同的正方形数),那么您将被淘汰。这意味着您将不再参与游戏,并且会自动输。 …

9
饥饿游戏-吃或死
饥饿游戏-吃或死 如果不吃饭,就会死。如果吃饭,你就活着(直到死)。你会死的,所以尝试最后死。 总览 有一个岛上有一群捕食动物。您控制着五个捕食者。您的目标是使背包保持活力。通过吃猎物来做到这一点。猎物倾向于逃避捕食者的攻击,否则会试图留在一群人中。当然,您的背包将与其他所有背包都位于同一场地,因此比赛将尽一切可能尝试食用。不要让这种情况阻止您,否则您将饿死。 怎么玩 创建并提交命令行程序来指导您的背包。它将从STDIN上的控制程序接收状态信息,并在STDOUT上输出命令。该格式在下面详细概述。每个程序仅执行一次,并且必须保持运行状态,直到没有其他Pack成员处于活动状态为止。您将需要读取输入内容,并迅速做出反应。每个响应都有200ms的严格超时时间。如果您到那时还没有回应,您的背包将不会收到当前回合的新指示。 如果控制器无法运行您的程序,则该程序将被视为无效。请包括我将用于运行提交的命令行字符串。如果有任何特殊说明(用于设置编译器等),请附上它们。如果无法正常工作,请在评论中寻求帮助。如果您没有回应,我将无法接受您的提交。 比赛将在64位Linux系统上举行。提供任何必要的指示时,请记住这一点。 细节 每个生物的位置和方向都是一对分别double代表其x和y坐标的双精度浮点数(例如)。 每个生物都被认为是一个点。这意味着它们可以重叠并占据相同的空间。您不会被撞到一边,也没有与其他生物碰撞的概念。 该岛是一个正方形,每边500个单位。如果您尝试超越这些界限,那么您将被束之高阁。原点{0,0}在左上角,x向右y增加,向下增加。再次,地图不包装。 游戏开始于1500 +(packCount * 50)个猎物动物。他们将聚集在该岛的中心,但很快决定开始行动。 包装将围绕周边均匀分布。打包订单被打乱了,因此不要指望从特定位置开始。 捕食动物可以看到30个单位半径内的所有其他动物。它们每转最多可以移动6.0个单位。 掠食者可以看到半径为50单位的所有其他动物,它们每回合最多可以移动6.1单位。这意味着它们可以在被看见之前先看见猎物,然后(几乎)不被掠夺。 捕食者根据饥饿程度生活和死亡。它从1000开始,每转减少一。如果在移动之后,捕食者处于1个单位的捕食范围内,它将自动吃掉它。这会移除猎物并将捕食者的饥饿感设置为1000。每个捕食者每回合只能吃一个猎物。如果范围之内有一个以上,它将吃掉循环最先到达的那个(不一定是最接近的一个)。如果饥饿达到零,捕食者就会死亡。 包以五个成员开头。每旋转5000圈,仍在游戏中的所有背包都会产生一个新成员。它将放置在其他包装成员的可见范围内。确保您的条目可以处理五个以上的成员。 每旋转1000圈,就会产生更多的猎物。新猎物的数量将是活着的捕食者的数量减一。 食肉动物无法攻击其他食肉动物。他们捕获时会吃猎物。而已。 转弯内的顺序为: 所有猎物都做出决定 所有掠夺者做出决定 所有猎物移动 所有掠食者移动/进食 每个组合做出决定/移动的顺序将在每个回合中随机分配。 协议(一般) 所有通信均以字符串格式进行US-ASCII。使用Java Double.toString()或将数字转换为字符串Integer.toString()。您的输出必须经过格式化,以便可以被Java读取Double.valueOf(String)(您将不会输出整数)。有关可解析格式的详细信息,请参见的文档Double。一行中的所有字段均由标准\t字符分隔,换行符为\n。整个字符串将以null字节终止\0。 在下面的示例中,<>出于可读性考虑,我正在使用这些字段进行标记。这些不在实际的字符串中。 协议(输入) 输入字符串的长度会有所不同,具体取决于您的背包可以看到多少个生物。它可以超过10万个字符,因此请为此做好准备。基本设置是: 第0行:有关游戏的基本信息。turn是当前的回合编号,计数是字段上剩余的猎物和掠食者的总数。这些是integer字符串形式。 <turn>\t<preyCount>\t<predatorCount>\n 第1行:您的背包成员的唯一ID和饥饿水平。对于每个输入,这些输入的顺序都不相同。使用唯一的ID来跟踪单个成员,而不是它们在输入中出现的顺序。同样,这些都是integer字符串。对于两个包,这将是: <id[0]>\t<hunger[0]>\t<id[1]>\t<hunger[1]>\n 第2行:您的背包成员的位置,与第1行中给出的顺序相同。这些是double作为字符串: <x[0]>\t<y[0]>\t<x[1]>\t<y[1]>\n 以下几行是每个包成员的可见性,其顺序与第1行中给出的顺序相同。这些将以每个成员两行的形式给出。 每个人的第一个包括他所看到的猎物的位置。第二个是他所看到的掠食者的位置。这些位置在整体上并不是唯一的。例如,如果两个背包成员可以看到同一只动物,则它将出现在两个成员的字符串中。此外,您自己的背包会员也将包括在内。如果要排除它们,则可能需要将位置与您自己的成员进行比较。所有位置均为double字符串格式。 对于每个在世成员: <prey[0].x>\t<prey[0].y>\t<prey[1].x>\t<prey[1].y>\n <predator[0].x>\t<predator[0].y>\t<predator[1].x>\t<predator[1].y>\n 最后,下一个字符将\0在下一行的开始处为。 例外:如果收到输入dead\0,则说明包已死。请优雅地结束程序。控制器应在关闭时关闭所有活动进程,但我宁愿不要在各处都设置僵尸进程。出于礼貌,您可以包括输入超时。例如,如果示例类在15秒钟内未收到输入,则该类结束。 协议(输出) 输出很简单。您将为double每个活动包成员提供一对值。这些代表您希望他们在此回合中采取的动作。例如,如果您的生物当前在,{100.0, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.