C#/수업 내용

클래스 매개변수를 활용한 메딕 구현

HSH12345 2023. 1. 5. 11:50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class App
    {        
        //생성자
        public App()
        {
            Marine marine0 = new Marine("홍길동", 60, 34);
            Marine marine1 = new Marine("임꺽정", 60, 5);

            marine0.Att(marine1);

            Console.WriteLine("");

            Medic medic0 = new Medic(5.67f, 50);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
                        
            Console.WriteLine("");

            marine0.Att(marine1);

            Console.WriteLine("");

            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);
            medic0.Heal(marine1);

            medic0.energy = 100;
            Console.WriteLine("에너지 회복");

            Console.WriteLine("");


            marine0.Att(marine1);
            marine0.Att(marine1);

            Console.WriteLine("");

            medic0.Heal(marine1);

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class Marine
    {
        public int maxHp;

        public string name;
        public int hp;
        public int dmg;

        //생성자
        public Marine(string name, int maxHp, int dmg)
        {
            this.name = name;
            this.maxHp = maxHp;
            this.hp = this.maxHp;
            this.dmg = dmg;
            Console.WriteLine("{0}을 생성하였습니다.    ({1}/{2}) / 공격력 : {3}", name, this.hp, this.maxHp, this.dmg);
            
        }

        public void Move(Marine name)
        {
            Console.WriteLine("{0}이 이동하였습니다.", this.name);
        }

        public void Att(Marine target)
        {
            Console.WriteLine("{0}이 {1}을 공격했습니다.", this.name, target.name);
            target.Hit(this);
        }
        
        public void Hit(Marine attacker)
        {
            this.hp = this.hp - attacker.dmg;
            if(this.hp <= 0)
            {
                this.hp = 0;
                Console.WriteLine("{0}이 {1}에게 피해(-{2})를 받았습니다.    ({3}/{4})", this.name, attacker.name, attacker.dmg, this.hp, this.maxHp);
            }
            else
            {
                Console.WriteLine("{0}이 {1}에게 피해(-{2})를 받았습니다.    ({3}/{4})", this.name, attacker.name, attacker.dmg, this.hp, this.maxHp);
            }

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    
    class Medic
    {
        private string name = "메딕";
        private int maxEnergy = 200;
        private int demandenergy = 5;
        public int energy;
        private float healAmount;
        
        
        public Medic(float healAmount, int energy)
        {
            this.healAmount = healAmount;
            this.energy = energy;
        }

        public void Heal(Marine target)
        {
            if(target.hp > 0)
            {
                if (this.energy > 5)
                {
                    if(target.hp < target.maxHp)
                    {
                        target.hp = target.hp + (int)this.healAmount;
                        Console.WriteLine("{0}의 체력을 {1}회복 시켰습니다. ({2}/{3})", target.name, this.healAmount, target.hp, target.maxHp);
                        this.energy = this.energy - demandenergy;
                        Console.WriteLine("{0}의 남은 에너지 : {1}/{2}", this.name, this.energy, this.maxEnergy);
                    }
                    else
                    {
                        target.hp = target.maxHp;
                        Console.WriteLine("{0}의 체력이 가득 차서 더 이상 회복할 수 없습니다. ({1}/{2})", target.name, target.hp, target.maxHp);
                    }

                }
                else
                {
                    Console.WriteLine("에너지가 부족합니다");
                }
            }
            else
            {
                Console.WriteLine("{0}이 죽어서 회복할 수 없습니다.", target.name);
            }


        }

    }
}