C#/수업과제

03/12 1주차 주말과제

박준희 2021. 3. 15. 01:05

w, a, s, d키를 사용하여 스타크래프트 벌처의 움직임을 조작하고 i키를 이용하여 스파이더 마인을 매설, r키로 재시작이 가능하게 구현

 

 

 

Program.cs

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

 

App.cs

using System;

namespace Study02
{
    public class App
    {
        public App()
        {
            Screen screen = new Screen();
            Vulture vulture = new Vulture();
            Console.WriteLine("아무키나 누르면 시작됩니다.");
            while(true)
            {
                ConsoleKeyInfo input = Console.ReadKey();
                char inputKey = input.KeyChar;
                Console.Clear();
                switch(inputKey)
                {
                    case 'w':
                        if(vulture.position.y >0)
                            vulture.position.y -= 1;
                        break;
                    case 'a':
                        if (vulture.position.x > 0)
                            vulture.position.x -= 1;
                        break;
                    case 's':
                        if (vulture.position.y < 8)
                            vulture.position.y += 1;
                        break;
                    case 'd':
                        if (vulture.position.x < 15)
                            vulture.position.x += 1;
                        break;
                    case 'i':
                        vulture.SetMine();
                        break;
                    case 'r':
                        ReStart(vulture);
                        break;
                    default:
                        break;
                }
                screen.PrintScreen(vulture);
            }            
        }
        public static void ReStart(Vulture vulture)
        {
            vulture.position.x = 0;
            vulture.position.y = 0;
            vulture.spiderMines = new SpiderMine[3];
            vulture.spiderMineCount = 3;
        }
    }
}

 

Screen.cs

using System;

namespace Study02
{
    public class Screen
    {
        public Screen()
        {
            
        }
        public void PrintScreen(Vulture vulture)
        {
            Console.WriteLine("이동 : w(위), a(왼쪽), s(아래), d(오른쪽) 마인설치 : i 다시시작 : r 현재 소지 마인 갯수 : {0}", vulture.spiderMineCount);
            Console.WriteLine("벌처(v) 마인(*)");
            for (int y = 0; y < 9; y++)
            {
                for (int x = 0; x < 16; x++)
                {
                    if(vulture.position.x == x && vulture.position.y == y)
                    {   
                        Console.Write("v");
                        continue;
                    }
                    bool minePlug = false;
                    for(int i = 0; i < 3; i++)
                    {
                        if (vulture.spiderMines[i] != null && vulture.spiderMines[i].position.x == x && vulture.spiderMines[i].position.y == y)
                        {
                            Console.Write("*");
                            minePlug = true;
                            continue;
                        }
                    }
                    if(!minePlug)
                    {
                        Console.Write("o");
                    }
                }
                Console.WriteLine();
            }
        }
    }
}

 

 

Vulture.cs

namespace Study02
{
    public class Vulture : Unit
    {
        public SpiderMine[] spiderMines = new SpiderMine[3];
        public int spiderMineCount = 3;
        public Vulture()
        {
            
        }
        public void SetMine()
        {
            for(int i = 0; i < 3; i++)
            {
                if(spiderMines[i] == null)
                {
                    spiderMines[i] = new SpiderMine(this.position.x, this.position.y);
                    spiderMineCount -= 1;
                    break;
                }
            }
        }
    }
}

 

 

Vector2.cs

namespace Study02
{
    public class Vector2
    {
        public float x;
        public float y;
        public Vector2()
        {
            this.x = 0;
            this.y = 0;
        }
        public Vector2(float x, float y)
        {
            this.x = x;
            this.y = y;
        }
    }
}

 

 

Unit.cs

namespace Study02
{
    public class Unit
    {
        public Vector2 position;
        public Unit()
        {
            position = new Vector2();
        }
    }
}

 

SpiderMine.cs

namespace Study02
{
    public class SpiderMine : Unit
    {
        public SpiderMine()
        {

        }
        public SpiderMine(float x, float y)
        {
            this.position.x = x;
            this.position.y = y;
        }
    }
}