以下のような具体的な指示を出すことで、コードの作成を効率的に進めることができます。
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とそうでないものがあります。そして、実際の効果の処理についての記述も必要です。
また、この属性や以下に記述するような属性は追加できるようにしておいてください。
そして、名称はふりがなも記録しておいてください。
二つ目のサブクラスはファイターです。それは属性として、
このように、ファイターとタクティクスというカードにはエレメントという属性があります。X:TREME FANTASIAの物語の舞台である惑星エクストンでは、4つのエレメントが群雄割拠し、それぞれの信念のもと、突如空に出現した”光の脅威”との戦いに身を投じます。
この4つのエレメントは、それぞれ違う特徴と戦術を持ち、あなたにぴったりの戦い方やお気に入りのカードをぜひ見つけて下さい。
カードを使うには、Sゾーンに同じ色のエナジーがなければなりません。
たとえば、緑のファイターを召喚したいのなら、Sゾーンに緑のカードがなければなりません。
とあるように、このゲームはXゾーンにカードを6枚送り、相手のファーストエナジーをXゾーンに置くこともしくは相手の山札を0枚にすることを目的としています。勝利条件
①相手のXゾーンにカードを6枚置き、相手のファーストエナジーをXゾーンに置く。
②相手がドロータイムで山札から引くカードが無かった時。
ゲームのプレイ開始前には以下の操作を行います。
デッキをシャッフルします。
ファーストエナジーを裏側でSゾーンに置きます。
山札から5枚引いて手札とすることが出来ます。2回まで引き直すことが出来ます。引き直すというのは、手札のカードをすべてデッキに戻しシャッフルをしてから、また5枚引くことです。また、2回目のマリガンをすると相手はカードを1枚引きます。
お互いにじゃんけんをして、勝った方が先行後攻を決めます。
お互いにファーストエナジーを表側にします。
ゲームの準備はこれで終わりで、ゲームが始まれば以下の進行を先行のターンプレイヤーが行い、それが終われば次の手番のプレイヤーに移り、それをどちらかが勝利条件を満たすまで繰り返します。
- ターンスタート
- 準備フェーズ
- 撤退フェーズ
- Xフェーズ
- メインフェーズ
- ターンエンド
2では3つの行程があります。一つ目はカードを1枚引くこと次に、Fゾーンのカードをリスピンさせること、3つ目はSゾーンのカードをリスピンさせることです。 先行プレイヤーの最初の番では、カードを1枚引くことはできません。特にターンプレイヤーが能動的に行える操作はありません。自動的な処理で構いません。
このようにFゾーンSゾーンXゾーンのカードには、スピン状態とリスピン状態という状態があります。また、それをカードの向き:スピン状態はカードを横向き、リスピン状態ではカードを縦向きにして、表します。ファイターは攻撃やガードをするとスピン状態(横向き)となり、攻撃やガードができなくなります。カードの効果でスピン状態になることもあります。基本的にリスピン状態のファイターを攻撃対象に選ぶ事はできませんが、スピン状態のファイターは攻撃対象に選ぶことができるようになります。
また、Sゾーンのカードはコストに使用すると同じようにスピン状態となり、スピン状態のカードはリスピンされるまでコストに使用できなくなります。
ファーストエナジーも同じ扱いとなります。スピン状態(横向き)からリスピン状態(縦向き)に戻して、反撃に備えます。
3では、
このようにターンプレイヤーが1枚Fゾーンのカードを選んでSゾーンに移動することが出来ます。一度だけ自分のFゾーンのファイターを1体、自分のSゾーンに移動(撤退)することができます。
撤退したファイターはSゾーンで、他のカードを召喚や発動するためのコストに使うことができるので、序盤は必須の戦術となるでしょう。
なお、FゾーンからSゾーンに撤退する時はそのファイターはそのままの状態で移動します。スピン状態のまま撤退した場合は、スピン状態でSゾーンに移動します。
Sゾーンに置けるカードの合計エナジーは10以内というルールがあり、それを超過した場合はエナジーの調整が行われる(後述)のですが、
撤退フェーズで撤退するファイターをSゾーンに置いた場合に、合計エナジーが10を超えるのなら、そのファイターを撤退することはできません。
たとえば、自分のSゾーンに合計エナジーが8ある時、エナジーが3の「騎士ニャタタ・ビィ」を撤退することはできません。(エナジーが11になるため。)
4
Xゾーンにカードがある場合、ターンプレイヤーはX:SKILLの使用を宣言することが出来ます。では、前述の「ファーストエナジー」の【X:SKILL】を使用するかどうか宣言します。
たとえば、この「知恵のエナジー」の【X:SKILL】を発動するのなら、それを宣言し、この場合は自分のXゾーンで裏側のカード1枚をオープンし、効果を発動します。
なお、自分のXゾーンにカードが1枚もないのなら、このフェーズをスキップします。
5
では、自分の手札からファイターを召喚する、自分の手札からタクティクスカードを発動する、自分のカードの効果を発動する、相手のFゾーンのファイターや、Sゾーンのカードに攻撃を行う。この4つを順不同でターンプレイヤーが終了するまで繰り返し続けることができる。
ついにゲームを大きく動かすメインフェーズに突入します。
メインフェーズでは、ファイターを召喚したり、タクティクスカードを発動したり、そして攻撃を行ったり、勝利に向けて動き出しましょう。
ファイターの召喚や攻撃に順番はありません。
メインフェーズでできることは自由に行ってかまいません。
攻撃したあとにファイターを召喚してもいいですし、ファイターを召喚したあとに攻撃を行っても問題ありません。
メインフェーズの終了を宣言し、ターンエンド。
ターンエンドすると相手のターンスタートに移行します。
相手のターン中は非ターンプレイヤーは基本なにもすることはできませんが、いくつかインタラプトをすることが出来ます。相手が、カードを手札に加えた時や、相手がエナジー4以上のファイターを召喚した時など、相手の行動によって特定の条件を満たした場合のみ発動するカードがいくつかあります。そのようなカードを相手ターン中に使うことが出来ます。 このような条件は沢山追加できるようにしておいてください。
5がこのゲームのメインの機構です。