C#프로그래밍

플레이어, 몬스터, 무기[출력만, 입력포함]

다모아 2023. 7. 21. 16:46

Main 메서드 [공통]

using System;

namespace LearnDotnet
{
    internal class Program
    { 
        static void Main(string[] args)
        {
            new App(); //new: 인스턴스 호출[값이라 변수에 넣을 수 있음]
        }
    }
}

 

1. App 클래스 [출력만]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static LearnDotnet.Weapon;

namespace LearnDotnet
{
    internal class App
    {
        //데이터

        //생성자
        public App()
        {
            Player player = new Player("홍길동");
            Weapon weapon = new Weapon(eWeaponType.AXE);
            Monster monster = new Monster("고블린");
            player.Equip(weapon);
            player.Attack(monster);
        }
        //기능
    }
}

 

1. Weapon 클래스 [출력만]

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

namespace LearnDotnet
{
    internal class Weapon
    {
        public enum eWeaponType
        {
            AXE
        }

        //멤버 변수
        public int damage = 5;
        int price = 500;

        //생성자 메서드
        public Weapon(eWeaponType weapon)
        {
            Console.WriteLine("무기({0})가 생성되었습니다.", weapon);
            Console.WriteLine("공격력 : {0}", damage);
            Console.WriteLine("가격 : {0}", price);
        }
        //멤버 메서드

        
    }
}

 

1. Player 클래스 [출력만]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static LearnDotnet.Weapon;

namespace LearnDotnet
{
    internal class Player
    {
        //멤버 변수 : 데이터
        string name;
        Weapon weapon;
        int damage = 3;

        //생성자 메서드
        public Player(string name)
        {
            this.name = name;
            Console.WriteLine("플레이어({0})가 생성되었습니다.", name);
        }
        //멤버 메서드 : 기능
        public void Equip(Weapon weapon)
        {
            this.weapon = weapon;
            Console.WriteLine("{0}이 {1}를 착용했습니다.",name, eWeaponType.AXE);
        }

        public void Attack(Monster monster)
        {
            Console.WriteLine("{0}이 {1}를 공격했습니다.", name, monster.name);

            int finalDamage = this.damage + this.weapon.damage;

            monster.HitDamage(finalDamage);
        }
    }
}

 

1. Monster 클래스 [출력만]

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

namespace LearnDotnet
{
    internal class Monster
    {
        //멤버 변수
        public string name;
        int hp = 50;
        //생성자 메서드
        public Monster(string name)
        {
            this.name = name;
            Console.WriteLine("몬스터({0})가 생성되었습니다.", name);
        }
        //멤버 메서드
        public void HitDamage(int damage)
        {
            this.hp -= damage;
            Console.WriteLine("{0}이 -{1}의 데미지를 입었습니다.", name, damage);
        }
    }
}

 

2. App 클래스 [입력포함]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static LearnDotnet.Weapon;

namespace LearnDotnet
{
    internal class App
    {
        //데이터

        //생성자
        public App()
        {
            Player player = new Player();
            Weapon weapon = new Weapon(eWeaponType.AXE);
            Monster monster = new Monster();
            player.Equip(weapon);
            player.Attack(monster);
        }
        //기능
    }
}

 

2. Weapon 클래스 [입력포함]

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

namespace LearnDotnet
{
    internal class Weapon
    {
        public enum eWeaponType
        {
            AXE
        }

        //멤버 변수
        public int intDamage;
        int price = 500;

        //생성자 메서드
        public Weapon(eWeaponType weapon)
        {
            Console.Write("무기 공격력을 입력해주세요 : ");
            string damage = Console.ReadLine();
            int intDamage = Convert.ToInt32(damage);
            Console.WriteLine("무기({0})가 생성되었습니다.", weapon);
            Console.WriteLine("공격력 : {0}", intDamage);
            Console.WriteLine("가격 : {0}", price);
            this.intDamage = intDamage;
        }
        //멤버 메서드

        
    }
}

 

2. Player 클래스 [입력포함]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static LearnDotnet.Weapon;

namespace LearnDotnet
{
    internal class Player
    {
        //멤버 변수 : 데이터
        string name;
        Weapon weapon;
        int intDamage;

        //생성자 메서드
        public Player()
        {
            Console.Write("플레이어이름을 입력하세요: ");
            string name = Console.ReadLine();
            Console.Write("플레이어 공격력을 입력하세요: ");
            string damage = Console.ReadLine();
            int intDamage = Convert.ToInt32(damage);
            Console.WriteLine("플레이어({0})가 생성되었습니다.", name);
            Console.WriteLine("플레이어 공격력 : {0}", intDamage);

            this.intDamage = intDamage;
            this.name = name;
        }
        //멤버 메서드 : 기능
        public void Equip(Weapon weapon)
        {
            this.weapon = weapon;
            Console.WriteLine("{0}이 {1}를 착용했습니다.",name, eWeaponType.AXE);
        }

        public void Attack(Monster monster)
        {
            Console.WriteLine("{0}이 {1}을/를 공격했습니다.", name, monster.name);

            int finalDamage = this.intDamage + this.weapon.intDamage;

            monster.HitDamage(finalDamage);
        }
    }
}

 

2. Monster 클래스 [입력포함]

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

namespace LearnDotnet
{
    internal class Monster
    {
        //멤버 변수
        public string name;
        int hp = 50;
        //생성자 메서드
        public Monster()
        {
            Console.Write("몬스터 이름을 입력하세요 : ");
            string name = Console.ReadLine();
            Console.WriteLine("몬스터({0})가 생성되었습니다.", name);
            this.name = name;
        }
        //멤버 메서드
        public void HitDamage(int damage)
        {
            this.hp -= damage;
            Console.WriteLine("{0}이 -{1}의 데미지를 입었습니다.", name, damage);
        }
    }
}