diff --git a/main.rb b/main.rb new file mode 100644 index 00000000..18f92a9b --- /dev/null +++ b/main.rb @@ -0,0 +1,62 @@ +require_relative "planet" +require_relative "solar_system" +require "colorize" + +#welcome message" +options = ["List Planets", "Planet Details", "Add Planet", "Exit"] +puts "Welcome to our Solar System! You can do the following with this program.".light_yellow +options.each do |option| + puts option.magenta +end + +def main + #initialize solar system and planets + food_way = SolarSystem.new("Pad Thai Star") + burger = Planet.new("Burger", "brown", 23, 235, "Inhabitants of planet Burger really like to eat meat.") + salad = Planet.new("Salad", "green and others depending on time", 236, 235, "The planet Salad changes colors depending on the season.") + pho = Planet.new("Pho", "white and brown", 75, 234854, "The planet Pho always smells delicious.") + + #add to solar system + food_way.add_planet(burger) + food_way.add_planet(salad) + food_way.add_planet(pho) + + # control loop for program next steps + next_step = "" + until next_step == "exit" + puts "What would you like to do? Options - 'list planets', 'planet details', 'add planet', or 'exit'".light_cyan + next_step = gets.chomp.downcase + if next_step == "list planets" + list = food_way.list_planets.white + puts list + elsif next_step == "planet details" + puts "Which planet would you like to learn more about?" + user_planet = gets.chomp + found_planet = food_way.find_planet_by_name(user_planet) + if found_planet == nil + puts "Sorry, that planet does not exist in the Food Way Solar System. Check your spelling or try a different planet.".red.on_blue + else + puts found_planet.summary.light_magenta + end + elsif next_step == "add planet" + puts "What planet would you like to add?" + new_planet = gets.chomp.capitalize + puts "What color is it?" + planet_color = gets.chomp + puts "How heavy is it - in kilograms?" + planet_mass = gets.chomp.to_i + puts "How far from the sun is it - in kilometers?" + planet_distance = gets.chomp.to_i + puts "Enter a fun fact!" + planet_fun = gets.chomp + adding_planet = Planet.new(new_planet, planet_color, planet_mass, planet_distance, planet_fun) + food_way.add_planet(adding_planet) + elsif next_step == "exit" + break + else + puts "This is not an option. Try again.".blue.on_white + end + end +end + +main diff --git a/planet.rb b/planet.rb new file mode 100644 index 00000000..1277d093 --- /dev/null +++ b/planet.rb @@ -0,0 +1,17 @@ +class Planet + def initialize(name, color, mass_kg, distance_from_the_sun_km, fun_fact) + @name = name + @color = color + mass_kg.class != Integer || mass_kg < 0 ? @mass_kg = 0 : @mass_kg = mass_kg + distance_from_the_sun_km.class != Integer || distance_from_the_sun_km < 0 ? @distance_from_the_sun_km = 0 : @distance_from_the_sun_km = distance_from_the_sun_km + @fun_fact = fun_fact + end + + attr_reader :name, :color, :mass_kg, :distance_from_the_sun_km, :fun_fact + + def summary + summary = "Planet name: #{@name} \nColor: #{@color} \nWeight: #{@mass_kg} \nDistance from sun: #{@distance_from_the_sun_km} \nFun Fact: #{@fun_fact}" + + return summary + end +end diff --git a/solar_system.rb b/solar_system.rb new file mode 100644 index 00000000..a023c4ab --- /dev/null +++ b/solar_system.rb @@ -0,0 +1,32 @@ +class SolarSystem + def initialize(star_name) + @star_name = star_name + @planets = [] + end + + attr_reader :star_name, :planets + + def add_planet(planet_instance) + @planets.push(planet_instance) + end + + def list_planets + output = "Planets orbiting #{@star_name}\n" + @planets.each_with_index do |planet, index| + output += "#{index + 1}" + ". " + planet.name + "\n" + end + return output + end + + def find_planet_by_name(planet_name) + planet_name = planet_name.downcase.capitalize + @planets.each do |planet| + if planet.name == planet_name + return planet + else + object = planet + end + end + return nil + end +end