3

私は現在、swift でゲームを作成しており、チャプターやレベルなどを定義するためにプロトコルを利用しようとしています。

したがって、章は次の構造を持つ場合があります。

   protocol Chapter {
       var title:String {get}
       var levels:[Level] {get}
       var choices:[OptionSetType]
   }

各チャプターは複数のレベルで構成されており、特定の「選択」が満たされた場合にのみ、各レベルにアクセスできます。

これを達成するために、これらの選択を追跡し、ビット マスクを使用して条件が満たされているかどうかを確認します。ただし、選択肢はチャプターごとに異なる可能性がありますが、ユーザーが実際にどのチャプターにいるかを心配する必要がないように、ゲームの仕組みを構築したいと考えています。

各レベルには「ポイント」値があり、ポイント値に関連する選択肢のビット マスクが含まれているかどうかを判断するだけです。

したがって、「レベル」については、次のようなプロトコルを定義しようとしました

   protocol Level {
    var text:String {get}
    var score:OptionSetType {get} // this is what determines if a level can be shown if the right chapter 'choices' have been set
   }

のエラーを与える

 Protocol 'OptionSetType' can only be used as a generic constraint because it has Self or associated type requirements

理論的には、各章には独自のオプションのセットがありますが、特定の章ごとにコーディングするのではなく、これを中心にエンジンをほぼコーディングできるように、これを十分に一般的なものにする方法を考えています。それが、私がプロトコルを作成すると思った理由です。問題は、設定された OptionSetType 値を定義する必要があり、プロパティが OptionSetType のタイプになるとは言えない場合に、ビット マスキング作業を行う方法です。それが理にかなっていることを願っていますか?

4

1 に答える 1