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;
}
}
}