この課題では、戦闘で他のすべてのフェローシップを打ち負かすことを目標とするフェローシップを作成します。
フェローシップ(チーム)は3人のキャラクターで構成されます。各キャラクターはチームの他のメンバーとは独立して動きますが、敵と戦うときは協力する必要があります。チームは回転しながらお互いに向かい合います。勝ちは3ポイント、同点は1ポイント、負けは0ポイントの価値があります。
キャラクターには能力があります。キャラクターが持っている能力の選択は、このKotHで最も重要な(そして楽しい)部分の1つです。それらはすべて強力で、敵を一掃する可能性があります。
キャラクターはヘルスポイント(HP)を持ち、HPが0になる(または下回る)と死亡します。対戦相手のチームのすべてのキャラクターが死亡した場合、あなたは勝ちます!
キャラクターにはマナがあります。ほとんどのアクションを実行するにはManaが必要であり、十分な数がない場合、そのアクションは使用できません。
キャラクターにはターン遅延があります。これにより、各ターン間のティック数が決まります(100から始まります)。低いほど良い。
文字には属性があります。各キャラクターの各属性には5のベースがあり、分割するために20の追加の属性ポイントが与えられます。属性ポイントを割り当てた後、プライマリ属性が最高の属性として設定されます。
利用可能な属性は次のとおりです。
- 強さ:ターンごとに10 HPと0.5 HPを与える
- 知性:ターンごとに7マナと7マナを与える
- 敏ility性:ターン遅延を1減らす
移動、ビジョン、範囲の
範囲は次のとおりです(0を中心に)。一部の範囲はcardinalです。つまり、直接上下左右にしか移動できません。
444
43334
4322234
432111234
432101234
432111234
4322234
43334
444
キャラクターの開始ビジョンは2です。同じフェローシップのプレイヤー間のビジョンは共有されます。
遊び方
建設
プレイヤーはフェローシップを構築します。 次の手順を実行する必要があります。
各キャラクターにポイントを与えます。各キャラクターは各スタットで5から始まり、3の間でさらに20が分配されます。
各キャラクターに能力を与えます。各キャラクターは4つの能力スロットから始まり、能力はデフォルトで1スロットを取ります。一部の能力は反復可能で、キャラクターに複数回与えることができます。所有者の許可なしに別の提出の機能セットを使用することは許可されていません。
ボット用のコードを作成します。コードはJavaである必要があり、戦闘に使用されます(次のステップ)
行動
すべてのキャラクターは3つの標準アクションで始まります:
- ステップ:主な範囲1でキャラクターを移動する
- スライス:主属性範囲1 でPrimaryAttributeの敵を攻撃します
- 笑顔:何もしない
キャラクターのターンで、実行するアクションを選択する必要があります。アクションにはマナコストがあり、クールダウンがあります。これは、そのアクションを再度実行するまで待機する必要があるターンの数を定義します。
能力
各キャラクターには4つの能力スロットがあります。能力が斜体の場合、それはアクションです。
能力
名前説明マナクールダウン
モビリティ
瞬き 正方形に移動範囲が4 2 2
スワップ 対象とスワップ位置5
テレポート 20 5の任意の場所に移動
ダッシュステップの範囲を1つ増やします。繰り返し可能
Mobile Stepは8方向のいずれにも移動可能
攻撃
クイック スライス2回3 0
ウィーブ スライス表示されているすべての敵を1回15 10
各スライスを吸収すると、ターゲットのプライマリアトリビュートが1つ盗まれます。20ターン続く
各スライスを切断すると、隣接する敵に1/2のダメージを与えます
クリティカルスライスが30%の確率で200%のダメージを与える。繰り返し可能
Feast Each SliceはHPを3増やします。
8方向のいずれにも柔軟にスライス可能
マナを盗むスライスは2マナを盗みます。繰り返し可能
スライス時の再帰スライス0 3
Rangedスライスの範囲に1を追加します
スワイプ同じターゲット上の連続する各スライスは、前回よりも3多いダメージを与えます
ステータス
Dispel ターゲットからすべてのステータスを削除します。範囲 2。20 10
デュエルは、あなたとターゲットのいずれかが死亡するまでフリーズします。範囲1 25 0
ノックアウト あなたとターゲットは次の1000ティックでスタンします10 10
流星 すべての敵は次の100ティックでスタンし ます25 10
リーシュターゲットは次の2ターンでフリーズします4 6
毒 5ターンの間1 HPで敵を毒します5 0
沈黙 ターゲットは5ターンの間沈黙します5 7
遅い ターゲットは次の3ターンの間40ティックだけ減速します10 5
スタン ターゲットは次の300ティックの間スタンします10 10
コールド2の範囲内の他のすべてのキャラクターは10ティック遅くなります
免疫ステータスはあなたに適用できません
守備
次の5つのダメージソースを強制的にブロックします。15 5累積しない
ゴースト 10 10すべてのダメージが回復、ターンを
癒す 3 HP 10 20のターゲットをヒール
の復元 すべてのユニットをバックフル健康へ20 40復元された
盾を あなたの次のターン3 0までスライスすることはできません
スライスが25%の確率で回避されます。繰り返し可能
Pillar Onlyは1ターンに1回しかスライスできません
復活殺されたとき、完全なHPで生き返る(ステータスなし)0 40
スパイクダメージを与えたとき、ダメージの半分を返します
ビジョン
クローク チームは5ターンの間見えなくなります20 20
非表示 5ターンの間見えなくなります4 7
フェーズ 1ターンの間見えなくなります0 3
トラック ターゲットは見えなくなり、10%のダメージを受けます。10ターン続く。5 5
Darkness Enemyの視界範囲は1減少しましたが、1を下回ることはできません。
遠方視力範囲が2増加しました。
目に見えない敵の視界からあなたのターンを開始した場合、あなたは見えません
真の視界ターン開始時に範囲2内のすべての隠されたユニットを明らかにします
ダメージ
ドレイン ターゲットに5ダメージを与え、1範囲内にいる間に5 HP回復します10 5
ライトニング 敵に15ダメージを与えます20 10
K / O ターゲットが20%HP未満の場合、ターゲットをキルします20 0
トラップ 目に見えないトラップを置きます。トラップは踏まれたときに15のダメージを与えます。スタック。10 2
ザップ ターゲットに30ダメージを与える30 5
静的1範囲内のすべての敵に毎ターン5ダメージを与えます。繰り返し可能
統計
ワーウルフ 5ターンの間、すべてのステータスに10を加える30 25
バフHPプールを2倍にします。繰り返し可能
賢いアクションのクールダウンは20%短くなります。繰り返し可能
集中マナの調整率がInt / 10増加します。繰り返し可能
再生する再生率が強さ/ 2増加します。繰り返し可能
スマートアクションのコストは2マナ少なくなります。繰り返し可能
強い10個の属性ポイントを獲得します。繰り返し可能
弱い15個の属性ポイントを失います。2つの能力スロットを獲得します(これにはそのうちの1つが必要です)
その他
ベア 缶は、それぞれのstat 8 10に5を持っている熊召喚
クローン クローンを自分で。2つの能力スロットを取ります。100 100
盗む このアクションを、最後に使用した敵ターゲットに置き換えます。 持続10ターン5 0
壁対象となる空の広場に範囲6 6 10 10
ステータス:
- スタンは、キャラクターがスマイルアクションのみを実行できるようにし、X ティック持続します。
- フリーズはキャラクターの移動を防ぎ、X回転します。
- 沈黙は、キャラクターがスマイル、ステップ、またはスライス以外の何かを実行するのを防ぎ、Xターン続きます。
- 毒はYターンの間、Xダメージでキャラクターにダメージを与えます。別の毒を適用すると、ダメージが加算され、持続時間が更新されます。
- スローは、ターン間のティック数にXを追加します。それはあなたの次のターンには影響せず、後のターンのみです。
- 目に見えないので、敵に見えたり損傷したりすることはありません。StepまたはSmile以外のアクションを実行すると、削除されます。相手があなたのビジョンを与える能力を持っている場合、不可視性は取り除かれます。
すべてのステータス(毒を除く)は、互いに独立して機能します。
サイドノート:
- プライマリ属性に同点がある場合、STR> AGI> INTとして解決されます。
- 10x10グリッドでプレイします。チームは反対側に配置されます。
- 巧妙な場合を除き、パーセンテージは乗法的にスタックします。
提出ルール
次の2つの機能を実装する必要があります。
// Create *exactly* 3 Character templates. You must return the same templates every time
public List<CharacterTemplate> createCharacters();
// Choose an action for a character. If the action requires a target or location, it must be set.
public ReadonlyAction choose(Set<ReadonlyAction> actions, ReadonlyCharacter character);
また、3つの変数(メンバー変数)にアクセスできます。
Set<ReadonlyCharacter> team;
Set<EnemyCharacter> enemies;
Map<Point2D, EnemyCharacter> visibleEnemies;
それでおしまい。以下に、完全なAPIをアルファベット順に見つけることができます。
class Ability and ReadonlyAbility
int getNumSlots() returns the number of slots it takes up
boolean repeatable() returns true if the ability can be repeated
String name()
class Action and ReadonlyAction
Set<Point2D> availableLocations()
Set<ReadonlyCharacter> availableTargets()
boolean basicAction() returns true if the action is Smile, Step, or Slice
boolean breaksInvisibiliby()
int getCooldown() returns the cooldown cost (not the cooldown remaining)
int getManaCost()
String getName()
int getRemainingCooldown()
boolean isAvailable() returns true if the action can be performed
boolean movementAction() returns true if the action is prevented when Frozen
boolean needsLocation()
boolean needsTarget()
void setTarget(ReadonlyCharacter target)
void setLocation(Point2D location)
class CharacterTemplate
void addAbility(Ability)
boolean canAddAbility(Ability)
List<Ability> currentAbilities()
Map<Stat, Integer> currentAttributes()
int getRemainingPoints() returns the total number of ability points you have left to assign
int getRemainingSlots() returns the total number of slots you have to assign
int getStat(Stat stat)
boolean isValid() returns true if your character template is complete and valid
class Point2D
getX()
getY()
class Range
boolean isCardinal() returns true if the range only extends in the 4 cardinal directions
int getRange() returns the distance of the range
class ReadonlyCharacter and EnemyCharacter
Class characterClass()
int cleverness()
List<ReadonlyAbility> getAbilities()
Point2D getLocation() Not on EnemyCharacter
double getHealth()
double getMana()
int getMaxHealth()
int getMaxMana()
Range getSightRange()
Range getSliceRange()
int getStat(Stat stat)
Range getStepRange()
ReadonlyAction getLastAction()
boolean isFrozen()
boolean isStunned()
boolean isPoisoned()
int getPoisonAmount()
boolean isSilenced()
boolean isInvisible()
boolean isDead()
Stat primaryStat()
int smartness()
enum Stat
INT, STR, AGI
上記は、提出に必要なすべての機能です。反射は許可されていません。 何らかの理由で送信が無効な場合は、削除するか、ヘッダーに「無効」を追加してください。 あなたの投稿はすべきではないパッケージ宣言を持っています。提出物は最初の複数行コードブロックに含まれている必要があり、最初の行にはファイル名が必要です。
プロジェクトの実行方法:
いくつかの方法があります。
- JARファイルをダウンロードして実行し
java -jar Fellowship.jarます。他の提出物をダウンロードする場合は、を渡し-q 99744ます。JREではなくJDKを指すjava必要があります。 - gitリポジトリのクローンを作成して実行し
gradle runます。gradleをインストールする必要があり、引数を渡したい場合は、-PappArgs="['arg1', 'args2']" - クローンgitのレポ、そしてそれを自分でコンパイルします。あなたは以下のライブラリが必要になります:
org.eclipse.collections:eclipse-collections-api:8.0.0、org.eclipse.collections:eclipse-collections:8.0.0、com.beust:jcommander:1.48、com.google.code.gson:gson:2.7、org.jsoup:jsoup:1.9.2
クローンを作成する場合は、--recursiveフラグを使用する必要があります。更新をプルする--recurse-submodules場合は、上記のいずれかの場合、クラスをsubmissions/javaフォルダーに入れる必要があります。gradleを使用している場合、または自分でコンパイルしている場合は、プロジェクト自体にクラスを配置できます。main関数のいくつかの行のコメントを解除し、クラスを指すように更新する必要があります。
スコアボード:
+------+-------------------+-------+
| Rank | Name | Score |
+------+-------------------+-------+
| 1 | TheWalkingDead | 738.0 |
| 2 | RogueSquad | 686.0 |
| 3 | Spiky | 641.0 |
| 4 | Invulnerables | 609.0 |
| 5 | Noob | 581.0 |
| 6 | Railbender | 561.0 |
| 7 | Vampire | 524.0 |
| 8 | LongSword | 508.0 |
| 9 | SniperSquad | 456.0 |
| 10 | BearCavalry | 430.0 |
| 11 | StaticCloud | 429.0 |
| 12 | PlayerWerewolf | 388.0 |
| 13 | LongSwordv2 | 347.0 |
| 14 | Derailer | 304.0 |
| 15 | Sorcerer | 266.0 |
| 16 | CowardlySniperMk2 | 262.0 |
| 17 | TemplatePlayer | 59.0 |
+------+-------------------+-------+
ご質問がある場合、または助けが必要な場合は、以下にコメントするか、チャットルームに参加してください! 頑張って楽しんでね
Deal 15 damage to all enemiesいますが、目に見えない敵は稲妻の影響を受けません。これはバグですか?それ以外の場合、不可視性は私にはかなり強いようです