SeaBattle
Sea Battle is a guessing game for two players
Installation
Add this line to your application's Gemfile:
gem 'sea_battle'
And then execute:
$ bundle
Or install it yourself as:
$ gem install sea_battle
Usage
Initialize board of the game
$ require "sea_battle"
$ board = SeaBattle::Board.new.board
$ board[0][3].is_attacked?
Add random ship on the board
$ require "random_ship"
...
SeaBattle::RandomBoard.new(board, 3).add_ship
Use class SeaBattle
$ require "sea_battle"
$ first_board = SeaBattle::Board.new $ second_board = SeaBattle::Board.new $ sea_battle = SeaBattle.new(first_board, second_board)
Game is activated?
$ sea_battle.is_activated?
You can get which player is active
$ sea_battle.active_user #=> :first_player
Ship on position row, column is sunken?
$ sea_battle.is_sunken_ship?(3, 7) #=> false
You can attack position (row, column)
$ sea_battle.move(:second_player, :attack, 2, 9)
When game is over you can see winner
$ sea_battle.winner_is #=> :first_player
Play on console (min 92x40)
$ sea_battle
#=> SEA BATTLE
#=> A B C D E F G H I J A B C D E F G H I J
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 0 │ □ │ │ │ │ │ │ │ │ │ □ │ 0 │ │ │ │ │ │ │ │ │ │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 1 │ □ │ │ □ │ │ □ │ │ │ ⬤/│ │ □ │ 1 │ │ │ │ │ │ • │ ⬤/│ │ │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 2 │ □ │ │ │ │ ■ │ │ │ │ │ □ │ 2 │ │ │ │ │ │ │ ⬤/│ • │ • │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 3 │ □ │ • │ │ │ □ │ • │ • │ │ │ │ 3 │ • │ │ │ │ │ │ ⬤/│ • │ • │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 4 │ │ │ • │ │ │ │ │ □ │ │ │ 4 │ │ │ │ ⬤/│ ⬤/│ │ │ │ • │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 5 │ │ • │ │ │ │ │ │ □ │ │ │ 5 │ │ │ │ │ │ │ │ • │ ⬤/│ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 6 │ │ │ • │ │ │ • │ │ │ • │ • │ 6 │ │ │ │ │ │ │ • │ │ • │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 7 │ │ │ │ • │ │ │ │ • │ ■ │ │ 7 │ │ │ │ │ │ │ │ │ │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 8 │ ⬤ │ │ │ • │ │ │ □ │ │ □ │ │ 8 │ │ • │ │ • │ ⬤/│ • │ │ │ │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 9 │ ⬤ │ │ │ │ □ │ │ │ │ │ • │ 9 │ │ │ │ │ • │ │ │ │ │ │
#=> ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼ ┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼
#=> 09:49:09 Computer: Moved on position 6j
#=> 09:49:11 You: Moved on position 9e
#=> 09:49:13 Computer: Moved on position 3b
#=> 09:49:15 You: Used incorrect command: a
#=> ____________________________________________________________
#=> ⬤/ - sunk ship; ■ - hit ship; □ - selected ship; • - mishit
#=> (r)andom position into attack
#=> 4a, 8i, ... - select part of ship
#=> (e)xit of game
#=> #=>