X



既存のTCGの対戦ソフトを作りたい [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
2016/10/21(金) 13:47:24.53ID:1n8vZ3VT
あるTCGの構築済みデッキだけを使って対戦するソフトを作りたいんだけど、カードの効果をどうやって解釈させるのか、いいアイデアが無いでち。
手札のカードを一枚選んで、とかだったらカードを選ぶっていうクラスを作ってそれを継承して拡張していく、とかでいいんかな。
当方Java暦1年のはなくそです。いいアイデアあったら教えてくれると嬉しいです。
0002名前は開発中のものです。
垢版 |
2016/10/21(金) 17:31:44.83ID:aI3EmZKS
カードと置き場を結びつけて個々の状態クラス
場の情報とプレイヤーの状態クラス
これらをセッションとしてまとめて進行管理クラスで操作

後は状態を書き換えるルールとカードの紐付け

リプレイ機能も作るなら1手毎にアクションクラスも用意
0005名前は開発中のものです。
垢版 |
2016/10/22(土) 12:50:25.56ID:6eBPRVoj
>>2
ありがとうございます!大枠はイメージできてきました
状態はEvent, EventListenerとか使えば検知できそうですかね

あと悩んでるのがカードの効果の解釈です…
テキストを解釈するインタプリタ?を作る流れが凄く怪しいです
とにかくいっぱい効果を細分化したクラスを作って組み合わせるとかですか?
頓珍漢なこと言ってる…
0006名前は開発中のものです。
垢版 |
2016/10/23(日) 09:40:04.89ID:sqZKb0kb
>テキストを解釈するインタプリタ?を作る

自然言語で書かれたルールをそのまま取り込むと言ってる?
正気か? Java歴1年とやらが10年になっても無理そうだな
0007名前は開発中のものです。
垢版 |
2016/10/23(日) 10:36:37.95ID:5FrN0FNC
>>6
いえ、そのままじゃないです。
自然言語で書かれた物を何かしらに置き換えてDBに格納しておこうと考えてます
置き換えるためにまずテキストを解釈したいのですが何か間違えてますかね?(;´Д`
0008名前は開発中のものです。
垢版 |
2016/10/23(日) 18:32:00.95ID:Q+CeDl8Z
そんなことができたらどんな企業にも入り放題、下手したら歴史に名前が残るぞ
カードの効果はプログラムではなく人間が解釈するんだよ
0009名前は開発中のものです。
垢版 |
2016/10/23(日) 21:30:08.34ID:Bi6deQJA
>>5
別に組み合わせる必要はない
カード一枚につき一つの専用関数を定義しておいて、
場に動きが生じた都度、その場に存在する全ての関数をルール通り順番に実行したら良いだけ
0010名前は開発中のものです。
垢版 |
2016/10/27(木) 12:52:52.32ID:LcY1KpMD
確かに考えが愚かでしたね…
カードの枚数が多いのでインタプリタ通すのかと思い込んでました

カード一枚一枚効果を設定してみます
なんとなく方針が立ってきました。
ありがとうございます
0011名前は開発中のものです。
垢版 |
2016/10/28(金) 16:23:12.78ID:1ax0AC0U
具体的にどのTCGの対戦ソフトか知らんけど
だいたい年間400〜500種類ぐらいカード出るんだし
一枚一枚やってたらきりがないんじゃないの
それに今時のゲームではそれぞれ
機能するタイミングの違う能力が2つ3つついてるのもおかしくないけど
それを1枚のカードでまとめるって難だし
能力別にまとめとくほうが後々の労力削れそう
0012名前は開発中のものです。
垢版 |
2016/10/31(月) 22:17:00.79ID:dR177teP
カード増えるごとに追加実装とかアホくさくてやってられないよなぁ
機能は小さな単位に分割し、汎化して実装することでできるだけ使い回す方向で組むわ

例えば「墓地ある2体の〇〇をゲームから取り除く事で、相手のフィールドにある攻撃表示のモンスター1体を墓地に送る」というカードがあるならば

a.墓地にある2体の〇〇を選び出す機能
b.対象のカードをゲームから取り除く機能
c.相手フィールドから攻撃表示のモンスターを選び出す機能
d.対象のカードを墓地に送る機能

というように機能を分解して作っておいてそれをカードのデータを元にコンポジットする
カードは基本データに加えてこうした能力のリストを保持する形にするかな

ちなみに前述のaとcは<場所>にある<条件>を満たすカードを選ぶ機能として同一の実装でいいし、bとdは指定したカードを<場所>に送る機能として同一であると言える

このように細分化した機能を扱える簡単なインタプリタを作っておけばカードが増えてもルールが増えない限りはだいたいデータの追加だけで済む

ついでにカードのルールテキストが定まった文法に従っているなら、ルールテキストからこれらの処理を自動的に構築するパーサーとビルダークラスを作っておけばさらに手間いらずになる
0013名前は開発中のものです。
垢版 |
2016/11/03(木) 01:53:34.21ID:EOsylP7k
>>12
効果の設定に際して挙げられたような細かい効果はやはり作成に迫られたので作りました。

テキストのパーサーとビルダーが出来れば凄く楽になりそうですね…。
テキストの書式はある程度定まっていますが、それでも安定して解釈出来なかったので、とりあえずは手動で細分化した効果を組み合わせて設定してます。

それより何よりGUIを作るのが面倒で凄く時間が掛かってしまいますな(;´Д`)
0014名前は開発中のものです。
垢版 |
2017/12/31(日) 21:51:08.10ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

B0GJMFZ6TE
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況