オシオトシマサの書きっぱなしジャーマン

なんでも書きっぱなし系ブログ

プロレスリングRuby プロレス団体をクラスとしてまとめる

f:id:osio-toshimasa:20210219004434p:plain:w320 おはよーございます。

久々のRuby記事です。昔プロレスラーをclassとして表現したので、今回は会社編で作ってみました。以下が会社を表すCompanyクラスとなります。

    # プロレス興行会社を表すクラス
    class Company
      attr_reader :name, :country, :wrestlers, :guests, :belts

      def initialize(name, country)
        @name = name
        @country = country
        @wrestlers = []
        @belts = []
        @guests = []
      end

      # 選手と契約する。興行を行う会社に所属する。
      def contract(wrestler)
        @wrestlers.push(wrestler) unless @wrestlers.include?(wrestler)
      end

      # 選手を招待する。会社に所属はしないが、興行に出れる。
      def invite(wrestler)
        @guests.push(wrestler) unless @guests.include?(wrestler)
      end

      # チャンピオンベルトを作成する。
      def make_belt(name)
        new_belt = ChampionBelt.new(name)
        @belts.push(new_belt)
      end

    end

会社クラスCompanyには会社名を表すname、国を表すcountry、そして所属選手のwrestlers、最後にベルトを表すbeltsです。今まで見てきた新日本プロレスDDTプロレスリングBASARA、FREEDOMS、東京女子プロレスを参考にしつつまとめてみました。国を入れてみたのはWWE,AEWといった海外の団体もあるということも表現しておいたほうがいいかなあと。あと、guestsという表現が正しいのかわからないですけど、所属選手以外もプロレス団体のリングに上がる場合もあるので、所属外のプロレスラーをguestsとここでは表現しています。 さらに、会社のもつ機能として、選手と契約するcontractと、inviteメソッドを追加してレスラーを登録できるようにしています。あとはチャンピオンベルトの作成ですね。で、一番大切な興行を行うっていうのが入ってないんですけど、プログラミング的に何をもって興行を行うかがいまいちまとまってなかったので今のところ省略しています。会場と時間、マッチメイクをして開催する感じのイメージですけど、実際にプログラム上で試合をしてみたいんですよね。

次回は、昔作ったレスラークラスに手を加えて、この会社クラスと組み合わせながら作ってみたいと考えています。 それでは、また!