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

[C# 5일차] Class 복습과 활용_Starcraft SiegeTank 모드 변환

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

Siege Tank

디폴트 탱크모드

공격력 30
생명력 150/150
방어력 1


!모드 전환!

탱크모드->시즈모드
[Siege mode] 
공격력 70
이동불가

시즈모드->탱크모드
[Tank mode] 
공격력 30
이동가능


공격하기
이동하기(시즈모드에서 이동불가)

 

App Class

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

namespace Study04
{
    class APP
    {
        //생성자

        public APP()
        {
            Console.WriteLine("APP 생성자");
            Console.WriteLine();
          
            SiegeTank tank = new SiegeTank("tank0", 150);
            Console.WriteLine("현재 모드는 : {0}", tank.modeType);

            Console.WriteLine("공격력 : {0}", tank.damage); //30
            tank.Move();        //이동했습니다. 

            tank.ChangeMode();      //탱크->공성
            Console.WriteLine("공격력 : {0}", tank.damage); //70
            tank.Move();        //이동할수 없습니다. 

            tank.ChangeMode();     //공성->탱크
            Console.WriteLine("공격력 : {0}", tank.damage); //30
            tank.Move();        //이동했습니다. 

        }
    }
}

 

SiegeTank Class

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

namespace Study04
{
    class SiegeTank
    {
        public enum ModeType
        {
            Tank,
            Siege
        }

        //값: 열거형식값, 모드타입
        public ModeType modeType;

        public string name;
        public int damage = 30;
        int hp;


        //생성자
        public SiegeTank(string name, int hp)
        {
            this.modeType = ModeType.Tank;

        }

        //모드변경
        public void ChangeMode()
        {
            //현재모드에 따라
            //탱크->공성
            //공성->탱크
            if(this.modeType == ModeType.Tank)
            {
                this.modeType = ModeType.Siege;
                this.damage = 70;

            }
            else if (this.modeType == ModeType.Siege)
            {
                this.modeType = ModeType.Tank;
                this.damage = 30;


            }
            Console.WriteLine("현재 모드는 : {0}", this.modeType);


            //공성모드 공격력: 70
            //탱크모드 공격력: 30

        }
        public void Move()
        {
            if(this.modeType == ModeType.Tank)
            {
                Console.WriteLine("이동하였습니다. ");
                Console.WriteLine();
            }
            else if (this.modeType == ModeType.Siege)
            {
                Console.WriteLine("이동불가합니다. ");
                Console.WriteLine();
            }

            //공성모드 이동불가
            //탱크모드 이동가능

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

namespace Study04
{
    class Program
    {
        static void Main(string[] args)
        {
            new APP();
        }
    }
}

실행 결과

728x90