From c8d715537904a383176d2506ac62433a5972f58f Mon Sep 17 00:00:00 2001 From: "Seungbin.Park" Date: Tue, 16 Jun 2026 14:02:24 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EC=97=B0=EC=8A=B5=EB=AC=B8=EC=A0=9C1,2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/src/main/Exercise.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 game/src/main/Exercise.md diff --git a/game/src/main/Exercise.md b/game/src/main/Exercise.md new file mode 100644 index 0000000..896ea8b --- /dev/null +++ b/game/src/main/Exercise.md @@ -0,0 +1,22 @@ +11장 상속 연습문제 + +#문제 1 + +**정답** : 2,3,5 + +2번 : 엔진은 자동차의 부품이지만 자동차는 아니다 + +3번 : 자식은 아버지가 아니다 + +5번 : 서로의 개념이 바뀌었음 + +#문제 2 + +**정답** : + +(1) : 부모클래스 - Electronic devices / 자식클래스 - iphone + +(2) : 부모클래스 - Transportation / 자식클래스 - bmw + +(3) : 부모클래스 - BOOK / 자식클래스 - EnglishDictionary + From b990f72f78ff32424ec50c9d84438af056922281 Mon Sep 17 00:00:00 2001 From: "Seungbin.Park" Date: Tue, 16 Jun 2026 17:00:38 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=97=B0=EC=8A=B5=EB=AC=B8=EC=A0=9C3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/survivalcoding/Main.java | 65 ++++++++++++++++--- .../java/com/survivalcoding/PoisonSlime.java | 24 +++++++ .../main/java/com/survivalcoding/Slime.java | 28 ++++++++ 3 files changed, 109 insertions(+), 8 deletions(-) create mode 100644 game/src/main/java/com/survivalcoding/PoisonSlime.java create mode 100644 game/src/main/java/com/survivalcoding/Slime.java diff --git a/game/src/main/java/com/survivalcoding/Main.java b/game/src/main/java/com/survivalcoding/Main.java index 03dc735..ed83965 100644 --- a/game/src/main/java/com/survivalcoding/Main.java +++ b/game/src/main/java/com/survivalcoding/Main.java @@ -4,16 +4,65 @@ // click the icon in the gutter. public class Main { public static void main(String[] args) { - // 인스턴스 생성 - Hero hero = new Hero(); - hero.hp = 10; - hero.attack(); // 9 - hero.attack(); // 8 + //용사 이름, hp를 설정 + Hero hero = new Hero("김용사"); + Hero hero2 = new Hero(); - System.out.println(hero.hp); // 8 + SuperHero superHero = new SuperHero("홍길동", 50); + superHero.run(); - int a = 10; - long l = 10L; // literal 리터럴 + PoisonSlime poisonSlime = new PoisonSlime("독"); + poisonSlime.setHp(100); + poisonSlime.attack(superHero); + + + //hero.name = "김용사"; + //hero.hp = 100; +// System.out.println("용사" + hero.name + "를 생성했습니다!"); +// System.out.println("용사의 체력은" + hero.hp + "입니다!"); +// System.out.println("용사의 재력은" + Hero.money + "입니다!"); +// Hero.money = 200; +// System.out.println("용사의 재력은" + Hero.money + "입니다!"); +// +// System.out.println("용사" + hero2.name + "를 생성했습니다!"); +// System.out.println("용사의 체력은" + hero2.hp + "입니다!"); +// Hero.setRandomMoney(); +// System.out.println("용사의 재력은" + Hero.money + "입니다!"); +// +// Wizard wizard = new Wizard(); +// wizard.name = "김법사"; +// wizard.hp = 50; + +// wizard.heal(hero); + + //검 이름, 데미지 설정 +// Sword sword = new Sword(); +// sword.name = "불의 검"; +// sword.damage = 10; +// System.out.println("현재 무기는" + sword.name + "입니다!"); +// +// Kinoko kinoko1 = new Kinoko(); +// kinoko1.hp = 50; +// kinoko1.suffix = 'A'; +// +// Kinoko kinoko2 = new Kinoko(); +// kinoko2.hp = 51; +// kinoko2.suffix = 'B'; + + //용사에게 5초 앉기 , 넘어지기 , 25초앉기 , 도망을 지시 +// hero.sit(5); +// hero.slip(); +// hero.sit(25); +// hero.run(); + + //용사 공격 +// hero.attack(); // 9 +// hero.attack(); // 8 + +// System.out.println(hero.hp); // 8 + +// int a = 10; +// long l = 10L; // literal 리터럴 } } \ No newline at end of file diff --git a/game/src/main/java/com/survivalcoding/PoisonSlime.java b/game/src/main/java/com/survivalcoding/PoisonSlime.java new file mode 100644 index 0000000..fb560df --- /dev/null +++ b/game/src/main/java/com/survivalcoding/PoisonSlime.java @@ -0,0 +1,24 @@ +package com.survivalcoding; + +public class PoisonSlime extends Slime { + + private int poisonCount = 5; //독 공격 가능 횟수 + + public PoisonSlime(String suffix) { + super(suffix); + } + + @Override + public void attack(Hero hero) { + super.attack(hero); + + if (poisonCount != 0) { + System.out.println("추가로, 독 포자를 살포했다!"); + int poisonDamage = hero.getHp() / 5; //독데미지 + hero.setHp(hero.getHp() - poisonDamage); + System.out.println(poisonDamage + "포인트 데미지"); + this.poisonCount--; //독 공격 가능 횟수 차감 + } + } + +} diff --git a/game/src/main/java/com/survivalcoding/Slime.java b/game/src/main/java/com/survivalcoding/Slime.java new file mode 100644 index 0000000..efd8938 --- /dev/null +++ b/game/src/main/java/com/survivalcoding/Slime.java @@ -0,0 +1,28 @@ +package com.survivalcoding; + +public class Slime { + final String suffix; + int hp; + + public Slime(String suffix) { + this.suffix = suffix; + } + + public String getSuffix() { + return this.suffix; + } + + public int getHp() { + return this.hp; + } + + public void setHp(int hp) { + this.hp = hp; + } + + void attack(Hero hero) { + System.out.println("슬라임 " + suffix + "이/가 공격했다"); + System.out.println("10의 데미지"); + hero.setHp(hero.getHp() - 10); + } +} From 98bb5ee5c6f0ea6659703ed22926d5ccc23c0ac9 Mon Sep 17 00:00:00 2001 From: "Seungbin.Park" Date: Tue, 16 Jun 2026 17:18:20 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=97=B0=EC=8A=B5=EB=AC=B8=EC=A0=9C4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/survivalcoding/Hero.java | 59 +++++++++++++++++++ .../main/java/com/survivalcoding/Main.java | 3 + .../main/java/com/survivalcoding/Wizard.java | 16 +++++ 3 files changed, 78 insertions(+) create mode 100644 game/src/main/java/com/survivalcoding/Wizard.java diff --git a/game/src/main/java/com/survivalcoding/Hero.java b/game/src/main/java/com/survivalcoding/Hero.java index ce52b3a..bfeb152 100644 --- a/game/src/main/java/com/survivalcoding/Hero.java +++ b/game/src/main/java/com/survivalcoding/Hero.java @@ -1,8 +1,42 @@ package com.survivalcoding; +import java.util.Random; + public class Hero { + static final int MAX_HP = 100; + static int money = 100; + String name; int hp; + Sword sword; + + Hero() { + this.name = "임용사"; + this.hp = 100; + } + + Hero(String name) { + this.name = name; + this.hp = 99; + } + + public Hero(String name, int hp) { + this.name = name; + this.hp = hp; + } + + public int getHp() { + return this.hp; + } + + public void setHp(int hp) { + this.hp = Math.min(hp, MAX_HP); + } + + static void setRandomMoney() { + money = new Random().nextInt(1000); + System.out.println("초기금 : " + money); + } // 나는 공격하면 hp 가 1씩 빠진다 void attack() { @@ -10,4 +44,29 @@ void attack() { // sout System.out.println("공격했다"); } + + void run() { + System.out.println(this.name + "는 도망쳤다!"); + System.out.println("GAME OVER"); + System.out.println("최종 HP는" + this.hp + "입니다"); + } + + void sit(int sec) { + //앉은 초 수만큼 hp 증가 + this.hp += sec; + + System.out.println(this.name + "는" + sec + "초 앉았다"); + System.out.println("HP가" + sec + "포인트 회복되었다"); + } + + void slip() { + this.hp -= 5; + System.out.println(this.name + "는 넘어졌다!"); + System.out.println("5의 데미지!"); + } + + void sleep() { + this.hp = 100; + System.out.println(this.name + "는 잠을 자고 회복했다!"); + } } diff --git a/game/src/main/java/com/survivalcoding/Main.java b/game/src/main/java/com/survivalcoding/Main.java index ed83965..295fdfb 100644 --- a/game/src/main/java/com/survivalcoding/Main.java +++ b/game/src/main/java/com/survivalcoding/Main.java @@ -16,6 +16,9 @@ public static void main(String[] args) { poisonSlime.setHp(100); poisonSlime.attack(superHero); + Wizard wizard = new Wizard(); + wizard.heal(hero); + //hero.name = "김용사"; //hero.hp = 100; diff --git a/game/src/main/java/com/survivalcoding/Wizard.java b/game/src/main/java/com/survivalcoding/Wizard.java new file mode 100644 index 0000000..8a8e1ac --- /dev/null +++ b/game/src/main/java/com/survivalcoding/Wizard.java @@ -0,0 +1,16 @@ +package com.survivalcoding; + +public class Wizard { + String name; + int hp; + private int mp = 100; + + public void heal(Hero hero) { + if (this.mp >= 10) { + int heal = 20; + hero.setHp(hero.getHp() + heal); + this.mp -= 10; + System.out.println("힐을 시전했습니다. " + hero.name + "HP : " + hero.getHp()); + } + } +} From 65aa665c11040ec57c7e709c507b1611ff4ef622 Mon Sep 17 00:00:00 2001 From: "Seungbin.Park" Date: Tue, 16 Jun 2026 17:42:42 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=97=B0=EC=8A=B5=EB=AC=B8=EC=A0=9C5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/survivalcoding/GreatWizard.java | 24 +++++++++++++++++++ .../main/java/com/survivalcoding/Main.java | 10 +++++--- .../main/java/com/survivalcoding/Wizard.java | 11 ++++++--- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 game/src/main/java/com/survivalcoding/GreatWizard.java diff --git a/game/src/main/java/com/survivalcoding/GreatWizard.java b/game/src/main/java/com/survivalcoding/GreatWizard.java new file mode 100644 index 0000000..6a831a3 --- /dev/null +++ b/game/src/main/java/com/survivalcoding/GreatWizard.java @@ -0,0 +1,24 @@ +package com.survivalcoding; + +public class GreatWizard extends Wizard { + + public GreatWizard() { + this.mp = 150; + this.heal = 25; + this.mpCost = 5; + } + + public void heal(Hero hero) { + super.heal(hero); + } + + public void superHeal(Hero hero) { + if (this.mp >= 50) { + hero.setHp(Hero.MAX_HP); + this.mp -= 50; + System.out.println("슈퍼 힐을 시전했습니다. " + hero.name + "HP : " + hero.getHp()); + } else { + System.out.println("마나가 부족합니다"); + } + } +} diff --git a/game/src/main/java/com/survivalcoding/Main.java b/game/src/main/java/com/survivalcoding/Main.java index 295fdfb..bebd0be 100644 --- a/game/src/main/java/com/survivalcoding/Main.java +++ b/game/src/main/java/com/survivalcoding/Main.java @@ -9,15 +9,19 @@ public static void main(String[] args) { Hero hero = new Hero("김용사"); Hero hero2 = new Hero(); - SuperHero superHero = new SuperHero("홍길동", 50); + SuperHero superHero = new SuperHero("홍길동", 100); superHero.run(); PoisonSlime poisonSlime = new PoisonSlime("독"); poisonSlime.setHp(100); poisonSlime.attack(superHero); - Wizard wizard = new Wizard(); - wizard.heal(hero); +// Wizard wizard = new Wizard(); +// wizard.heal(hero); + + GreatWizard grateWizard = new GreatWizard(); + grateWizard.heal(superHero); + grateWizard.superHeal(superHero); //hero.name = "김용사"; diff --git a/game/src/main/java/com/survivalcoding/Wizard.java b/game/src/main/java/com/survivalcoding/Wizard.java index 8a8e1ac..075c355 100644 --- a/game/src/main/java/com/survivalcoding/Wizard.java +++ b/game/src/main/java/com/survivalcoding/Wizard.java @@ -3,14 +3,19 @@ public class Wizard { String name; int hp; - private int mp = 100; + //protected : 자식클래스 사용 가능하도록 만듬 + protected int heal = 20; + protected int mp = 100; + protected int mpCost = 10; public void heal(Hero hero) { + System.out.println("현재 체력 : " + hero.getHp()); if (this.mp >= 10) { - int heal = 20; hero.setHp(hero.getHp() + heal); - this.mp -= 10; + this.mp -= mpCost; System.out.println("힐을 시전했습니다. " + hero.name + "HP : " + hero.getHp()); + } else { + System.out.println("마나가 부족합니다"); } } }