728x90

이거 완전 꿀팁입니다! 마비노기 모바일 플레이하시는 분들, Mabinogi Helper 꼭 사용해 보세요!

혹시 마비노기 모바일 플레이하시면서 매일, 매주 해야 할 것들을 자주 잊으시거나, 복잡한 성장 목표 때문에 무엇을 먼저 해야 할지 헷갈리시는 분들 계신가요? 저도 그랬었는데, 얼마 전에 정말 유용한 사이트를 하나 발견했습니다. 바로 Mabinogi Helper 라는 곳인데, 사용해 보니 정말 편리했습니다!

 

https://mabinogihelper.org

🎮 어떤 점이 좋았는지 알려드리겠습니다!

✨ 나만의 맞춤형 Todo 리스트 (할 일 목록)

매일 해야 하는 퀘스트나 던전, 주간 숙제 같은 것을 일일이 기억하기 어려우셨을 텐데요. Mabinogi Helper에서는 캐릭터별로 해야 할 일들을 정리해서 보여줍니다! 진행 상황도 체크할 수 있고, 원하시는 할 일을 추가하여 관리하실 수도 있습니다. 게다가 매일 자동으로 초기화되어서 정말 편리합니다.

메인 화면에서 오늘, 이번 주에 무엇을 해야 하는지 쉽게 확인할 수 있고, 완료되면 체크하거나 횟수도 수정할 수 있습니다. 순서도 원하는 대로 변경 가능합니다! 새로운 할 일을 추가하는 것도 매우 간단합니다. 제목을 쓰고, 몇 번 해야 하는지, 언제 초기화할 것인지, 어떤 캐릭터로 할 것인지까지 설정할 수 있습니다.

🛒 놓치지 않는 ToBuy 리스트 (구매 목록)

期間限定 아이템이나 캐시샵에 새로 나온 것을 깜빡하고 놓치는 경우가 많으셨을 텐데요. 이제 Mabinogi Helper에 사고 싶은 아이템을 적어두고 관리하시면 됩니다! 실제로 구매했는지 안 했는지 체크도 할 수 있고, 아이템 정보도 바로 확인할 수 있습니다. 심지어 그 아이템을 구매하려면 무엇이 필요한지, 현재 얼마나 가지고 있는지까지 한눈에 보여주고, 부족한 재료는 바로 제작 화면으로 이동할 수도 있습니다! 정말 유용하지 않나요?

구매할 아이템을 선택하여 정보를 확인하신 후, '구매목록만 보기'에서 실제로 구매했는지 체크하시면 됩니다! 필요한 재료와 현재 보유한 재료를 비교해서 보여주고, 부족하면 바로 제작하러 갈 수 있도록 링크까지 제공합니다.

⚔️ 다이스 진행률 관리 (Equip Achievement)

다이스 장비 레벨을 올리려면 똑같은 장비를 계속 모아야 하는데, 얼마나 모았는지, 최고 수치까지 얼마나 남았는지 확인하기 어려우셨을 겁니다. 하지만 여기서는 부위별, 레벨별로 획득한 최대 수치를 기록해서 보여줍니다! 이제 얼마나 더 파밍해야 할지 쉽게 알 수 있습니다.

획득한 장비의 최고 수치를 입력해 두면, 최고치(MAX) 달성 여부도 알려주므로 다음 목표를 설정하는 데 도움이 됩니다.

✨ 유용한 추가 기능들

캐릭터 관리: 여러 개의 캐릭터를 육성하시는 분들이 많으실 텐데요. Mabinogi Helper에서는 모든 캐릭터 정보를 등록하고 관리할 수 있습니다. 캐릭터를 추가하거나 수정하는 것도 매우 간단합니다.

퀘스트 아이템 위치 지도: 퀘스트를 진행하다 보면 특정 아이템을 어디에서 구해야 하는지 막막할 때가 있습니다. 예를 들어 임프 구슬이나 새 둥지 같은 것 말입니다! 하지만 여기 유틸 탭에 있는 퀘스트 지도를 보면 그러한 주요 아이템 위치를 정확하게 알려줍니다! 지도 확대/축소도 가능하고, 다른 마을 지도도 볼 수 있어서 정말 편리합니다.

아이템 제작 재료 계산기: 복잡한 제작 레시피 때문에 어려움을 느끼셨다면, Mabinogi Helper에 있는 제작 재료 계산기를 이용해 보세요! 만들고 싶은 아이템을 검색하면 1차 재료부터 최종 재료까지 모두 보여주고, 현재 얼마나 가지고 있는지 체크까지 할 수 있습니다!

마비노기 모바일 플레이하시는 분이라면 Mabinogi Helper를 꼭 한번 이용해 보시기를 추천드립니다! 에린에서의 생활이 훨씬 더 편하고 즐거워질 것입니다!

 

https://mabinogihelper.org

728x90

열거형 : 정수 숫자 형식의 상수 집합에 멤버 이름을 지정할 수 있다. 

enum Menu
{
	Info, // 0
	Status // 1
}

 

열거된 멤버들은 첫 멤버부터 0으로 시작하는 정수를 상수로 가지고 다음 멤버들은 1씩 증가하는 정수를 상수로 가진다.

 

enum Menu
{
	Candy=1,
    	Chocolate=3,
    	Snack // 4
}

. 상수를 명시적으로 지정해 줄 수도 있고 지정하지 않은 멤버는 이전 멤버의 +1 값을 가진다.

 

열거형의 사용

Menu candy = Menu.Candy;
var choco = (Menu)3;

Console.WriteLine(candy); // Candy 
Console.WriteLine((int)Candy); // 1
Console.WriteLine(choco); // Chocolate
Console.WriteLIne((int)choco); // 3
Console.WriteLine((Menu)10); // 10

 

Enum.IsDefined : 멤버 존재 여부 확인 

IsDefined(Type enumType, object value);



Enum.IsDefined(typeof(Menu),1); // true
Enum.IsDefined(typeof(Menu),2); // false

 

'C#' 카테고리의 다른 글

C# 기초 문법  (0) 2024.04.11
728x90

함수 형식

returnType FunctionName ( parameterType parameter1, parameterType parameter2 = "default" )
{
  print(parameter1);
  print(parameter2);
  print("FunctionName 첫글자는 대문자");
  print("디폴트 값을 가지는 파라메터는 맨 뒤에 위치한다.");
  
  return data;
}

 

 

접근제한자 

 

[ private, public, protected ] 

default : private 

 

public :  모든 레벨에서 접근 가능 

private : 동일한 Class에서만 접근 가능

protected : 동일 Class 또는 상속받는 Class에서만 접근 가능 

 

반복문 

 

int i;
int j = 3;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1

initializer에서 loop 변수를 선언하지 않는 경우 initializer 섹션에서 0개 이상의 식을 사용할 수 있다. 


int j = 3;
for (int i = 0; i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Step: i=1, j=2
// Step: i=2, j=1


i와 j 두가지 변수 모두 값을 변경할 수 있다.

 

foreach

int[,] numbers = {{1, 2, 3, 4, 5},{0, 1, 2, 3, 4}};
foreach (int number in numbers)
{
    Console.Write(number+" ");
}
// Output:
// 1 2 3 4 5 0 1 2 3 4

 

 

컬렉션 

 

ArrayList

ArrayList 콜렉션은 non generic collection으로 타입을 정해두지 않고 여러 타입의 데이터를 동시에 담을 수 있다.

ArrayList arrayList = new ArrayList();
arrayList.Add("stringValue");
arrayList.Add(1);
arrayList.Add(false);

print(arrayList[0]);

// Output:
// stringValue

 

 

List<T> 

List<T> 콜렉션은 타입을 지정하여 동일한 타입의 데이터들을 담을 수 있다. 

 

ArrayList보다는 List<T> 클래스를 사용할 것을 권장하고 있다. 

 

 

HashTable / Dictionary<K, V>

Key Value 형식으로 데이터를 저장하며 Key와 Value의 타입은 동일하지 않을 수 있다.

HashTable hashTable = new HashTable();
hashTable.Add("일",1);
hashTable.Add(2,"이");

print(hashTable["일"]);
print(hashTable[2]);

 

Dictionary도 HashTable과 같지만 제네릭 지정하여 사용하기 때문에 List<T>와 마찬가지로 성능이 더 좋다.

 

Queue<T> / Stack<T>

선입선출 FIFO / 후입선출 LIFO

Queue<int> q = new Queue<int>();
q.Enqueue(1);
q.Enqueue(2);

for (; q.Count != 0; q.Dequeue())
{
    Console.WriteLine(q.Peek());
}
// Output:
// 1 2

Stack<int> st = new Stack<int>();
st.Push(1);
st.Push(2);

for(; st.Count != 0;)
{
    Console.WriteLine(st.Pop());
 }
 // Output:
 // 2 1

 

 

namespace

namespace 키워드를 사용하여 관련 파일 혹은 다른 namespace 등을 포함하는 범위를 선언할 수 있다. 

 

선언한 namespace는 using 키워드를 통해 사용할 수 있고

namespace에 alias 를 부여하여 사용할 수 있다.

 

namespace Utils
{
    struct UtilStruct { }

    enum UtilEnum { a, b }

    delegate void UtilDelegate(int i);

    namespace Calendar
    {
        static class MicroTimer { }

        interface Timer { }
    }
}

global using <fully-qualified-Utils>;
using Alias = Utils.Calendar;

 

global using 키워드는 프로젝트내의 모든 파일에서 using 이 적용된다는 것을 의미한다.

'C#' 카테고리의 다른 글

C# 열거형  (0) 2024.04.16
728x90

Spring Initializer에서 Spring Project를 생성한다.

https://start.spring.io/

Generate버튼을 클릭하면 프로젝트를 다운로드 받는다. 

 

다운로드 받은 프로젝트는압축해제하여 워크스페이스에 옮기고 IntelliJ를 실행한다.

 

Open

demo 폴더의 pom.xml을 선택

 

Open as project 

Spring 구조의 기본 프로젝트가 생성되었다.

외부 라이브러리에 initializer에서 추가한 Spring web, dev tools 가 추가되었다. 

pom.xml에도 dependency에 추가된 것을 확인할 수 있다. 

 

maven의 spring-boot:run을 실행하면 spring에 내장된 톰캣을 통해 서버를 실행시킬 수 있다. 

*터미널에서 mvn spring-boot:run 명령어를 사용해도 된다. 

+ Recent posts