From 7371afad65843ec7e675504f0e5359b76ca8c0d6 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Sat, 23 Nov 2019 22:29:12 -0500 Subject: Moved game loop to game class rather than in the main function --- src/main/scala/me/robbyzambito/othello/Main.scala | 13 +------------ src/main/scala/me/robbyzambito/othello/game/Game.scala | 10 ++++++++++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/scala/me/robbyzambito/othello/Main.scala b/src/main/scala/me/robbyzambito/othello/Main.scala index 6ee0103..506e84e 100644 --- a/src/main/scala/me/robbyzambito/othello/Main.scala +++ b/src/main/scala/me/robbyzambito/othello/Main.scala @@ -6,17 +6,6 @@ import scala.annotation.tailrec object Main extends App { - val game = Game() - - @tailrec - def gameLoop(game: Game): Unit = { - if (game.winner.isEmpty) { - gameLoop(game.takeTurn) - } else { - println(game.winnerMessage) - } - } - - gameLoop(game) + Game().loop() } diff --git a/src/main/scala/me/robbyzambito/othello/game/Game.scala b/src/main/scala/me/robbyzambito/othello/game/Game.scala index 8072bf1..ea8c382 100644 --- a/src/main/scala/me/robbyzambito/othello/game/Game.scala +++ b/src/main/scala/me/robbyzambito/othello/game/Game.scala @@ -1,5 +1,6 @@ package me.robbyzambito.othello.game +import scala.annotation.tailrec import scala.io.StdIn import scala.util.Try @@ -18,6 +19,15 @@ case class Game(board: Board, val currentPlayer: Player = players(turnCount % players.length) val currentOpponent: Player = players(turnCount % players.length) + @tailrec + final def loop(game: Game = this): Unit = { + if (game.winner.isEmpty) { + loop(game.takeTurn) + } else { + println(game.winnerMessage) + } + } + /** * Save the game state to a file to be loaded at a later date. * -- cgit v1.2.3