20231120_기록_C# Console에서의 글 정렬

2023. 11. 20. 21:27IT/TIL

오늘 한 것들

 

알고리즘 코드카타

Chapter 2 프로그래밍기초 팀 프로젝트

 

 

오늘 프로젝트에서 했던 작업은

Status 창의 디자인을 수정하여 캐릭터 아바타 만들기

Inventory와 연동하여 장착하고 있는 아이템 정보 받아오기

받아온 데이터로 Status 창의 아바타 이미지와 연동하기

기본 UI에 캐릭터 레벨, 공격력, 방어력, 소지금을 연동하여 UnderUI에 상시 표시되게 하기

 

 

이 중에서 오늘 적을 내용은 다른 Script에서 데이터를 받아오는 내용과

글을 가운데로 정렬하는 것으로,

 

우선 다른 Script에서 데이터를 받아오는 내용을 무기(Weapon)을 기준으로 작성하면

private BaseItem statusWeapon;

 

 

위 처럼 Class로 지정한 BaseItem을 private로 선언했다.

for (int i = 0; i < Inventory.GetListCount(ItemType.Weapon); i++)
	statusWeapon = Inventory.GetItem(i, ItemType.Weapon);

 

그 후에 위처럼 모든 ItemType이 Weapon인 데이터를 가져오면되는데,

Inventory 라는 Script에서 가져오므로 Inventory.~~ 로 지정해서 데이터를 받아오면 된다.

	public void CurrentEquipmentItem()
    {
		if (statusWeapon != null && statusWeapon.ItemType == ItemType.Weapon)
    	EquipWeapon = statusWeapon.Name;
    }

 

그 후에 내가 함수로 사용하는 경우에는 public void만 사용해야 사용할 수 있다.

위에서 private로 한 것과 연결되는 것으로 매번 하듯이 아래처럼

public BaseItem statusWeapon;

public void CurrentEquipmentItem()
{

}

 

으로 선언하면 사용할 수 없었는데 (CS0120 에러) 다른 곳에서 이미 선언하고 사용하고 있는 데이터를

사용하려고 하는 경우에 static으로 선언하는 과정에서 그 데이터에 접근할 수 없는 경우로

접근 권한이 없는 데이터를 static으로 선언하는 경우에 해당 오류가 발생하는 것으로 파악되었다.

 

따라서 해당 데이터를 내가 사용하는 경우에 데이터를 가져오기만 하는 방식으로 이를 해결하였는데,

그 방법이 private로 선언하고, 데이터를 가져온 후에 static을 사용하지 않는 방식이었다.

이 static, private, public에 대해서는 아직 애매모호한 점이 많은데,

좀 더 공부하면서 해당 단어의 쓰임새에 대해서 알아나가야겠다.

 

 

두 번째로 쓰는 내용은 C#의 Console에서 글씨를 가운데 정렬하는 방법으로

Console.WriteLine(""); 을 사용하는 경우에 글씨를 정렬하고 싶을 때,

예를 들어 string str = "Hello"; 인 경우

int sLen = str.Length(); 로 글씨의 길이를 확인하고,

시작 좌표와 끝 좌표의 데이터를 가지고 글씨가 쓰일 곳에 커서를 놓은 후에

Console.WriteLine(str); 을 수행하는 것으로

예를 들어

시작 좌표가 (50, 10) 이고 끝 좌표가 (91, 10)인 경우에는 아래로 표시할 수 있는데,

string str = "Hello";
int sLen = str.Length;
int startXPos = 50;
int endXPos = 91;
int wordPos = (endX - startX - sLen) / 2;

Console.SetCursorPosition(startX + wordPos, 10);
Console.WriteLine(str);

 

수학적으로 생각하면,

(50, 10) 에서 (91, 10)의 가운데에 길이가 5인 데이터가 들어가야되는 것으로

a를 가운데 글씨와 각 끝점의 거리라고 한다면,

50 ~ a ~ 5 ~ a ~ 91 으로 표현할 수 있다.

따라서 91 - 40 = 2a + 5 -> 2a + 5 = 31 -> 2a = 36 -> a = 18 로 a값을 구할 수 있는데,

이를 코드를 통해 나타낸 것이다.

 

워드프로그램을 사용하는 경우에 간단히 사용했던 가운데 정렬도 기본적으로 되는 것이 아니라,

위와 같은 일련의 과정을 거쳐야되었다는 점을 다시금 깨달았다.