From 1097967c10a5f7504a12eb990aa43764e88131a6 Mon Sep 17 00:00:00 2001 From: Amy Wyatt Date: Mon, 25 Feb 2019 15:44:48 -0800 Subject: [PATCH 1/8] planet class and solar system class complete --- main.rb | 26 ++++++++++++++++++++++++++ planet.rb | 16 ++++++++++++++++ solar_system.rb | 20 ++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 main.rb create mode 100644 planet.rb create mode 100644 solar_system.rb diff --git a/main.rb b/main.rb new file mode 100644 index 00000000..c5f7346b --- /dev/null +++ b/main.rb @@ -0,0 +1,26 @@ +require_relative "planet" +require_relative "solar_system" + +def main + earth = Planet.new("Earth", "blue-green", 5.972e24, 1.496e8, "only planet known to support life") + mars = Planet.new("mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") + + puts earth.summary + puts mars.summary +end + +main + +solar_system = Solar_system.new("Sol") + +earth = Planet.new("Earth", "blue-green", 5.972e24, 1.496e8, "only planet known to support life") +solar_system.add_planet(earth) + +mars = Planet.new("mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") +solar_system.add_planet(mars) + +list = solar_system.list_planets +puts list +# => Planets orbiting Sol +# => 1. Earth +# => 2. Mars diff --git a/planet.rb b/planet.rb new file mode 100644 index 00000000..88db4b51 --- /dev/null +++ b/planet.rb @@ -0,0 +1,16 @@ +class Planet + attr_reader :name, :color, :mass_kg, :distance_from_sun_km, :fun_fact + + def initialize(name, color, mass_kg, distance_from_sun_km, fun_fact) + @name = name.downcase.capitalize! + @color = color + @mass_kg = mass_kg + @distance_from_sun_km = distance_from_sun_km + @fun_fact = fun_fact + end + + def summary + return "#{name} is #{color} with a weight of #{mass_kg}kg and is #{distance_from_sun_km}km away from the sun. + A fun fact about #{name} is #{fun_fact}." + end +end diff --git a/solar_system.rb b/solar_system.rb new file mode 100644 index 00000000..1e7a5967 --- /dev/null +++ b/solar_system.rb @@ -0,0 +1,20 @@ +class Solar_system + attr_reader :star_name, :planets + + def initialize(star_name) + @star_name = star_name + @planets = [] + end + + def add_planet(planet) + @planets << planet.name + end + + def list_planets + planet_list = "Planets orbiting #{@star_name}:" + @planets.each_with_index do |planet, index| + planet_list += "\n#{index + 1}. #{planet}" + end + return planet_list + end +end From 338d68ab576fd823d6cf132cb82e8d953af119c2 Mon Sep 17 00:00:00 2001 From: Amy Wyatt Date: Wed, 27 Feb 2019 00:07:33 -0800 Subject: [PATCH 2/8] Find planet implemented --- main.rb | 58 ++++++++++++++++++++++++++++++++++++------------- solar_system.rb | 18 ++++++++++++--- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/main.rb b/main.rb index c5f7346b..b9e35ab4 100644 --- a/main.rb +++ b/main.rb @@ -2,25 +2,53 @@ require_relative "solar_system" def main + sun = SolarSystem.new("Sun") + venus = Planet.new("Venus", "teal", 23534623565, 43563546345, "they claim women are from here, but they are wrong") earth = Planet.new("Earth", "blue-green", 5.972e24, 1.496e8, "only planet known to support life") - mars = Planet.new("mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") + mars = Planet.new("Mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") - puts earth.summary - puts mars.summary -end + sun.add_planet(venus) + sun.add_planet(earth) + sun.add_planet(mars) -main + puts "\nWelcome to the solar system simulator!" + puts "\nWhat would you like to do?" + puts "List planets" + puts "Planet details" + puts "Exit\n\n" + + command = gets.chomp.downcase.capitalize! -solar_system = Solar_system.new("Sol") + while command != nil + if command == "List planets" + list = sun.list_planets + puts "\n#{list}" + elsif command == "Planet details" + puts "Which planet would you like to learn more about?" + selected_planet = gets.chomp.downcase.capitalize! -earth = Planet.new("Earth", "blue-green", 5.972e24, 1.496e8, "only planet known to support life") -solar_system.add_planet(earth) + if sun.planets.include?(selected_planet) + puts selected_planet.summary + else + puts "\nSorry, we don't have information on that planet at this time." + end + elsif command == "Exit" + puts "\nAre you sure you want to exit? Please type Y to exit." + answer = gets.chomp.upcase! + if answer == "Y" + break + end + else + puts "\nThat is not a valid command, please try typing a option from the list." + end -mars = Planet.new("mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") -solar_system.add_planet(mars) + puts "\nWhat would you like to do next?" + puts "List planets" + puts "Planet details" + puts "Exit\n\n" -list = solar_system.list_planets -puts list -# => Planets orbiting Sol -# => 1. Earth -# => 2. Mars + command = gets.chomp.downcase.capitalize! + end +end + +main diff --git a/solar_system.rb b/solar_system.rb index 1e7a5967..c32f637b 100644 --- a/solar_system.rb +++ b/solar_system.rb @@ -1,4 +1,4 @@ -class Solar_system +class SolarSystem attr_reader :star_name, :planets def initialize(star_name) @@ -7,14 +7,26 @@ def initialize(star_name) end def add_planet(planet) - @planets << planet.name + @planets << planet end def list_planets planet_list = "Planets orbiting #{@star_name}:" @planets.each_with_index do |planet, index| - planet_list += "\n#{index + 1}. #{planet}" + planet_list += "\n#{index + 1}. #{planet.name}" end return planet_list end + + def find_planet_by_name(planet) + search_planet = planet.downcase.capitalize! + + @planets.each do |planet| + if search_planet == planet.name + @found_planet = planet + end + end + + return @found_planet + end end From 318f8f523cdfdf5ac33dcc704896c4fce21280c5 Mon Sep 17 00:00:00 2001 From: Amy Wyatt Date: Wed, 27 Feb 2019 11:53:17 -0800 Subject: [PATCH 3/8] Added add planet functionality --- main.rb | 63 +++++++++++++++++++++++++++++++++++++++++-------- planet.rb | 7 +++--- solar_system.rb | 8 +++++-- 3 files changed, 63 insertions(+), 15 deletions(-) diff --git a/main.rb b/main.rb index b9e35ab4..36aa3129 100644 --- a/main.rb +++ b/main.rb @@ -2,37 +2,76 @@ require_relative "solar_system" def main + # creating solarsystem and planets sun = SolarSystem.new("Sun") venus = Planet.new("Venus", "teal", 23534623565, 43563546345, "they claim women are from here, but they are wrong") - earth = Planet.new("Earth", "blue-green", 5.972e24, 1.496e8, "only planet known to support life") - mars = Planet.new("Mars", "red", 4.972e24, 0.496e8, "rich people want to live here in the future") + earth = Planet.new("Earth", "blue-green", 56354677465487, 14624573674526, "only planet known to support life") + mars = Planet.new("Mars", "red", 4674567655, 2457365426, "rich people want to live here in the future") + # adding planets to solarsystem sun.add_planet(venus) sun.add_planet(earth) sun.add_planet(mars) + # displays welcome and options menu to user puts "\nWelcome to the solar system simulator!" puts "\nWhat would you like to do?" puts "List planets" puts "Planet details" + puts "Add planet" puts "Exit\n\n" - command = gets.chomp.downcase.capitalize! + # takes user input + command = gets.chomp.capitalize! + # determines program response based on user input while command != nil - if command == "List planets" + if command == "List planets" # lists planets in solarsystem list = sun.list_planets puts "\n#{list}" - elsif command == "Planet details" + elsif command == "Planet details" # displays details about specific planet puts "Which planet would you like to learn more about?" - selected_planet = gets.chomp.downcase.capitalize! - - if sun.planets.include?(selected_planet) - puts selected_planet.summary + selected_planet = gets.chomp.capitalize! + found_planet = sun.find_planet_by_name(selected_planet) + if found_planet != nil + puts "\n#{found_planet.summary}" else puts "\nSorry, we don't have information on that planet at this time." end - elsif command == "Exit" + elsif command == "Add planet" # adds new planet to solar system + new_planet_name = "" + while new_planet_name == "" + puts "Please name the planet you would like to add." + new_planet_name = gets.chomp + end + + new_planet_color = "" + while new_planet_color == "" + puts "Please enter the planet color." + new_planet_color = gets.chomp + end + + new_planet_mass = "" + while new_planet_mass == "" + puts "Please enter the mass of the planet in kg." + new_planet_mass = gets.chomp + end + + new_planet_distance_from_sun = "" + while new_planet_distance_from_sun == "" + puts "Please enter this planet's distance from the sun in km." + new_planet_distance_from_sun = gets.chomp + end + + new_planet_fun_fact = "" + while new_planet_fun_fact == "" + puts "Please enter a fun fact about this planet." + new_planet_fun_fact = gets.chomp + end + + new_planet_info = Planet.new(new_planet_name, new_planet_color, new_planet_mass, new_planet_distance_from_sun, new_planet_fun_fact) + sun.add_planet(new_planet_info) + elsif command == "Exit" # exits program puts "\nAre you sure you want to exit? Please type Y to exit." answer = gets.chomp.upcase! if answer == "Y" @@ -42,13 +81,17 @@ def main puts "\nThat is not a valid command, please try typing a option from the list." end + # lists user options puts "\nWhat would you like to do next?" puts "List planets" puts "Planet details" + puts "Add planet" puts "Exit\n\n" + # gets user input command = gets.chomp.downcase.capitalize! end end +# runs code main diff --git a/planet.rb b/planet.rb index 88db4b51..fc61af3a 100644 --- a/planet.rb +++ b/planet.rb @@ -2,13 +2,14 @@ class Planet attr_reader :name, :color, :mass_kg, :distance_from_sun_km, :fun_fact def initialize(name, color, mass_kg, distance_from_sun_km, fun_fact) - @name = name.downcase.capitalize! + @name = name.capitalize @color = color - @mass_kg = mass_kg - @distance_from_sun_km = distance_from_sun_km + @mass_kg = mass_kg.to_i + @distance_from_sun_km = distance_from_sun_km.to_i @fun_fact = fun_fact end + # displays planet details to user def summary return "#{name} is #{color} with a weight of #{mass_kg}kg and is #{distance_from_sun_km}km away from the sun. A fun fact about #{name} is #{fun_fact}." diff --git a/solar_system.rb b/solar_system.rb index c32f637b..9f8298e9 100644 --- a/solar_system.rb +++ b/solar_system.rb @@ -6,10 +6,12 @@ def initialize(star_name) @planets = [] end + # add planet to the solar system def add_planet(planet) @planets << planet end + # displays planets in solar system def list_planets planet_list = "Planets orbiting #{@star_name}:" @planets.each_with_index do |planet, index| @@ -18,15 +20,17 @@ def list_planets return planet_list end + # searches planet list for planet user inputs def find_planet_by_name(planet) + found_planet = nil search_planet = planet.downcase.capitalize! @planets.each do |planet| if search_planet == planet.name - @found_planet = planet + found_planet = planet end end - return @found_planet + return found_planet end end From 437b7a3599fb94ce72a77ad1ffe1fea07cf17f0b Mon Sep 17 00:00:00 2001 From: amythetester <36608155+amythetester@users.noreply.github.com> Date: Wed, 27 Feb 2019 11:55:45 -0800 Subject: [PATCH 4/8] Update main.rb From e7c49a9e78cd374a68bd89d762a31fb36268e2b3 Mon Sep 17 00:00:00 2001 From: amythetester <36608155+amythetester@users.noreply.github.com> Date: Wed, 27 Feb 2019 11:57:02 -0800 Subject: [PATCH 5/8] Update planet.rb --- planet.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/planet.rb b/planet.rb index fc61af3a..dde19ca7 100644 --- a/planet.rb +++ b/planet.rb @@ -1,3 +1,4 @@ + class Planet attr_reader :name, :color, :mass_kg, :distance_from_sun_km, :fun_fact From a8a847bea02a3f6c9a6c867f4d33fe9daf4bc125 Mon Sep 17 00:00:00 2001 From: amythetester <36608155+amythetester@users.noreply.github.com> Date: Wed, 27 Feb 2019 11:57:36 -0800 Subject: [PATCH 6/8] Update solar_system.rb From 28b1f88aec0611029398d92515af459562085a71 Mon Sep 17 00:00:00 2001 From: Amy Wyatt Date: Wed, 27 Feb 2019 12:01:58 -0800 Subject: [PATCH 7/8] updated capitalize --- main.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.rb b/main.rb index 36aa3129..335d9d4f 100644 --- a/main.rb +++ b/main.rb @@ -89,7 +89,7 @@ def main puts "Exit\n\n" # gets user input - command = gets.chomp.downcase.capitalize! + command = gets.chomp.capitalize! end end From ae9c5d29158dc2983ba84765271307fc9b894a8b Mon Sep 17 00:00:00 2001 From: amythetester <36608155+amythetester@users.noreply.github.com> Date: Wed, 27 Feb 2019 12:02:47 -0800 Subject: [PATCH 8/8] Update main.rb --- main.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.rb b/main.rb index 36aa3129..335d9d4f 100644 --- a/main.rb +++ b/main.rb @@ -89,7 +89,7 @@ def main puts "Exit\n\n" # gets user input - command = gets.chomp.downcase.capitalize! + command = gets.chomp.capitalize! end end