From cf575c43cca7e08a9c710e5e1b6f488fa1a812a8 Mon Sep 17 00:00:00 2001 From: DSMdongly Date: Wed, 8 Nov 2017 20:27:28 +0900 Subject: [PATCH] Game Shop Part 1 ~ 3 --- .../part-1/pkg/windows_amd64/game-shop/item.a | Bin 0 -> 8542 bytes .../part-1/src/game-shop/item/item.go | 29 ++++++ .../game-shop/part-1/src/game-shop/main.go | 13 +++ .../part-2/pkg/windows_amd64/game-shop/item.a | Bin 0 -> 17880 bytes .../part-2/src/game-shop/item/armor.go | 20 ++++ .../part-2/src/game-shop/item/item.go | 27 ++++++ .../part-2/src/game-shop/item/weapon.go | 20 ++++ .../game-shop/part-2/src/game-shop/main.go | 13 +++ .../part-3/pkg/windows_amd64/game-shop/item.a | Bin 0 -> 23296 bytes .../part-3/pkg/windows_amd64/game-shop/shop.a | Bin 0 -> 6028 bytes .../part-3/src/game-shop/item/armor.go | 20 ++++ .../part-3/src/game-shop/item/item.go | 27 ++++++ .../part-3/src/game-shop/item/potion.go | 23 +++++ .../part-3/src/game-shop/item/weapon.go | 20 ++++ .../game-shop/part-3/src/game-shop/main.go | 87 ++++++++++++++++++ .../part-3/src/game-shop/shop/shop.go | 23 +++++ 16 files changed, 322 insertions(+) create mode 100644 Solutions/DSMdongly/game-shop/part-1/pkg/windows_amd64/game-shop/item.a create mode 100644 Solutions/DSMdongly/game-shop/part-1/src/game-shop/item/item.go create mode 100644 Solutions/DSMdongly/game-shop/part-1/src/game-shop/main.go create mode 100644 Solutions/DSMdongly/game-shop/part-2/pkg/windows_amd64/game-shop/item.a create mode 100644 Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/armor.go create mode 100644 Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/item.go create mode 100644 Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/weapon.go create mode 100644 Solutions/DSMdongly/game-shop/part-2/src/game-shop/main.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/pkg/windows_amd64/game-shop/item.a create mode 100644 Solutions/DSMdongly/game-shop/part-3/pkg/windows_amd64/game-shop/shop.a create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/armor.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/item.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/potion.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/weapon.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/main.go create mode 100644 Solutions/DSMdongly/game-shop/part-3/src/game-shop/shop/shop.go diff --git a/Solutions/DSMdongly/game-shop/part-1/pkg/windows_amd64/game-shop/item.a b/Solutions/DSMdongly/game-shop/part-1/pkg/windows_amd64/game-shop/item.a new file mode 100644 index 0000000000000000000000000000000000000000..c03aeee77d2d65f2bcb151795b24c819643f130b GIT binary patch literal 8542 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 literal 0 HcmV?d00001 diff --git a/Solutions/DSMdongly/game-shop/part-1/src/game-shop/item/item.go b/Solutions/DSMdongly/game-shop/part-1/src/game-shop/item/item.go new file mode 100644 index 0000000..8ea87c2 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-1/src/game-shop/item/item.go @@ -0,0 +1,29 @@ +package item + +import ( + "fmt" +) + +type Item struct { + Name string + Description string + Weight int + Value int +} + +func NewItem(nme string, dsc string, wgt int, val int) *Item { + return &Item{ + Name: nme, + Description: dsc, + Weight: wgt, + Value: val, + } +} + +func (ite Item) Describe() { + fmt.Println() + fmt.Printf("Name = %s\n", ite.Name) + fmt.Printf("Description = %s\n", ite.Description) + fmt.Printf("Weight = %d lbs\n", ite.Weight) + fmt.Printf("Value = %d gold coins\n", ite.Value) +} diff --git a/Solutions/DSMdongly/game-shop/part-1/src/game-shop/main.go b/Solutions/DSMdongly/game-shop/part-1/src/game-shop/main.go new file mode 100644 index 0000000..a3a2bea --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-1/src/game-shop/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "game-shop/item" +) + +func main() { + swd := item.NewItem("Excalibur", "The legendary sword of King Arthur", 12, 1024) + swd.Describe() + + arm := item.NewItem("Steel Armor", "Protective covering made by steel", 15, 805) + arm.Describe() +} diff --git a/Solutions/DSMdongly/game-shop/part-2/pkg/windows_amd64/game-shop/item.a b/Solutions/DSMdongly/game-shop/part-2/pkg/windows_amd64/game-shop/item.a new file mode 100644 index 0000000000000000000000000000000000000000..afde148c046e31d7d04ac07bd2b53fdf6a6e5e4b GIT binary patch literal 17880 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 R&DatMLH_vU6ZJnn{5P`0Q)~bL literal 0 HcmV?d00001 diff --git a/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/armor.go b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/armor.go new file mode 100644 index 0000000..2171b66 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/armor.go @@ -0,0 +1,20 @@ +package item + +import "fmt" + +type Armor struct { + Item + Defense int +} + +func NewArmor(nme string, dsc string, wgt int, val int, def int) *Armor { + return &Armor{ + Item: *NewItem(nme, dsc, wgt, val), + Defense: def, + } +} + +func (arm Armor) Describe() { + arm.Item.Describe() + fmt.Printf("Defense = %d\n", arm.Defense) +} diff --git a/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/item.go b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/item.go new file mode 100644 index 0000000..b9f69db --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/item.go @@ -0,0 +1,27 @@ +package item + +import "fmt" + +type Item struct { + Name string + Description string + Weight int + Value int +} + +func NewItem(nme string, dsc string, wgt int, val int) *Item { + return &Item{ + Name: nme, + Description: dsc, + Weight: wgt, + Value: val, + } +} + +func (ite Item) Describe() { + fmt.Println() + fmt.Printf("Name = %s\n", ite.Name) + fmt.Printf("Description = %s\n", ite.Description) + fmt.Printf("Weight = %d lbs\n", ite.Weight) + fmt.Printf("Value = %d gold coins\n", ite.Value) +} diff --git a/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/weapon.go b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/weapon.go new file mode 100644 index 0000000..26c24f8 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/item/weapon.go @@ -0,0 +1,20 @@ +package item + +import "fmt" + +type Weapon struct { + Item + Damage int +} + +func NewWeapon(nme string, dsc string, wgt int, val int, dmg int) *Weapon { + return &Weapon{ + Item: *NewItem(nme, dsc, wgt, val), + Damage: dmg, + } +} + +func (wep Weapon) Describe() { + wep.Item.Describe() + fmt.Printf("Damage = %d\n", wep.Damage) +} diff --git a/Solutions/DSMdongly/game-shop/part-2/src/game-shop/main.go b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/main.go new file mode 100644 index 0000000..44fa38e --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-2/src/game-shop/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "game-shop/item" +) + +func main() { + wep := item.NewWeapon("Excalibur", "The legendary sword of King Arthur", 12, 1024, 24) + wep.Describe() + + arm := item.NewArmor("Steel Armor", "Protective covering made by steel", 15, 805, 18) + arm.Describe() +} diff --git a/Solutions/DSMdongly/game-shop/part-3/pkg/windows_amd64/game-shop/item.a b/Solutions/DSMdongly/game-shop/part-3/pkg/windows_amd64/game-shop/item.a new file mode 100644 index 0000000000000000000000000000000000000000..f2eb68eee68c470fa04bf795dbf01f13d92dc943 GIT binary patch literal 23296 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 I{>=&h0~_I7)&Kwi literal 0 HcmV?d00001 diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/armor.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/armor.go new file mode 100644 index 0000000..2171b66 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/armor.go @@ -0,0 +1,20 @@ +package item + +import "fmt" + +type Armor struct { + Item + Defense int +} + +func NewArmor(nme string, dsc string, wgt int, val int, def int) *Armor { + return &Armor{ + Item: *NewItem(nme, dsc, wgt, val), + Defense: def, + } +} + +func (arm Armor) Describe() { + arm.Item.Describe() + fmt.Printf("Defense = %d\n", arm.Defense) +} diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/item.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/item.go new file mode 100644 index 0000000..b9f69db --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/item.go @@ -0,0 +1,27 @@ +package item + +import "fmt" + +type Item struct { + Name string + Description string + Weight int + Value int +} + +func NewItem(nme string, dsc string, wgt int, val int) *Item { + return &Item{ + Name: nme, + Description: dsc, + Weight: wgt, + Value: val, + } +} + +func (ite Item) Describe() { + fmt.Println() + fmt.Printf("Name = %s\n", ite.Name) + fmt.Printf("Description = %s\n", ite.Description) + fmt.Printf("Weight = %d lbs\n", ite.Weight) + fmt.Printf("Value = %d gold coins\n", ite.Value) +} diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/potion.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/potion.go new file mode 100644 index 0000000..69e6ffb --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/potion.go @@ -0,0 +1,23 @@ +package item + +import "fmt" + +type Potion struct { + Item + Type string + Capacity int +} + +func NewPotion(nme string, dsc string, wgt int, val int, typ string, cap int) *Potion { + return &Potion{ + Item: *NewItem(nme, dsc, wgt, val), + Type: typ, + Capacity: cap, + } +} + +func (pot Potion) Describe() { + pot.Item.Describe() + fmt.Printf("Type = %s\n", pot.Type) + fmt.Printf("Capacity = %d\n", pot.Capacity) +} diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/weapon.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/weapon.go new file mode 100644 index 0000000..26c24f8 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/item/weapon.go @@ -0,0 +1,20 @@ +package item + +import "fmt" + +type Weapon struct { + Item + Damage int +} + +func NewWeapon(nme string, dsc string, wgt int, val int, dmg int) *Weapon { + return &Weapon{ + Item: *NewItem(nme, dsc, wgt, val), + Damage: dmg, + } +} + +func (wep Weapon) Describe() { + wep.Item.Describe() + fmt.Printf("Damage = %d\n", wep.Damage) +} diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/main.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/main.go new file mode 100644 index 0000000..c5b90b9 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/main.go @@ -0,0 +1,87 @@ +package main + +import ( + "fmt" + "game-shop/item" + "game-shop/shop" + "log" + "strconv" + "time" +) + +func main() { + esh := InitEquipmentShop() + psh := InitPotionShop() + +SHOP_SELECTION: + for { + fmt.Println() + fmt.Println("Shop Select") + fmt.Println() + fmt.Println("1. Weapon/Armor Shop") + fmt.Println("2. Potion Shop") + fmt.Println("3. Exit") + fmt.Println() + + buf := "" + fmt.Scanln(&buf) + + flg, err := strconv.Atoi(buf) + + if err != nil { + log.Fatal(err) + } + + switch flg { + case 1: + fmt.Println() + fmt.Println("Welcome to Weapon/Armor Shop!") + fmt.Println() + + time.Sleep(time.Millisecond * 500) + esh.ShowItemList() + + break + case 2: + fmt.Println() + fmt.Println("Welcome to Potion Shop!") + fmt.Println() + + time.Sleep(time.Millisecond * 500) + psh.ShowItemList() + + break + case 3: + break SHOP_SELECTION + default: + fmt.Println() + fmt.Println("Invalid number! Try again.") + + continue SHOP_SELECTION + } + } +} + +func InitEquipmentShop() *shop.Shop { + eqps := make([]shop.Item, 0) + eqps = append(eqps, item.NewWeapon("Sword", "Medium DMG", 3, 10, 10)) + eqps = append(eqps, item.NewWeapon("Cap", "Light Armor", 1, 5, 5)) + eqps = append(eqps, item.NewWeapon("Gloves", "Light Armor", 1, 5, 5)) + eqps = append(eqps, item.NewWeapon("Axe", "High DMG", 5, 15, 15)) + eqps = append(eqps, item.NewWeapon("Boots", "Light Armor", 1, 5, 5)) + + esh := shop.NewShop("Weapon/Armor Shop", eqps) + return esh +} + +func InitPotionShop() *shop.Shop { + pots := make([]shop.Item, 0) + pots = append(pots, item.NewPotion("Small Health Potion", "Recovery 100 HP", 2, 5, "Health", 100)) + pots = append(pots, item.NewPotion("Small Mana Potion", "Recovery 50 MP", 1, 30, "Mana", 50)) + pots = append(pots, item.NewPotion("Medium Health Potion", "Recovery 200 HP", 4, 120, "Health", 200)) + pots = append(pots, item.NewPotion("Small Health Potion", "Recovery 100 MP", 2, 75, "Mana", 100)) + pots = append(pots, item.NewPotion("Large Health Potion", "Recovery 300 HP", 6, 200, "Health", 300)) + + psh := shop.NewShop("Potion Shop", pots) + return psh +} diff --git a/Solutions/DSMdongly/game-shop/part-3/src/game-shop/shop/shop.go b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/shop/shop.go new file mode 100644 index 0000000..b3b1622 --- /dev/null +++ b/Solutions/DSMdongly/game-shop/part-3/src/game-shop/shop/shop.go @@ -0,0 +1,23 @@ +package shop + +type Item interface { + Describe() +} + +type Shop struct { + Name string + Items []Item +} + +func NewShop(nme string, ites []Item) *Shop { + return &Shop{ + Name: nme, + Items: ites, + } +} + +func (shp Shop) ShowItemList() { + for _, ite := range shp.Items { + ite.Describe() + } +}