Adding week3 assignment
							parent
							
								
									ad88f1694a
								
							
						
					
					
						commit
						e7fd00ed1e
					
				@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Animal struct {
 | 
				
			||||||
 | 
						food, locomotion, sound string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Animal) Eat() {
 | 
				
			||||||
 | 
						fmt.Println(v.food)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Animal) Move() {
 | 
				
			||||||
 | 
						fmt.Println(v.locomotion)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Animal) Speak() {
 | 
				
			||||||
 | 
						fmt.Println(v.sound)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						m := map[string]Animal{
 | 
				
			||||||
 | 
							"cow" : Animal{"grass","walk","moo"},
 | 
				
			||||||
 | 
							"bird" : Animal{"worms","fly","peep"},
 | 
				
			||||||
 | 
							"snake" : Animal{"mice","slither","hsss"},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for{
 | 
				
			||||||
 | 
							fmt.Print(">")
 | 
				
			||||||
 | 
							an:="0"
 | 
				
			||||||
 | 
							ac:="0"
 | 
				
			||||||
 | 
							fmt.Scan(&an,&ac)
 | 
				
			||||||
 | 
							if ac=="eat"{
 | 
				
			||||||
 | 
								m[an].Eat()
 | 
				
			||||||
 | 
							} else if ac=="move"{
 | 
				
			||||||
 | 
								m[an].Move()
 | 
				
			||||||
 | 
							} else if ac=="speak"{
 | 
				
			||||||
 | 
								m[an].Speak()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"bufio"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// shorter declaration option
 | 
				
			||||||
 | 
					// type Animal struct {
 | 
				
			||||||
 | 
					// 	food, locomotion, sound string
 | 
				
			||||||
 | 
					// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Animal struct {
 | 
				
			||||||
 | 
						food       string
 | 
				
			||||||
 | 
						locomotion string
 | 
				
			||||||
 | 
						noise      string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var cow Animal = Animal{"grass", "walk", "moo"}
 | 
				
			||||||
 | 
					var bird Animal = Animal{"worms", "fly", "peep"}
 | 
				
			||||||
 | 
					var snake Animal = Animal{"mice", "slither", "hiss"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a Animal) Eat() {
 | 
				
			||||||
 | 
						fmt.Println(a.food)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a Animal) Move() {
 | 
				
			||||||
 | 
						fmt.Println(a.locomotion)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a Animal) Speak() {
 | 
				
			||||||
 | 
						fmt.Println(a.noise)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ParseUserInput(s string) []string {
 | 
				
			||||||
 | 
						noNewLine := strings.Trim(s, "\n")
 | 
				
			||||||
 | 
						return strings.Split(noNewLine, " ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func ProcessCommand(cmd []string) {
 | 
				
			||||||
 | 
						switch cmd[0] {
 | 
				
			||||||
 | 
						case "cow":
 | 
				
			||||||
 | 
							PerformAction(cow, cmd[1])
 | 
				
			||||||
 | 
						case "bird":
 | 
				
			||||||
 | 
							PerformAction(bird, cmd[1])
 | 
				
			||||||
 | 
						case "snake":
 | 
				
			||||||
 | 
							PerformAction(snake, cmd[1])
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							fmt.Println("Invalid animal. Options {cow, bird, snake}")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func PerformAction(v Animal, action string) {
 | 
				
			||||||
 | 
						switch action {
 | 
				
			||||||
 | 
						case "eat":
 | 
				
			||||||
 | 
							v.Eat()
 | 
				
			||||||
 | 
						case "move":
 | 
				
			||||||
 | 
							v.Move()
 | 
				
			||||||
 | 
						case "speak":
 | 
				
			||||||
 | 
							v.Speak()
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							fmt.Println("Invalid action. Options: {eat, move, speak}")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						fmt.Println("Welcome to Animal Farm! We have a \"cow\", \"bird\", and \"snake\".")
 | 
				
			||||||
 | 
						fmt.Println("You can ask eat animal to \"eat\", \"move\", or \"speak\".")
 | 
				
			||||||
 | 
						fmt.Println("Example: >cow move")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						inputReader := bufio.NewReader(os.Stdin)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							fmt.Printf(">")
 | 
				
			||||||
 | 
							userInput, _ := inputReader.ReadString('\n')
 | 
				
			||||||
 | 
							splitInputs := ParseUserInput(userInput)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if len(splitInputs) > 2 {
 | 
				
			||||||
 | 
								fmt.Println("Error user input contains more values than the expected \"<animal> <action>\"")
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if len(splitInputs) < 2 {
 | 
				
			||||||
 | 
								fmt.Println("Error user input contains less values than the expected \"<animal> <action>\"")
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							ProcessCommand(splitInputs)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					// NOT DREW's BUT HAS GOOD INPUT COMMAND PROCESSING
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"bufio"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Animal struct {
 | 
				
			||||||
 | 
						food       string
 | 
				
			||||||
 | 
						locomotion string
 | 
				
			||||||
 | 
						noise      string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a *Animal) Eat() string {
 | 
				
			||||||
 | 
						return a.food
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a *Animal) Move() string {
 | 
				
			||||||
 | 
						return a.locomotion
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (a *Animal) Speak() string {
 | 
				
			||||||
 | 
						return a.noise
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cow := Animal{"grass", "walk", "moo"}
 | 
				
			||||||
 | 
						bird := Animal{"worms", "fly", "peep"}
 | 
				
			||||||
 | 
						snake := Animal{"mice", "slither", "hsss"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var input string
 | 
				
			||||||
 | 
						var animal string
 | 
				
			||||||
 | 
						var information string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fmt.Println("Hello. Enter in a line with a space separation an animal (cow, bird, or snake) and the information requested (eat, move or speak): ")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							scanner := bufio.NewScanner(os.Stdin)
 | 
				
			||||||
 | 
							scanner.Scan()
 | 
				
			||||||
 | 
							input = scanner.Text()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							input = strings.TrimSpace(input)
 | 
				
			||||||
 | 
							numberStrings := strings.Fields(input)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for _, item := range numberStrings {
 | 
				
			||||||
 | 
								if item == "cow" || item == "bird" || item == "snake" {
 | 
				
			||||||
 | 
									animal = item
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if item == "eat" || item == "move" || item == "speak" {
 | 
				
			||||||
 | 
									information = item
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var selectedAnimal *Animal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch animal {
 | 
				
			||||||
 | 
							case "cow":
 | 
				
			||||||
 | 
								selectedAnimal = &cow
 | 
				
			||||||
 | 
							case "bird":
 | 
				
			||||||
 | 
								selectedAnimal = &bird
 | 
				
			||||||
 | 
							case "snake":
 | 
				
			||||||
 | 
								selectedAnimal = &snake
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								fmt.Println("Invalid animal. Please, enter 'cow', 'bird' or 'snake'")
 | 
				
			||||||
 | 
								animal = ""
 | 
				
			||||||
 | 
								information = ""
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch information {
 | 
				
			||||||
 | 
							case "eat":
 | 
				
			||||||
 | 
								fmt.Println("The action for the selected animal is: ", selectedAnimal.Eat())
 | 
				
			||||||
 | 
							case "move":
 | 
				
			||||||
 | 
								fmt.Println("The action for the selected animal is: ", selectedAnimal.Move())
 | 
				
			||||||
 | 
							case "speak":
 | 
				
			||||||
 | 
								fmt.Println("The action for the selected animal is: ", selectedAnimal.Speak())
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								fmt.Println("Invalid action. Please, enter 'eat', 'move' or 'speak'")
 | 
				
			||||||
 | 
								animal = ""
 | 
				
			||||||
 | 
								information = ""
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							animal = ""
 | 
				
			||||||
 | 
							information = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue