> For the complete documentation index, see [llms.txt](https://kashiwara.gitbook.io/rubydesurufurusukuratchibe/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kashiwara.gitbook.io/rubydesurufurusukuratchibe/rifakutaringu/tictactoeclassno.md).

# TicTacToeClassの実装

tic\_tac\_toe.rbの内容をクラスにし、リファクタリングした内容でゲームを動かしたいと思います。

## TicTacToeClassの実装

TicTacToeクラスを実装します。

GameFactoryを使ってゲームの生成を隠蔽し、ゲーム全の進行のみを管理するようにします。

```ruby
# frozen_string_literal: true

require_relative "game_manager_factory"

# 三目並べの実行クラス
class TicTacToe
  class << self
    # 概要: ゲームのmain部分
    #       このメソッドをコールするとゲームが始まる
    # 引数: なし
    # 戻り値: なし
    def start
      game = GameManagerFactoryClass.create

      loop do
        game.player_turn
        game.print_board
        break if game.over?

        game.change_to_opponent_turn
      end

      game.print_result
    end
  end
end

```

main.rbも修正します。

```ruby
require "./tic_tac_toe/tic_tac_toe"

TicTacToe.start()
```

第四章はこれにて終了です。お疲れ様でした！

いらなくなったファイル(tic\_tac\_toe\_test.rb)はけしちゃってOKです！

最後に、この章のソースコードを以下に記載しておきます。

{% embed url="<https://github.com/Kashiwara0205/ruby-tic-tac-toe/tree/master/ch4>" %}
