From 798fb1622718e61cc89b20f5c9ed9cd00192f549 Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Wed, 14 Sep 2022 16:38:56 +0200 Subject: [PATCH] configurable number of mines, display it --- ruby/myhunt-curses.rb | 13 ++++++++----- ruby/myhunt.rb | 8 +++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ruby/myhunt-curses.rb b/ruby/myhunt-curses.rb index d2303ea..e8da389 100755 --- a/ruby/myhunt-curses.rb +++ b/ruby/myhunt-curses.rb @@ -19,7 +19,7 @@ def display_curses( field, state = { dead: false, victory: false } ) elsif state[:victory] Curses.addstr 'You won!! :) ' else - Curses.addstr "nearby: #{field.count_nearby_mines} " + Curses.addstr "#{field.number_of_mines} mines, #{field.count_nearby_mines} nearby" end field.height.times do |y| @@ -40,8 +40,8 @@ def display_curses( field, state = { dead: false, victory: false } ) Curses.refresh end -def ncurses_main - field = MyHunt::Board.new +def ncurses_main( number_of_mines ) + field = MyHunt::Board.new( number_of_mines ) finished = false Curses.init_screen @@ -64,7 +64,7 @@ def ncurses_main begin case ch when 'r' - field = MyHunt::Board.new + field = MyHunt::Board.new( number_of_mines ) finished = false else break @@ -107,4 +107,7 @@ def ncurses_main exit! end -ncurses_main +number_of_mines = 20 +number_of_mines = ARGV.first.to_i if ARGV.length == 1 + +ncurses_main( number_of_mines ) diff --git a/ruby/myhunt.rb b/ruby/myhunt.rb index 1ae2e38..1a40959 100755 --- a/ruby/myhunt.rb +++ b/ruby/myhunt.rb @@ -22,6 +22,7 @@ module MyHunt attr_reader :width, :height, :field, + :number_of_mines, :explorer_x, :explorer_y @@ -31,6 +32,11 @@ module MyHunt @explorer_x = 0 @explorer_y = 0 @field = {} + @number_of_mines = if number_of_mines.negative? && number_of_mines > ((@height * @width) - 2) + 20 + else + number_of_mines + end @width.times do |x| @height.times do |y| @@ -39,7 +45,7 @@ module MyHunt end placed_mines = 0 - while placed_mines < number_of_mines + while placed_mines < @number_of_mines coordinates = [rand( @width ), rand( @height )] next if coordinates == [0, 0] next if @field[ coordinates ].mine