Behind Coleus

大学生なのに特別大学で楽しいことが一 つもない。虐待と男子校病のせいにしてみる。→日本脱出しました 今ジャカルタにいます。→ジャカルタから帰ってきました。→6月19日から小笠原沖で、インドネシア人とメカジキ漁

chatGPTに指示する文章を作成する。

 

以下のような具体的な指示を出すことで、コードの作成を効率的に進めることができます。

1. **カードクラスの作成**:
   「カードゲームの各カードは`Card`というクラスで表現し、攻撃カードは`AttackCard`というサブクラスを作成して、`attack_power`と`mana_cost`属性を持つようにしてください。」

2. **ゲームの進行ロジック**:
   「ターン制で進行するカードゲームを作りたいです。プレイヤーは毎ターン、カードを1枚引き、手札から1枚プレイできるルールにします。ターン終了後、プレイヤーの手番が交代するようにしてください。」

3. **勝利条件**:
   「相手のHPが0になるとゲームが終了し、勝者が決定します。HPはカードの効果によって減少し、毎ターン、`end_turn`関数でターンが終了します。」

4. **デッキと手札管理**:
   「プレイヤーは1つのデッキと手札を持っています。デッキからカードを引く関数(`draw_card`)と、手札からカードをプレイする関数(`play_card`)を作成してください。」

5. **カード効果の実装**:
   「`AttackCard`がプレイされると、指定した相手のHPを減少させます。減少量は`attack_power`で決まり、プレイヤーが選択できる相手にダメージを与えます。」


これを書けば、カードゲームを作れるらしいのでやっていきたいわね。
クラス:カードは、3つのサブクラスに分かれます。
一つ目のサブクラスはファーストエナジー、それは属性として、カードの名称と効果とエナジーフレーバーテキストと収録パックを持ちます。名称と効果、フレーバーテキスト、収録パックは、文章で記述されています。次に、エナジーは数字で記述されます。さらに、効果にはX:SKILLとそうでないものがあります。そして、実際の効果の処理についての記述も必要です。
また、この属性や以下に記述するような属性は追加できるようにしておいてください。
そして、名称はふりがなも記録しておいてください。

二つ目のサブクラスはファイターです。それは属性として、

①カードの名称 ②パワー…相手のファイターとバトルする時参照されます。バトルする時、パワーが低い方のファイターが破壊され、同じ数値のパワーのファイター同士だと相打ちとなり、お互いのファイターが破壊されます。 ③クラス…軽量級・中量級・重量級に分かれ、クラスに関する効果が発動した時に参照します。 ④タグ…このカードが所属する勢力や軍団を表します。タグに関する効果が発動した時に参照します。 ⑤スキル…このカードが持つスキルです。現在は「ガード」のみ存在します。 ⑥効果…このカードが持つ効果です。別々の効果は「/」で区切られています。 ⑦エナジー…このカードが持つエナジーです。召喚する時に必要なエナジーと、Sゾーンに置かれた時にこのカードが持つエナジーを表記しています。 ⑧フレーバーテキスト…このゲームの物語を深く知る事ができるテキストです。ゲームの進行には関係ありません。 ⑨収録パックやデックとレアリティの表記です。 ⑩オフィシャル・ライセンス…このゲームはプロキシによるコンビニ印刷カードでのプレイを認めていますが、今後リリース予定の正規印刷版のカードはこのライセンス表記がつきます。

があります。これに加えて、エレメントという属性があります。
名称、クラス、タグ、スキル、効果、フレーバーテキスト、収録パック、オフィシャルライセンス、エレメントは文章で記述されます。効果処理の記述が必要なのは、スキルと効果です。
そのほかの属性、パワーとエナジーは数値で記述されます。
また、エナジーとエレメントは複数の値を持てるようにしておいてください。
そして、名称にはふりがなの値も保持してください。
3つ目のサブクラスは、タクティクスです。属性として、

①カードの名称

②必要エナジー…このタクティクスカードを発動するのに必要なエナジーの数値です。

③効果…このカードが持つ効果です。単発の効果もしくは永続的な効果を持ちます。

④タグ…このカードが所属する勢力や軍団です。

エナジー…このカード自身が持つエナジーです。タクティクスカードはSゾーンに残るので、他のカードを発動するためのコストに使用できます。

⑥収録パックやデックとレアリティの表記です。
を持ちます。

さらに、この6つに加えエレメントが属性としてあります。
カードの名称、効果、タグ、収録パック、エレメントは文章で記述されます。
必要エナジーエナジーは数値で記述されます。
効果については処理するための記述が必要です。
また、エレメントやエナジーは複数の値を持てるようにしておいてください。

名称はふりがなも保持してください。
ゲーム進行のロジックを説明していきます。
まず、個性豊かなファイター(戦士)カードが置かれるF(ファイター)ゾーンと、
全ての力の源であり逆転の要でもあるファーストエナジーを中心に、カードの発動のために必要なエナジーを管理するS(サプライ)ゾーン、
そして、自分に与えられたダメージやペナルティが積み重なっていくX(エクストリーム)ゾーン、この3列のゾーンを使い戦っていくカードゲームです。

それに加え、自分のデッキを置く場所である山札と、破壊されたカードが置かれる墓地があります。
この3列のゾーンは全て横長の長方形です。そして、山札と墓地はカードを重ねておくため、カード1枚分のスペースしか必要ありません。

 

Fゾーンに出して相手に攻撃を仕掛けたり、ガードを行うファイターカードと、手札から発動し様々な効果を持つタクティクスカードの2種類をデッキに入れて戦います。
ファーストエナジーカードはデッキとは別に1枚、ゲームを始める時にSゾーンに置きます。ファーストエナジーにも様々な種類があり、選択するファーストエナジーによって戦術が大きく変化するのもエクファンの特徴のひとつです。カードにイメージされている色と関係なく、どんな色のデッキにも使用できます。
最初に説明した通り、カードは3種類あり、ファーストエナジーカードはゲームを開始する前に選択します。また、試合を始める前に、ファイターとタクティクスカードからなる40枚以上で同名カードは3枚以下のデッキを選択します。 この枚数やカードの種類制限は、変更できるようにしておいてください。

X:TREME FANTASIAの物語の舞台である惑星エクストンでは、4つのエレメントが群雄割拠し、それぞれの信念のもと、突如空に出現した”光の脅威”との戦いに身を投じます。

この4つのエレメントは、それぞれ違う特徴と戦術を持ち、あなたにぴったりの戦い方やお気に入りのカードをぜひ見つけて下さい。

カードを使うには、Sゾーンに同じ色のエナジーがなければなりません。
たとえば、緑のファイターを召喚したいのなら、Sゾーンに緑のカードがなければなりません。

このように、ファイターとタクティクスというカードにはエレメントという属性があります。

勝利条件

①相手のXゾーンにカードを6枚置き、相手のファーストエナジーをXゾーンに置く。
②相手がドロータイムで山札から引くカードが無かった時。

とあるように、このゲームはXゾーンにカードを6枚送り、相手のファーストエナジーをXゾーンに置くこともしくは相手の山札を0枚にすることを目的としています。

ゲームのプレイ開始前には以下の操作を行います。
デッキをシャッフルします。
ファーストエナジーを裏側でSゾーンに置きます。
山札から5枚引いて手札とすることが出来ます。2回まで引き直すことが出来ます。引き直すというのは、手札のカードをすべてデッキに戻しシャッフルをしてから、また5枚引くことです。また、2回目のマリガンをすると相手はカードを1枚引きます。
お互いにじゃんけんをして、勝った方が先行後攻を決めます。
お互いにファーストエナジーを表側にします。

ゲームの準備はこれで終わりで、ゲームが始まれば以下の進行を先行のターンプレイヤーが行い、それが終われば次の手番のプレイヤーに移り、それをどちらかが勝利条件を満たすまで繰り返します。

  1. ターンスタート
  2. 準備フェーズ
  3. 撤退フェーズ
  4. Xフェーズ
  5. メインフェーズ
  6. ターンエンド
1ではターンプレイヤーが行える操作は基本的にはありません。
2では3つの行程があります。一つ目はカードを1枚引くこと次に、Fゾーンのカードをリスピンさせること、3つ目はSゾーンのカードをリスピンさせることです。 先行プレイヤーの最初の番では、カードを1枚引くことはできません。特にターンプレイヤーが能動的に行える操作はありません。自動的な処理で構いません。

ファイターは攻撃やガードをするとスピン状態(横向き)となり、攻撃やガードができなくなります。カードの効果でスピン状態になることもあります。基本的にリスピン状態のファイターを攻撃対象に選ぶ事はできませんが、スピン状態のファイターは攻撃対象に選ぶことができるようになります。

また、Sゾーンのカードはコストに使用すると同じようにスピン状態となり、スピン状態のカードはリスピンされるまでコストに使用できなくなります。
ファーストエナジーも同じ扱いとなります。

スピン状態(横向き)からリスピン状態(縦向き)に戻して、反撃に備えます。

このようにFゾーンSゾーンXゾーンのカードには、スピン状態とリスピン状態という状態があります。また、それをカードの向き:スピン状態はカードを横向き、リスピン状態ではカードを縦向きにして、表します。

3では、

一度だけ自分のFゾーンのファイターを1体、自分のSゾーンに移動(撤退)することができます。

撤退したファイターはSゾーンで、他のカードを召喚や発動するためのコストに使うことができるので、序盤は必須の戦術となるでしょう。

なお、FゾーンからSゾーンに撤退する時はそのファイターはそのままの状態で移動します。スピン状態のまま撤退した場合は、スピン状態でSゾーンに移動します。

Sゾーンに置けるカードの合計エナジーは10以内というルールがあり、それを超過した場合はエナジーの調整が行われる(後述)のですが、
撤退フェーズで撤退するファイターをSゾーンに置いた場合に、合計エナジーが10を超えるのなら、そのファイターを撤退することはできません。
たとえば、自分のSゾーンに合計エナジーが8ある時、エナジーが3の「騎士ニャタタ・ビィ」を撤退することはできません。(エナジーが11になるため。)

このようにターンプレイヤーが1枚Fゾーンのカードを選んでSゾーンに移動することが出来ます。

4

では、前述の「ファーストエナジー」の【X:SKILL】を使用するかどうか宣言します。

たとえば、この「知恵のエナジー」の【X:SKILL】を発動するのなら、それを宣言し、この場合は自分のXゾーンで裏側のカード1枚をオープンし、効果を発動します。
なお、自分のXゾーンにカードが1枚もないのなら、このフェーズをスキップします。

Xゾーンにカードがある場合、ターンプレイヤーはX:SKILLの使用を宣言することが出来ます。
5
では、自分の手札からファイターを召喚する、自分の手札からタクティクスカードを発動する、自分のカードの効果を発動する、相手のFゾーンのファイターや、Sゾーンのカードに攻撃を行う。この4つを順不同でターンプレイヤーが終了するまで繰り返し続けることができる。
ついにゲームを大きく動かすメインフェーズに突入します。
メインフェーズでは、ファイターを召喚したり、タクティクスカードを発動したり、そして攻撃を行ったり、勝利に向けて動き出しましょう。
ファイターの召喚や攻撃に順番はありません。
メインフェーズでできることは自由に行ってかまいません。
攻撃したあとにファイターを召喚してもいいですし、ファイターを召喚したあとに攻撃を行っても問題ありません。
メインフェーズの終了を宣言し、ターンエンド。
ターンエンドすると相手のターンスタートに移行します。
6では、ターンプレイヤーが出来る事はとくにありません。ターン終了時までの効果を処理します。

相手のターン中は非ターンプレイヤーは基本なにもすることはできませんが、いくつかインタラプトをすることが出来ます。相手が、カードを手札に加えた時や、相手がエナジー4以上のファイターを召喚した時など、相手の行動によって特定の条件を満たした場合のみ発動するカードがいくつかあります。そのようなカードを相手ターン中に使うことが出来ます。 このような条件は沢山追加できるようにしておいてください。
1/7追記

5がこのゲームのメインの機構です。
ファイターを召喚するとは sゾーンのカードを召喚したいファイターのエナジー以上になるようにスピンして手札からfぞーんに出すことです。基本的には召喚したターンに攻撃することはできません
タクティクスカードの発動とはsぞーんのカードを必要エナジー以上になるようにスピンしてsゾーンに手札からカードを置くことです。
自分のカードの効果を発動するとは、フィールドや墓地にいることで効果を発動することができるカードの発動を宣言し、効果を処理することです
攻撃には攻撃対象に応じて現在4種類あります
1タップされているfゾーンの相手ファイターを攻撃する
2sゾーンの相手ファイターを攻撃する
3sゾーンの相手タクティクスを攻撃する
4相手のファーストエナジーを攻撃する。
 
1と2はバトルです。
3と4はバトルではありません。
1では相手のファイターのパワーが高ければ自分の攻撃ファイターは破壊されます。同じパワーであればお互いのファイターは破壊されます。相手のパワーが低ければ相手のファイターは破壊されます。
また、相手がリスピンしているガードを持つファイターをコントロールしている場合ターンプレイヤーが攻撃対象を選んだあと、相手はそのファイターをスピンさせることで、攻撃対象をそのファイターに変更することができます。その場合の処理は1と一緒です。
2では攻撃対象のファイターのパワーが攻撃ファイターより低い場合破壊されます。パワーが同じ場合は何も起こりません。