EasyCastleUNITY

플레이어,무기,몬스터 (OOP 연습 및, 반환값, 매개변수 연습) 본문

C#프로그래밍

플레이어,무기,몬스터 (OOP 연습 및, 반환값, 매개변수 연습)

EasyCastleT 2023. 7. 21. 16:37

무기

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

namespace LearnDotnet
{
    internal class Weapon
    {
        //열거형식 정의
        public enum eWeaponType
        {
            Longsword, Shortsword, Bow, Axe
        }
        //멤버 변수
        int damage;
        int price;
        eWeaponType weaponType;
        //무기의 공격력 및 가격 랜덤 설정
        Random randomDamage = new Random();
        Random randomPrice = new Random();

        //생성자
        public Weapon(eWeaponType weaponType)
        {
            this.weaponType = weaponType;
            damage = randomDamage.Next(1, 9); //무기 공격력 1~9사이
            price=randomPrice.Next(300, 500); //무기 가격 300~500사이
            Console.WriteLine("무기({0})가 생성되었습니다", weaponType);
            Console.WriteLine("데미지:{0} 가격:{1}", damage,price);
            Console.WriteLine("-----------------------");
        }
        public int GetDamage() { return damage; }

        public eWeaponType GetWeaponType()
        {
            return weaponType;
        }
    }
}

플레이어

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

namespace LearnDotnet
{
    internal class Player
    {
        //멤버 변수
        string name;
        int attack;
        Weapon myWeapon;
        //플레이어의 데미지 1~9사이에서 랜덤 결정
        Random randomDamage = new Random();
        //생성자
        public Player()
        {
            attack = randomDamage.Next(1, 9);
            Console.Write("플레이어의 이름을 설정해주세요.:");
            name=Console.ReadLine();
            Console.WriteLine("플레이어({0})가 생성되었습니다.",name);
            Console.WriteLine("플레이어({0})의 현재 공격력:{1}", name, attack);
            Console.WriteLine("--------------------------");
        }
        public void Attack(Monster monster)
        {
            Console.WriteLine("플레이어({0})이 몬스터({1})을 공격했습니다.", name, monster.GetMonsterName());
            monster.HitDamage(this.attack);
           
        }

        public void Equip(Weapon weapon)
        {
            myWeapon = weapon;
            Console.WriteLine("플레이어({0})이 무기({1})를 착용했습니다.", name, weapon.GetWeaponType());
            attack += weapon.GetDamage();
            Console.WriteLine("현재 {0}의 공격력:{1}", name, attack);
        }

        public int getAttack()
        {
            return attack;
        }

        
    }
}

몬스터

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

namespace LearnDotnet
{
    internal class Monster
    {
        //멤버 변수
        string name;
        int damage;
        int maxHp = 12;
        int hp;
        //생성자
        public Monster()
        {
            hp = maxHp;
            Console.Write("몬스터의 이름을 설정해주세요.:");
            name = Console.ReadLine();
            Console.WriteLine("몬스터({0})가 생성되었습니다.", name);
            Console.WriteLine("몬스터({0})의 현재 HP:({1})/({2})", name, hp, maxHp);
            Console.WriteLine("--------------------------------");
        }
        //멤버 메소드
        public void HitDamage(int damage)
        {
            this.damage = damage;
            hp -= damage;
            if (hp <= 0) { hp = 0; }
            Console.WriteLine("몬스터 ({0})은 {1}의 데미지를 입었다!", name, damage);
            Console.WriteLine("몬스터 ({0})의 현재 HP:({1})/({2})",name,hp,maxHp);

            if (hp <= 0) 
            {
                Console.WriteLine("몬스터 ({0})은 죽었다!!", name);
            }
        }

        public string GetMonsterName()
        {
            return name;
        }
        public int GetHp() { return hp; }


    }
}

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

namespace LearnDotnet
{
    internal class App
    {
        //생성자
        public App()
        {
            //무기 타입 랜덤으로 선정
            Random randomNum = new Random();
            int typeNumber = randomNum.Next(0,3);
            Weapon weapon = new Weapon(Weapon.eWeaponType.Longsword + typeNumber);
            Player player= new Player();
            Monster monster = new Monster();

            player.Equip(weapon);
            player.Attack(monster);
        }
    }
}