본문 바로가기
C#/수업내용

[C# 4일차] Class를 사용한 스타크래프트 만들기

by 왹져박사 2023. 1. 4.
728x90

SCV
-------
+속성
생명력
공격력
이동속도
------
+기능
이동하다
자원을 채취하다

======
[요구사향]
SCV를 생성하고 
이동시키고 
자원을 채취하게 만들어주세요


Vulture(벌쳐)
--------
+속성
생명력 80
공격력 20
이동속도 3.126
-------
+기능
이동하다
공격하다
거미지뢰를 매설(3/3)
죽다

 

 

App class

using System;

namespace Study03
{
    class App
    {

        //생성자
        public App()
        {
            //SCV scv;
            //Console.WriteLine(scv.name); -->오류! scv가 null이어서 x . null에서 참조하려고 했기 때문!!

            SCV scv1 = new SCV();    //지역변수는 무조건 초기화

            SCV scv2 = new SCV();    //지역변수는 무조건 초기화


            scv1.hp = 60;
            scv1.damage = 5;
            scv1.v = 2.344f;

            Console.WriteLine(scv1);     //인스턴스
            Console.WriteLine(scv1.hp);  //인스턴스의 멤버변수 참조
            Console.WriteLine(scv1.damage);
            Console.WriteLine(scv1.v);

            scv1.Move();
            scv1.Get();

            Vulture vulture = new Vulture();
            vulture.hp = 80;
            vulture.damage = 20;
            vulture.v = 3.126f;


            Console.WriteLine(vulture.hp);
            Console.WriteLine(vulture.damage);
            Console.WriteLine(vulture.v);

            vulture.Move();
            vulture.Attack();
            vulture.Die();

            SpiderMine mine0 = new SpiderMine();
            SpiderMine mine1 = new SpiderMine();
            SpiderMine mine2 = new SpiderMine();

            vulture.mine0 = mine0;
            vulture.mineNow++;
            Console.WriteLine("mine:{0}", vulture.mineNow);

            vulture.mine1 = mine1;
            vulture.mineNow++;
            Console.WriteLine("mine:{0}", vulture.mineNow);

            vulture.mine2 = mine2;
            vulture.mineNow++;
            Console.WriteLine("mine:{0}", vulture.mineNow);


            vulture.InstallMine();
            vulture.InstallMine();
            vulture.InstallMine();
            vulture.InstallMine();

        }


    }
}

 

SCV class

using System;

namespace Study03
{

    class SCV
    {
        public int hp;
        public int damage;
        public float v;

        //생성자
        public SCV()
        {
            Console.WriteLine("SCV 생성자");

        }

        public void Move()
        {
            Console.WriteLine("이동하였습니다.");
        }

        public void Get()
        {
            Console.WriteLine("자원을 획득하였습니다. ");
        }

    }
}

 

Vulture class

using System;

namespace Study03
{
    class Vulture
    {
        const int MAX_MINE_COUNT = 3;
        //멤버 변수
        public int hp;
        public int damage;
        public float v;
        public SpiderMine mine0;
        public SpiderMine mine1;
        public SpiderMine mine2;

        public int mineNow = 0;


        //생성자
        public Vulture()
        {
            Console.WriteLine("Vulture 생성자");

        }

        //멤버 메서드
        public void Move()
        {
            this.v = 3.126f;
            Console.WriteLine("이동하였습니다. ");
        }
        public void Attack()
        {
            Console.WriteLine("공격하였습니다. ");
        }
        public void Die()
        {
            Console.WriteLine("죽었습니다. ");
        }


        public void InstallMine()
        {

            if (mine0 != null)
            {
                mine0 = null;
                --mineNow;
                Console.WriteLine("mine0을 설치하였습니다. ({0}/{1})", mineNow, MAX_MINE_COUNT);
                
            }
            else if (mine1 != null)
            {
                mine1 = null;
                --mineNow;
                Console.WriteLine("mine1을 설치하였습니다. ({0}/{1})", mineNow, MAX_MINE_COUNT);

            }
            else if (mine2 != null)
            {
                --mineNow;
                mine2 = null;
                Console.WriteLine("mine2을 설치하였습니다. ({0}/{1})", mineNow, MAX_MINE_COUNT);

            }
            else
            {
                Console.WriteLine("mine이 없습니다.");
            }


        }
    }
}

 

SpiderMine class

using System;

namespace Study03
{
    class SpiderMine
    {
        //생성자
        public SpiderMine()
        {
            Console.WriteLine("SpiderMine 이 생성되었습니다");
        }
    }
}
//컨트롤 + K + C : 주석 (comment) : 컴파일 과정에서 해석되지 않음
using System;

namespace Study03
{
    class Program
    {

        static void Main(string[] args) //프로그램이 실행되면 최초 실행되는 Main메서드(진입 지점)
        {
            App app = new App();
        }
    }
}

728x90