자료구조
배열 -맵 만들고 케릭터 이동하기- 수정완료
hyunjin-dev-log
2021. 12. 25. 22:02
앱
using System;
class App
{
public int[,] arr;
private int totalRow = 4;
private int totalCol = 9;
public int val;
public App()
{
CreatMap(totalRow, totalCol); //맵생성
this.arr[2, 1] = 308; //타일을 만든다 (값을 넣는다)
this.arr[0, 4] = 308;
this.arr[0, 5] = 308;
this.arr[1, 6] = 308;
this.arr[1, 7] = 308;
this.arr[1, 8] = 308;
PrintMap(); //맵출력
Purin purin = new Purin(); //캐릭 생성
Console.WriteLine("현재위치: ({0},{1})", purin.x, purin.y);
Tree[] arrTree = new Tree[2]; //나무만들기
Tree tree1 = new Tree(0, 2);
Tree tree2 = new Tree(3, 3);
arrTree[0] = tree1;
arrTree[1] = tree2;
//푸린의 x,y값으로 row, col 인덱스를 알아내야 한다
//규칙 : x좌표를 col인덱스로 y좌표를 row인덱스로 사용한다
while (true)
{
Console.WriteLine();
Console.Write("입력대기");
ConsoleKeyInfo info = Console.ReadKey();
ConsoleKey inputKey = info.Key;
if (inputKey == ConsoleKey.RightArrow)
{
if (purin.x + 1 > 8)
{
Console.WriteLine();
Console.WriteLine("맵밖으로는 이동할수 없습니다.");
}
else
{
this.val = this.arr[purin.y, purin.x + 1]; //오른쪽으로 이동
Console.WriteLine("목표 좌표: ({0},{1})", purin.x + 1, purin.y);
Console.WriteLine("목표 타일의 값: {0}", val);
if (purin.x + 1 == arrTree[0].x && purin.y == arrTree[0].y || purin.x + 1 == arrTree[1].x && purin.y == arrTree[1].y)
{
Console.WriteLine("나무가 있어서 갈수없습니다.");
}
else if (val == 0)
{
purin.x += 1;
}
else if (val == 308)
{
Console.WriteLine("물로는 갈수 없습니다.");
}
}
Console.WriteLine("현재위치: ({0},{1})", purin.x, purin.y);
}
if (inputKey == ConsoleKey.DownArrow) //아래로 이동
{
if (purin.y + 1 > 3)
{
Console.WriteLine();
Console.WriteLine("맵밖으로는 이동할수 없습니다.");
}
else
{
this.val = this.arr[purin.y + 1, purin.x];
Console.WriteLine("목표 좌표: ({0},{1})", purin.x, purin.y + 1);
Console.WriteLine("목표 타일의 값: {0}", val);
if (purin.x == arrTree[0].x && purin.y + 1 == arrTree[0].y || purin.x == arrTree[1].x && purin.y + 1 == arrTree[1].y)
{
Console.WriteLine("나무가 있어서 갈수없습니다.");
}
else if (val == 0)
{
purin.y += 1;
}
else if (val == 308)
{
Console.WriteLine("물로는 갈수 없습니다.");
}
}
Console.WriteLine("현재위치: ({0},{1})", purin.x, purin.y);
}
if (inputKey == ConsoleKey.UpArrow) //위로 이동
{
if (purin.y - 1 < 0)
{
Console.WriteLine();
Console.WriteLine("맵밖으로는 이동할수 없습니다.");
}
else
{
this.val = this.arr[purin.y - 1, purin.x];
Console.WriteLine("목표 좌표: ({0},{1})", purin.x, purin.y - 1);
Console.WriteLine("목표 타일의 값: {0}", val);
if (purin.x == arrTree[0].x && purin.y - 1 == arrTree[0].y || purin.x == arrTree[1].x && purin.y - 1 == arrTree[1].y)
{
Console.WriteLine("나무가 있어서 갈수없습니다.");
}
else if (val == 0)
{
purin.y -= 1;
}
else if (val == 308)
{
Console.WriteLine("물로는 갈수 없습니다.");
}
}
Console.WriteLine("현재위치: ({0},{1})", purin.x, purin.y);
}
if (inputKey == ConsoleKey.LeftArrow) //왼쪽으로 이동
{
if (purin.x - 1 < 0)
{
Console.WriteLine();
Console.WriteLine("맵밖으로는 이동할수 없습니다.");
}
else
{
this.val = this.arr[purin.y, purin.x - 1];
Console.WriteLine("목표 좌표: ({0},{1})", purin.x - 1, purin.y);
Console.WriteLine("목표 타일의 값: {0}", val);
if (purin.x - 1 == arrTree[0].x && purin.y == arrTree[0].y || purin.x - 1 == arrTree[1].x && purin.y == arrTree[1].y)
{
Console.WriteLine("나무가 있어서 갈수없습니다.");
}
else if (val == 0)
{
purin.x -= 1;
}
else if (val == 308)
{
Console.WriteLine("물로는 갈수 없습니다.");
}
}
Console.WriteLine("현재위치: ({0},{1})", purin.x, purin.y);
}
Console.WriteLine();
}
}
void PrintMap()
{
for (int i = 0; i < totalRow; i++)
{
for (int j = 0; j < totalCol; j++)
{
Console.Write("{0,5}", this.arr[i, j]);
}
Console.WriteLine();
}
}
private void CreatMap(int row, int col)
{
arr = new int[row, col];
}
}
나무
using System;
class Tree
{
public int x;
public int y;
//생성자
public Tree(int x, int y)
{
this.x = x;
this.y = y;
}
}
캐릭터 푸린
using System;
class Purin
{
public int x;
public int y;
//생성자
public Purin()
{
Console.WriteLine("캐릭터 생성");
}
}