タグ付けされた質問 「king-of-the-hill」

キングオブザヒルは、提出物が何らかの形式のゲームで相互作用し、競合するゲームを示します。相互作用なしでプログラムを互いに競い合う競争は、むしろ[コードチャレンジ]を使用するべきです。

30
サバイバルゲーム-オオカミを作成
ボード ボードは、セルの二次元アレイです。細胞には動物が生息しています。毎日、ボード上のすべての動物は同時に1つの動きをします。2つ以上の動物が同じセルに移動すると、1つが残るまで戦います。考えられる移動と攻撃は次のとおりです。 移動 - { Move.UP、Move.RIGHT、Move.DOWN、Move.LEFT、Move.HOLD} 攻撃 - { Attack.ROCK、Attack.PAPER、Attack.SCISSORS、Attack.SUICIDE} 動物はじゃんけんをして戦います。標準ルールが適用されますが、2つの変更があります。まず、いつでも自殺できます。第二に、ネクタイは擬似ランダムに壊れます。2匹以上の動物が衝突した場合、2匹が擬似ランダムに選択され、1匹が残るまで戦います。 プレーヤー 動物の行動と外観は次のとおりです。 ライオン 文字で表されますL。移動しDOWN、RIGHT、その後、繰り返されます。PAPERまたはで疑似ランダムに攻撃しSCISSORSます。 くま 文字で表されますB。移動DOWNX 4、RIGHTX 4、UPX 4、LEFTX 4、次いで繰り返します。での攻撃PAPER。 石 文字で表されますS。移動しHOLDます。での攻撃ROCK。 狼 回答として提出されたオオカミのみが含まれます。「W」で表されます。任意のMoveで移動します。あらゆる攻撃による攻撃 次のテンプレートの空白を埋めることで、ウルフを実装します。すべての提出物はJavaで作成し、単一のファイルに含める必要があります。または、@ ProgrammerDanは、競合をJava以外のサブミッションに拡張するラッパークラスを作成しました。 // Optional code here public class Wolf extends Animal { // Optional code here public Wolf() { super('W'); /* Optional code here */ …

30
穴居人デュエル(または:私は鋭い棒であなたを突く)
穴居人は怒っています。他の穴居人はスティックを取るが、スティックは私のためだった。穴居人の戦い! 説明 穴居人は他の穴居人を刺すために鋭い棒を必要とします。他の穴居人も鋭い棒で刺そうとします。穴居人は、棒を研いだり、棒で突いたり、つまらない棒をブロックしたりできます。 穴居人が鋭い棒で他の穴居人を突くと、他の穴居人が逃げ出し、私が勝利します。しかし、他の穴居人が私が突っ込んでいるときに賢くブロックした場合、私のスティックが鈍くなるので何も起こらず、私は再び研ぐ必要があります。 穴居人怠け者。また、穴居人のダム。穴居人は何をすべきか分からないので、穴居人は何をすべきかを穴居人に伝えるために派手なテクノコンピュータープログラムが必要です。 入力 プログラムの入力は、発生したイベントの履歴になります。ここでSは、シャープ(つまり、穴居人がスティックを研いだ)をP表し、ポークをB表し、ブロックを表します。入力は両側(あなたと相手)の履歴であるため、あなたと相手の動きはコンマ(,)で区切られます。 入力例: SPB,SBB これは、プレイヤーがスティックをシャープにした後、突いてブロックした後、対戦相手がシャープになってからブロックし、再びブロックしたことを意味します。 1ターン目には何も入力されません。 出力 出力は入力に非常に似ています(穴居人はあまり賢くないため)。プログラムはS、シャープ、Pポケ、およびBブロックのために出力する必要があります。出力の最初の文字のみが考慮され、その他の入力はB(ブロック)コマンドとして扱われます。 S:シャープ 削ると、穴居人のスティックの切れ味が1つ上がり、スティックが1本余分に突く。突くたびにスティックの切れ味が1減り、スティックの切れ味が0の場合は、くすみすぎて突き抜けません。シャープネスは0から始まります。シャープネスが5に達すると、スティックは剣になります。(下記参照。) シャープニング中に相手が突く(そしてシャープネスが0より大きい)場合、相手が勝ちます! P: ポーク 突くと、穴居人のスティックの切れ味が1下がり、相手を突く!相手が研ぎ澄ましている場合、あなたは勝ちます!相手が突っ込んでいる場合、スティックは相手のスティックにぶつかり、両方が鈍くなります(「シャープネスユニット」1つ分)。相手がブロックしている場合、スティックが鈍くなる以外は何も起こりません。 スティックの切れ味が5以上のときに突くと、スティックが剣になり、常に勝ちます!(対戦相手も剣を持っていて、選択Pした場合を除き、その場合、両者は鈍くなり、鋭さが5を下回るとスティックに戻る可能性があります。) 0のシャープネスで突くことはできません。その場合、何も起こりません。 B:ブロック ブロックすると、相手が突くときは何も起こりません。相手が突っ込んでいない場合、ブロックは何もしません。 ブロッキングは、剣を持っていても保護しません! ルールと制約 追加のルールは次のとおりです。 データを保存したい場合、プログラムは独自のフォルダーでファイルを読み書きできます(盗むことはできません!)が、その外部にアクセスすることはできません(そして穴居人は荒野でインターネットに接続できません)。 ファイルに関する重要な注意:ファイルを保存する場合は、必ずディレクトリに保存してくださいplayers/YourBotsName/somefile.foo!プログラムの現在の作業ディレクトリは、プログラムのものではありません! 穴居人は公平です。あるプログラムは別のプログラムに固有のコードを持つことはできず、プログラムは互いに助け合うことはできません。(複数のプログラムが存在する場合がありますが、それらは互いに相互作用することはできません。) 穴居人の裁判官は患者ではありません。穴居人が勝者を決定するためにそれぞれ100ターン以上かかると、裁判官は退屈し、両方の穴居人が負けます。 プログラムがルールに違反するか、仕様に準拠していない場合、プログラムは失格となり、から削除されplayerlist.txt、すべての決闘は最初から再開されます。あなたのプログラムが失格の場合、穴居人のリーダー(私!)があなたのプログラムの投稿にコメントし、その理由を説明します。ルールに違反していない場合、プログラムはリーダーボードに追加されます。(あなたのプログラムがリーダーボードにない場合、あなたの投稿に説明的なコメントはなく、あなたは以下の「最終更新」時間の前にあなたのプログラムを投稿しました、穴居人のリーダーに伝えてください!たぶん彼はそれを忘れました。) 投稿に以下を含めてください: 名前。 あなたのプログラム(例:実行するシェルコマンドjava MyBot.java、ruby MyBot.rb、python3 MyBot.py、など)。 注:入力はコマンドライン引数としてこれに追加されます。 穴居人はUbuntu 14.04を使用しているため、コードが(自由に)動作することを確認してください。 選択した言語のバージョンによってコードの動作が異なる場合は、バージョン番号。 あなたのコード(明らかに)。 必要に応じて、コードをコンパイルする方法。 コントローラーコード/テスト、サンプルボット 穴居人のリーダーは、制御コードをC ++ で作成し、Githubリポジトリに投稿しました。そこでプログラムを実行およびテストできます。 非常に単純なプログラム(1行!)も以下の回答に掲載されています。 スコアリングとリーダーボード スコアリングは簡単です。穴居人が勝つとポイントが得られます。他のすべての穴居人との3つの決闘の後、最もポイントを持つ穴居人が新しい穴居人のリーダーになります! …

22
赤と青-Pixel Team Battlebots
このコンテストは正式に終了しました。ブルーチームが勝ちました! 私は50回の戦闘で2 セットを自動実行しましたが、驚いたことに、Blueは100回すべてに勝ちました。統計を見ると、PhiNotPiとSp3000の協力的なエントリーが本当のヒーローだったことは明らかです。お疲れ様でした!実際、Blue Teamの他のすべてのメンバーを失格させた場合、Sphibotsは依然として非常に良い戦いをしました。レッドチームの一部の人々は、Sphibotを倒すことを計画していましたが、この努力は衰えたようです。申し訳ありませんがレッドチーム。 コンテストは正式に終了しましたが、それはあなたがもはや答えられないということではなく、私が公式の勝者を再宣言しないことを意味するだけです。どちらのチームも、楽しみのためだけにボットを送信し続けることができます。コントローラーは、今後のエントリーが中断しない限り、稼働したまま機能し続けます。 これはキングオブザヒルコンテストですが、全員が互いに戦う代わりに、赤と青の2つのチームが競います。勝者は1人だけです。 所属チームは、PPCGユーザーID番号によって異なります。これを見つけるには、画面上部のアバターをクリックして(ログインする必要があります)、開いたページのURLを確認します。後の番号users/はID番号です。 https://codegolf.stackexchange.com/users/[id number]/[display name] たとえば、PPCGユーザーID番号は26997です。 https://codegolf.stackexchange.com/users/26997/calvins-hobbies この数値は、Stack Exchangeサイトごとに異なることに注意してください。 あなたのIDが偶数なら、あなたはレッドチームにいます。 あなたのIDが奇数なら、あなたはブルーチームにいます。 チームを変更する方法はありません。 チームと協力して、すべてのユーザーが戦場である128×128グリッドでチームの色の「ピクセル」を制御するようなバトルロイヤルのような他のチームを倒そうとする必要があります。ピクセルは動き回り、チームメイトと通信し、他のチームのピクセルを取り出します。誰でも任意の数のピクセルを作成できると手に負えなくなるため、すべてのユーザーがこの質問に対して1つの回答しか送信できません。 このスタックスニペット(このフィドル [ フルスクリーン ]の縮小版)は、コンテスト全体のコントローラーです。自動的に提出物を読み取り、それらが有効であることを確認し、チーム間の戦いをステージングします。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 …

30
善と悪
結果-2014年7月19日 丘の現在の王は、傭兵ユーザーによるFabigler!エントリーを提出し続け、彼を王位からノックオフ! スコアボードを表示するにはここをクリックしてください。 2014年7月19日以前に提出されたプログラムが含まれていました。他のすべての提出物は、将来の試験に含まれます。8月9日頃に新しい結果が投稿されるので、十分な時間が取れます。 私の兄弟であり、サバンナ芸術大学の新卒者であるクリス・レインボルトによるイラスト 前書き 天使と悪魔は戦っており、いつものように、彼らの戦場として地球を使用しています。人間は真ん中で立ち往生しており、味方につけざるを得ません。未知の中立部隊は、負けた側のために一貫して戦う人々に報いる。 ゲーム 各トライアルでは、擬似ランダムにペアリングされ、その後20〜30件の他のサブミッションとシャッフルされます。各トライアルは1000ラウンドで構成されます。各ラウンドでは、入力が渡され、出力を生成することが期待されます。出力が記録され、スコアリングされます。このプロセスは1000回繰り返されます。 入力 各プレイヤーの過去の投票を表す単一の引数を受け取ります。ラウンドはコンマで区切られます。A 0はそのラウンドで悪に味方したプレイヤーを表します。A 1は、Goodの側にいるプレイヤーを表します。トライアル内では、プレーヤーは常に同じ順序になります。独自の投票が含まれますが、明示的には識別されません。例えば: 101,100,100 この例では、3つのラウンドが完了し、3人のプレイヤーが競います。プレイヤー1は常にGoodの味方です。プレイヤー2は常に邪悪な味方です。プレイヤー3は、ラウンド1のGoodからラウンド2および3のEvilに交換しました。それらのプレイヤーの1人はあなたでした。 出力 Javaの提出 goodGoodの側にしたい場合は、文字列を返します。 evilEvilを味方にしたい場合は、文字列を返します。 非Java提出 goodGoodの側にしたい場合は、文字列をstdoutに出力します。 evilEvilを味方にしたい場合は、文字列をstdoutに出力します。 プログラムが他の何かを出力または返す場合、例外をスローする場合、コンパイルしない場合、またはこのマシンで何かを出力するのに1秒以上かかる場合は、失格となります。 得点 スコアはGoogleドキュメントのスプレッドシートに投稿され、現在のすべてのエントリを編集できるようになるとすぐに見やすくなります。心配しないでください-あなたがプログラムを提出し続ける限り、私はトライアルを実行し続けます! ラウンド中に多数派でサイディングする場合、3ポイントを受け取ります。 ラウンド中にマイノリティと一緒にサイディングすると、n-1ポイントを受け取ります。ここで、nは、マイノリティと一緒に過ごした連続回数です。 スコアは5回の試行の中央値になります。各試行は1000ラウンドで構成されています。 成果物 非Java提出 一意のタイトル、プログラム、およびプログラムを実行するWindowsコマンドライン文字列を送信する必要があります。引数がその文字列に追加される可能性があることに注意してください。例えば: python Angel.py これには引数がないことに注意してください。これはラウンド1です!これに備えてください。 python Angel.py 11011,00101,11101,11111,00001,11001,11001 Javaの提出 一意のタイトルと、以下に記述する抽象Humanクラスを拡張するJavaクラスを提出する必要があります。 public abstract class Human { public abstract String takeSides(String history) throws …

30
私を殺さないもの…
概要 これは、誰が最も長く生き残ることができるかを確認するためのボットバトルです。ただし、これらのボットは攻撃されることでパワーを高めますので、撮影する前に慎重に考える必要があります。 ターンごとに、攻撃または防御するボットを選択できます。攻撃するとライフが低下し、パワーが増加します。最後のボットが勝ちます。 ボット 各ボットは1000のライフと10のパワーで始まります。 攻撃されたとき: 攻撃者の力があなたの人生から差し引かれます あなたの力は1上昇します。 したがって、最初のターンで2つのボットに攻撃された場合、980のライフと12のパワーがあります。 防御することを選択した場合: あなたの力は1低下します このターンのあなたに対するすべての攻撃は半分に減少します 攻撃を受けた場合、攻撃者ごとに1から2のパワーが得られます したがって、最初のターンで防御し、2つのボットに攻撃された場合、990のライフと13のパワーがあります。防御して攻撃されない場合、1000のライフがありますが、パワーは9です。 ターンの終わりにあなたのパワーが1未満の場合、1に設定されます。あなたの人生が1歳未満の場合、あなたは死にます。 入出力 ボットは1ターンに1回呼び出されます。各ターンに1秒の時間制限があります。 初期 ボットが初めて呼び出されたとき、引数は与えられません。で応答しokます。これは、ボットが応答することを確認するためにのみ行われます。そうでない場合は、プレーヤーリストに追加されません。 各ターン 各ターンで、ボットにはコマンドライン引数としてゲーム内のすべてのボットに関する情報が与えられます。これらの引数の例は次のとおりです。 1 0,1000,10,1 1,995,11,D 最初の引数はボットの一意のIDです。次に、スペースで区切られたボットのリストが表示されます。各ボットの形式は次のとおりです。 id,life,power,lastAction lastAction攻撃したボットD、防御したX場合、およびこれが最初のターンである場合を表す整数です。その他はすべて整数です。 したがって、上記の例では、あなたは1最後のターンでボットであり、防御されています。ボット0はあなたを攻撃し、まだヘルス/パワーを開始しています。 各ターンの出力は非常に簡単です。攻撃するボットを整数(0または3)として出力するかD、防御するだけです。無効なボットや存在しないボットを攻撃しないでください。無効なコマンドとしてカウントされます。無効なコマンドがあると、パワーが1つ失われます。 トーナメント構造 各ゲームは、体力1000、パワー10で始まるすべてのボットで構成されています。すべてのボットによるアクションは同時に実行されます。ゲームの最大ターン数は1000です。 ターンの終わりに1つのボットが生きている(ライフ> 0)場合、1ポイントを獲得し、別のゲームが開始されます。ターン制限に達し、複数のボットが生きている場合、誰もポイントを獲得しません。残りのすべてのボットが同じターンに死亡した場合、誰もポイントを獲得しません。 トーナメントは15ゲームで構成されています。最後に最もポイントを持っている人が勝ちます!勝った各ゲームに残っているライフの合計によってネクタイが壊れます。 状態 ボットは、名前が付けられた直接のサブフォルダーstate( "Hero"は書き込み可能state/hero.whatever)内で、名前が付けられた単一のファイルからのみ読み取りまたは書き込みを行うことができます。このファイルは、サイズが1024 2バイトを超えてはなりません。時間制限に注意してください。プログラムは、応答するだけでなく、カウントするために1秒以内に終了する必要があります。 これらのファイルは、各トーナメントの前に消去されますが、ゲーム間で保持されます。すべてのボット識別子(id)もゲーム間で同じままです。 コントローラ 以下はトーナメントコントローラー(Stronger.java)です。デフォルトでは、最終結果(プレイヤーのソートされたリスト、勝者が一番上)のみを出力しますが、これにはかなり時間がかかる場合があります。凍結されていません、ただ静かです。より詳細なターンバイターン出力が必要-logな場合は、実行時に引数を追加してください。 ボットを追加するには、2つのオプションがあります。 引数としてコマンドを追加します(java Stronger -log "python bot.py") defaultPlayers[]ソースにコマンドを追加します("python bot.py") ボットのHero、Bully、およびCowardは、この回答で見つけることができ、スコアリングの目的で使用されます。 …

30
Formic Functions-アリの女王の丘コンテスト
ライブを見る | アクティブな回答 | 新しい回答を追加 | チャットルーム | ソースコード | リーダーボード 必要なときにいつでも新しいトーナメント。新しいプレイヤーと新しいアップデートは大歓迎です。 実際のゲーム映像ではありません。 各プレイヤーは、食物を収集する1つのアリ-女王から始まります。食品の各部分は、労働者を生産するために保持または使用することができます。労働者は、女王に戻すために食物を集めます。 16人のプレイヤーが1つのアリーナで競います。勝者は、彼女が30,000ターンを回った後、ほとんどの食物を持っている女王です。キャッチは、アリは競技場の正方形の色を変更することによってのみ通信できるということです。これはライバルのアリによっても変更される可能性があります... ゲームを見る これはJavaScriptコンペティションです。つまり、下のリンクをクリックして、ブラウザでゲームをライブで見ることができます。 ここをクリックして、ライブでプレイされているゲームをご覧ください 感謝ヘルカHombaヒルコンテストの元スタックスニペット王のためには、ブルー対レッド-ピクセルチームバトルボット、およびブロックビルボット群れウェブブラウザのアイデアを提供し、ケートを主催し、重く、この1のコードを通知しました。 サンドボックスとチャットのすばらしい人々からのフィードバックとテストにも感謝します。 リーダーボード (画像をクリックすると、リーダーボードとジョイントプレースの完全な説明が表示されます。スペースを節約するためにここに表示されるのは少数のプレーヤーのみです。) 彼らは日曜日2であったように、このリーダーボードは、プレイヤーに基づいてND 2018年9月。 スクリーンショット アリーナがゲームの終わりに向かってどのように見えるかのいくつかの画像。フルサイズを表示するには画像をクリックしてください。 アリーナで何が起こっているのか、これらすべてのパターンがどのように形成されるのかを把握するには、ゲームを実行し、アリーナの上にマウスを移動してズームインし、作業中のアリを確認します。回答の興味深い説明もご覧ください。 アリーナ アリーナは、正方形のセルのトロイダル(エッジラッピング)グリッドです。幅は2500、高さは1000です。すべてのセルは色1から始まります。 最初は、細胞の正確に0.1%に食物が含まれています。2500個の食物はランダムに均一に散らばります。ゲーム中に新しい食べ物は導入されません。 クイーンは空のセルにランダムに配置され、互いに隣接しないという保証はありません(ただし、これは非常にまれです)。 アリの能力 視力:各アリは、3 x 3の周辺に9個のセルがあります。この地域以外の他のアリの知識はありません。9個のセル(他のアリと食物)のそれぞれの内容と、各セルの色が表示されます。 記憶なし:各アリは、見たものに基づいて決定を下します-前のターンで何をしたかを覚えておらず、アリーナセルの色以外の状態を保存する方法がありません。 オリエンテーションなし:アリは、自分がどこにいるのか、どの方向に向いているのかを知りません。北の概念はありません。3 x 3の近傍は、ランダムに回転する方向で提示され、各ターンが変化するため、誘導する色がなければ直線で歩くことすらできません。(毎ターン同じ動きをすると、直線ではなくランダムウォークになります。) 移動、カラーマーキング、および労働者の生産:以下の出力を参照してください。 不滅:これらは死ぬことのできない高地アリです。ライバルアリの周囲の色を変えることで混乱したり、自分の8匹のアリに囲まれて動けないようにしたりできますが、これ以外に害を受けることはありません。 食料を運ぶ:労働者は最大1個の食料を運ぶことができます。女王は任意の量の食物を運ぶことができます。 食べ物の移動:労働者が女王に隣接している場合(8つの方向のいずれかで)、食べ物は次のいずれかの方法で自動的に移動されます。 自分の女王に隣接する荷を積んだ労働者は、食物を女王に移します。 敵の女王に隣接する空いている労働者は、食べ物があればそれを1つ盗みます。 労働者は労働者から盗むことはできず、女王は女王から盗むことはできません。また、労働者は自分の女王から食べ物を取ることができず、女王は敵の労働者から盗むことはできません。 アリは順番に順番を取り、食物の移動は各アリの個々の順番の終わりに発生し、順番をとらないことに注意してください。それは、労働者が女王の隣に移動するか、女王が労働者の隣に移動するかに関係なく起こります。 コーディング 関数本体を提供する 各アリは、アリ関数によって制御されます。プレイヤーのant関数は、各ターンごとに個別に呼び出されます(プレイヤーごとに1回だけでなく、クイーンが1回、プレイヤーがコントロールするワーカーごとに1回)。ターンごとに、ant関数は入力を受け取り、その特定のアリの動きを返します。 …


30
サバイバルゲーム-エイリアン戦争
エイリアン戦争 このゲームは、エイリアンが優れた人種である非常に混雑した惑星で行われます。あなたの仕事は、あなた自身のエイリアンを作成し、他のすべてを打ち負かすことです。 ボード 2次元のボードです。 ボードの片側の長さは、使用するボードのMath.ceil(sqrt(species * 100 * 2.5))約40%です。ボードは惑星であるため、西の地図から出ると、東に戻ります。北に出て行くと、南にいることに気づくでしょう。 能力 地球上の各種には能力があります。どうぞ: 名前 メリット ライフHP = lifeLVL * 5(ヒットするたびに減少、0 =デッド)、ベースHP = 10 強さヒットは、範囲[1〜strengthLVL]の範囲内でランダムに整数ダメージを与えます 防御範囲[0〜(50 / DefenseLVL + 1)]でランダムにintを選択します。int == 0の場合、次の攻撃をかわします 視力を与えますvisionLVL / 2あなたの周りの視野 賢ぼけ(増加)の範囲でランダムにすべての能力[0にclevernessLVL 2 /他の外国人への送信 ゲーム 各提出には100個のインスタンスがあります。 インスタンス化後、各エイリアンは合計10個の能力ポイントを設定できます。インスタンスごとに異なるポイントを設定できます。 10ポイント以上を設定すると、インスタンスは停止します。 ゲームは1000ラウンドで構成されます。各ラウンド: すべてのエイリアンは経由で動きを返さなければなりませんmove(char[] fields)。これにはMove.STAYが含まれます。 複数のエイリアンがフィールドにいる場合、2人がランダムに選択されます。 両方が平和に同意する場合(でfalseを返すwantToFight)、現在の場所に留まるか、そうでない場合は戦います。 これは、1人のエイリアンのみがフィールドに滞在するか、全員が平和に同意するまでループします。 エイリアンが何かを殺すと、敵の能力の1/5を獲得します。勝者のHPには2 * enemyLifeLVLが補充されます。 勝者は、最も能力(生きているエイリアンの能力の合計)を持つものです。 戦い …

30
BrainF *** edBotsForBattling-Brainf ***トーナメント
バトルアリーナのすべてのボットは突然頭を悩ませ、誰もその理由を説明できません。しかし、彼らがまだ戦うことができる限り誰も気にしません-Brainfuckは彼らがもう理解している唯一の言語ですが。 前回の投稿からしばらく経ちましたので、ついにBrainFuckedBotsForBattlingの勝者を発表します:NyurokiMagicalFantasyで優勝してLymiaAluysiaにおめでとうございます! スコアボード | Owner | Bot Score | |--------------------|-------------------------------| | LymiaAluysia | NyurokiMagicalFantasy - 600 | | Sylwester | LethalLokeV2.1 - 585 | | weston | MickeyV4 - 584 | | Sp3000 | YandereBot - 538 | | Comintern | CounterPunch - 512 | | Sylwester | BurlyBalderV3 - …

30
KOTH:世界的なパンデミック
最終結果はこちら! 前書き 2042年、世界は人口過剰になりました。グローバリゼーション、過密状態、新しいライフスタイル、世界的な衛生状態の欠如により、新しいパンデミックが広がりました。それらの困難な時期に、国家指導者は状況を管理しなければなりません。人口を間引くことはできませんが、隣人を死なせることで利益を得られるかもしれません... 用語集 健康:人々が感染していない 感染パンデミックから死ぬことができる人物: デッド:ボディは、特段の効果(のみ得点)カウントしない 感染率の数:健康になり感染を各ターン 伝染料金:の割合感染変換する健康への感染を各ターンの 致死率:各ターンで死亡する感染者の割合 移行率:各ターンに移住/移住する健康および感染者の割合 ローカルを:州のみに影響します Global:すべての州に影響します 原理 各プレイヤーは、100人から始まる1つの町を管理します。残念ながら、それらの中には感染した人がいます。 ゲームはターンベースです。ターンは7つのフェーズで構成され、最後のフェーズはインタラクティブです(ボットにコマンドを要求します)。プレイヤーの順番は毎ターンランダム化されます。次のフェーズは、前のフェーズがすべての町で実行されたときに始まります(ターン1:プレイヤー1、プレイヤー2、プレイヤー3 ...、ターン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を介して出力する必要があります。 構文 入力 …

18
未来の銃決闘
背景フューチャー 2017年、あなたとあなたの対戦相手は、1人だけが生き残ることができる未来の銃撃戦で対戦します。対戦相手を倒すのに十分な経験がありますか?今こそ、お気に入りのプログラミング言語で銃のスキルを磨き、あらゆる可能性と戦う時です! トーナメント結果 このトーナメントは2月2のUTCの午前中に終了ND、私たちの出場者に2017のおかげで、我々はエキサイティングな未来的なトーナメントがありました! CBetaPlayerおよびStudiousPlayerとの緊密な戦いの後、MontePlayerが最終的な勝者です。上位3名の決闘者が記念写真を撮りました。 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 ++エントリ:セクション非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
キングオブザヒル-スペースウォー!
Spacewarを プレイしたことがあるなら!、あなたはそれが楽しいゲームだったことを知っています。まだ知らない場合は、これを知ってください。これは、非常に最初で最も重要なコンピューターゲームの1つでした(現在もそうです)。そして、それはまだ楽しいです!私が育ったクローンはこれで、明らかに残念なことにWindowsのみです。だから私はそれを再作成しました! KotHはここでホストされています:PPCG-Spacewar!キングオブザヒル。ゲームがどのように機能するかを把握するために、少なくとも1つの他のボットに対して人間としてプレイすることをお勧めします。 ゲーム 1フレームは30ミリ秒です(したがって、約33フレーム/秒)。 フィールドは幅800ピクセル、高さ600ピクセルです。 フィールドはトロイダルです。つまり、フィールドの外側に移動する宇宙船とミサイルが反対側に再び現れます。 赤と青の2つの宇宙船があります。 赤は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で、距離はピクセル単位です。宇宙船とミサイルが影響を受けます。 どちらの船にも3つのストライクゾーンがあります。機首、左翼、右翼です。 鼻に当たると即死します。 どちらかの翼にヒットすると、宇宙船の回転速度とエンジンの加速が半分に減少します。 両方の翼が破壊された場合、宇宙船は操縦できず、ミサイルのみを発射できます。 船同士が衝突する場合があります。 鼻と鼻の衝突は、両方の船にとって致命的です。 鼻翼の衝撃により、翼が破壊されます。 翼と翼の衝突により、両方の翼が破壊されます。 死んだ船は固く、1秒後に爆発するまで凍結します。 少なくとも1隻の船が死亡した後、フィールドは3秒後にリセットされます。それまでは、太陽と残っているミサイルはまだ危険です。 元のゲームには致命的で破壊不可能な小惑星もありますが、それらは含めません。 ルール ボットはJavaScriptで作成する必要があります。 ボットは、その決定を約10ミリ秒に制限する必要があります。ボットが原因で一貫した遅延に気付いた場合は、失格とし、修正できるようお知らせします。 ボットは次のものにアクセスできます。 …

30
アートアタックKoTH
応募は締め切りました。最終的な実行では、新しいエントリや編集はカウントされません。 チャットに参加してください! チャレンジ できるだけ多くのペイントでキャンバスを塗りつぶしてください。あなたのハードワークをペイントする可能性のある他のボットに注意してください! 注:このチャレンジの説明では、ペイントはグリッド上の正方形の色を変更することを意味し、ペイントされていないことはグリッド上の正方形の色が0であり、ボットに帰属しないことを意味します。 入力 関数には4つの引数が与えられます:あなた自身、グリッド、グリッド上のすべてのボットの位置、およびゲーム情報。 自分 これは、グリッド上の色と位置を示す1D配列です[id, xpos, ypos]。 グリッドの左上隅が位置(0, 0)です。位置(1,0)はその右側にあり、位置(0,1)は下にあります あなたのidはあなたの色と同義の整数です(あなたのidがどのようにグリッドをペイントするかに影響するかを知るために以下を見てください)。IDはボットに固有です。 グリッド これは、各セルの色を示す整数を含む2D配列です。グリッドセルの番号がの場合、0セルは未塗装であることを意味します。グリッドセルの数が整数であるならx、これはセルがボットによってIDで塗られたことを意味しますx。 positionのグリッドの色を取得するには、次の(x, y)ような配列を使用しますgrid[x][y]。 ボット これは、ボットの位置に関する情報を含む配列です。ボット配列の各要素は、各ボットを記述する配列であり、次のようになります[id, xpos, ypos]。ここidで、はボットのID、ボットxposのx位置、ボット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の後に、1つ以下の正方形(グリッドと同じ色の正方形の数)がペイントされている場合、排除されます。これは、あなたがゲームに参加しなくなり、自動的に負けることを意味します。 ルール コードは次の型の関数でなければなりません …

9
空腹ゲーミング-食べるか死ぬ
空腹ゲーミング-食べるか死ぬ 食べなければ死ぬ。食べれば、死ぬまで生きます。あなたは死ぬので、最後に死ぬようにしてください。 概要 獲物の群れが住む島があります。5つの捕食者のパックを制御します。あなたの目的は、パックを生かし続けることです。獲物を食べることでこれを行います。獲物は捕食者から逃げる傾向があり、そうでなければ群れにとどまるようにします。もちろん、あなたのパックは他のすべてのパックと同じフィールドにあるので、競争はあなたができる前にそれらを食べようとします。これであなたを落胆させないでください。 遊び方 パックを送信するコマンドラインプログラムを作成して送信します。STDINで制御プログラムから状態情報を受け取り、STDOUTでコマンドを出力します。この形式の詳細は以下のとおりです。各プログラムは1回だけ実行され、パックメンバが生きなくなるまで実行を続ける必要があります。入力があったときに入力を読み取り、すばやく応答する必要があります。各応答には200ミリ秒の厳密なタイムアウトがあります。それまでに応答しない場合、パックは現在のターンの新しい指示を受け取りません。 プログラムをコントローラーで実行できない場合、そのプログラムは有効とは見なされません。送信を実行するために使用する必要があるコマンドライン文字列を含めてください。特別な指示(コンパイラのセットアップなど)がある場合は、それらを含めてください。機能しない場合は、コメントをお願いします。あなたが応答しない場合、私はあなたの提出物を受け入れることができません。 トーナメントは64ビットLinuxシステムで開催されます。必要な指示を与えるときは、このことに留意してください。 詳細 各クリーチャーの位置と方向は、それぞれと座標をdouble表す一対の倍精度浮動小数点数(例:)の形式です。xy 各クリーチャーはポイントと見なされます。これは、それらが重複して同じスペースを占有できることを意味します。脇にぶつかることはなく、他のクリーチャーとの衝突という概念もありません。 島は一辺が500単位の正方形です。これらの境界を越えてベンチャーしようとすると、エッジに固定されます。原点{0,0}は左上xにあり、右にy向かって増加し、下に向かって増加します。繰り返しますが、マップはラップしません。 ゲームは1500 +(packCount * 50)の獲物から始まります。彼らは島の中心に集まりますが、すぐに動き始めることにします。 パックは、周囲に等間隔の円で配置されます。パックの順序はシャッフルされますので、特定の場所で開始することを期待しないでください。 獲物の動物は、30単位の半径内の他のすべての動物を見ることができます。1ターンあたり最大6.0ユニットで移動できます。 捕食者は、半径50ユニット内で他のすべての動物を見ることができます。彼らは1ターンあたり最大6.1ユニットで移動できます。これは、彼らが見られる前に獲物を見ることができ、(ほとんど)彼らを追い越すことができることを意味します。 捕食者は自分に従って生き、死ぬ飢餓のレベル。1000から始まり、1ターンごとに減少します。移動後、捕食者が1ユニットの獲物内にいる場合、自動的にそれを食べます。これは獲物を取り除き、捕食者の空腹を1000に設定します。各捕食者は1ターンにつき1つの獲物しか食べることができません。範囲内に複数ある場合、ループが最初に到達したもの(必ずしも最も近いものではない)を食べます。捕食者は、空腹がゼロになると死にます。 パックはそれぞれ5人のメンバーで始まります。5000ターンごとに、まだゲーム内にあるすべてのパックが1人の新しいメンバーを生成します。仲間のパックメンバーの可視範囲内に配置されます。エントリが5人以上のメンバーを処理できることを確認してください。 1000ターンごとに、より多くの獲物が発生します。新しい獲物の数は、生きている捕食者の数から1を引いたものになります。 捕食者は他の捕食者を攻撃できません。彼らは獲物を捕まえるときに獲物を食べる。それでおしまい。 ターン内の順序は次のとおりです。 すべての獲物が決定を下す すべての捕食者が決定を下す すべての獲物の動き すべての捕食者が移動/食べる 各パックが決定/移動する順序は、各ターンでランダム化されます。 プロトコル(一般) すべての通信は文字列形式で行われますUS-ASCII。数値は、Java Double.toString()またはを使用して文字列に変換されますInteger.toString()。出力は、Javaで読み取れるようにフォーマットする必要がありますDouble.valueOf(String)(整数は出力しません)。解析可能な形式の詳細については、のドキュメントをDouble参照してください。行のすべてのフィールドは標準\t文字で区切られ、改行は\nです。文字列全体がヌルバイトになります\0。 以下の例では、<>読みやすくするためにフィールドにマークを付けています。これらは実際の文字列には存在しません。 プロトコル(入力) 入力文字列の長さは、パックに表示されるクリーチャーの数によって異なります。10万文字を超える可能性があるため、そのために準備してください。基本的なセットアップは次のとおりです。 行0:ゲームに関する基本情報。turnは現在のターン番号で、カウントはフィールドに残っている獲物と捕食者の総数です。これらはinteger文字列形式です。 <turn>\t<preyCount>\t<predatorCount>\n 1行目:パックメンバーの一意のIDと飢hungレベル。これらは、すべての入力に対して同じ順序で与えられるわけではありません。一意のIDを使用して、入力に表示される順序ではなく、個々のメンバーを追跡します。繰り返しますが、これらはinteger文字列です。2つのパックの場合、これは次のようになります。 <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行目と同じ順序です。これらは、メンバーごとに2行で示されます。 それぞれの最初のものは、彼が見ることができる獲物の場所で構成されています。2つ目は、彼が見ることができる捕食動物の場所です。これらの場所は全体として一意ではありません。たとえば、2人のパックメンバーが同じ動物を見ることができる場合、両方のメンバーの文字列に含まれます。また、独自のパックメンバーが含まれます。それらを除外する場合は、場所を自分のメンバーと比較することができます。すべての場所は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, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.