Text_Dungeon ๊ฐœ์„ 

Amberjackยท2024๋…„ 1์›” 8์ผ

C# ์ฝ”๋”ฉ

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

๐Ÿ› ๏ธ Text_Dungeon ๊ฐœ์„ ํ•˜๊ธฐ

๐Ÿ–ฅ๏ธ ์‹œ์ž‘ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ

  1. Sparta Dungeon ์•„์Šคํ‚ค ์•„ํŠธ๋กœ ๋งŒ๋“ค๊ธฐ
    https://textkool.com/en/ascii-art-generator?hl=default&vl=default&font=Red%20Phoenix&text=Your%20text%20here%20
  2. PRESS ANYKEY TO START ์ถœ๋ ฅํ•˜๊ณ  ์•„๋ฌด ํ‚ค ์ž…๋ ฅ ๋ฐ›๊ธฐ

๐Ÿ˜Ž getBehavior ์ˆ˜์ •ํ•˜๊ธฐ

  1. getBehavior(int min, int max)๋กœ ์ž…๋ ฅ ์ฒ˜๋ฆฌ ํ•œ ๋ฒˆ์— ํ•˜๊ธฐ
  2. switch๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ getBehavior ๊ฐ’์— ๋”ฐ๋ผ switch ์‹œ์ผœ์ฃผ๊ธฐ

๐Ÿ–ฅ๏ธ ์‹œ์ž‘ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ

============================================================================
      ___________________   _____  __________ ___________ _____             
     /   _____/\______   \ /  _  \ \______   \\__    ___//  _  \            
     \_____  \  |     ___//  /_\  \ |       _/  |    |  /  /_\  \           
     /        \ |    |   /    |    \|    |   \  |    | /    |    \          
    /_______  / |____|   \____|__  /|____|_  /  |____| \____|__  /          
            \/                   \/        \/                  \/           
                                                                            
________    ____ ___ _______     ________ ___________________    _______    
\______ \  |    |   \\      \   /  _____/ \_   _____/\_____  \   \      \   
 |    |  \ |    |   //   |   \ /   \  ___  |    __)_  /   |   \  /   |   \  
 |    `   \|    |  //    |    \\    \_\  \ |        \/    |    \/    |    \ 
/_______  /|______/ \____|__  / \______  //_______  /\_______  /\____|__  / 
        \/                  \/         \/         \/         \/         \/  
============================================================================                                                                             

โ–ช๏ธ PRESS ANYKEY TO START

1. ๋ฌธ์ž ๊ฐ€์šด๋ฐ ์ •๋ ฌ ์‹œํ‚ค๊ธฐ

Console.WriteLine(string.Format("PRESS ANYKEY TO START").PadLeft(77 - (38- ("PRESS ANYKEY TO START".Length / 2))));
  • string.Format().PadLeft()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์‹œํ‚ค๊ธฐ.

    ๐Ÿ“Œ ์ „์ฒด ๋ฌธ์žฅ์˜ ๊ธธ์ด - (์ „์ฒด ๋ฌธ์žฅ์˜ ๊ธธ์ด / 2 - (๊ฐ€์šด๋ฐ ์ •๋ ฌ ์‹œํ‚ค๋ ค๋Š” ๋ฌธ์žฅ์˜ ๊ธธ์ด / 2)))
    ex) ์œ„์˜ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ, "========="๊ฐ€ 77๊ฐœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ๋ฌธ์žฅ์˜ ๊ธธ์ด๋ฅผ 77๋กœ ์„ค์ •ํ–ˆ๋‹ค.

2. ์•„๋ฌด ํ‚ค ์ž…๋ ฅ ๋ฐ›๊ธฐ

Console.ReadKey();

Console.ReadKey();๋ฅผ ํ†ตํ•ด ์•„๋ฌด ํ‚ค์˜ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ, ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ˜Ž getBehavior() ์ˆ˜์ •ํ•˜๊ธฐ

// ํ”Œ๋ ˆ์ด์–ด์˜ ํ–‰๋™ ์ž…๋ ฅ ๋ฐ›๊ธฐ
static int getBehavior(int min, int max)
{
    int behavior;
    bool isNumeric;

    // ์ž˜๋ชป๋œ ์ž…๋ ฅ ์‹œ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ
    while (true)
    {
        Console.WriteLine("\n์›ํ•˜์‹œ๋Š” ํ–‰๋™์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.");
        Console.Write(">> ");

        try
        {
            isNumeric = int.TryParse(Console.ReadLine(), out behavior);     // ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์ด ์ •์ˆ˜ํ˜• int ๊ฐ’์ธ์ง€ ํ™•์ธํ•ด์„œ ๋งž์„ ๊ฒฝ์šฐ Parse ์‹œ์ผœ์ฃผ๊ธฐ
            if (!isNumeric || CheckValidInput(behavior, min, max) == false) 
            	{ throw new CheckInputException("์ž˜๋ชป๋œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค.\n"); }  // ์•„๋‹ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
            else break;
        }
        catch (CheckInputException ex)
        {
            Console.ForegroundColor = ConsoleColor.DarkRed;
            Console.WriteLine(ex.Message);
            Console.ResetColor();
        }
    }

    return behavior;
}

private static bool CheckValidInput(int behavior, int min, int max)
{
    if(behavior >= min && behavior <= max) { return true; }
    return false;
}

StartVillage()์—์„œ ํ”Œ๋ ˆ์ด์–ด ํ–‰๋™ ๊ฐ’ ๋ฐ›๊ธฐ

// ํ”Œ๋ ˆ์ด์–ด์˜ ํ–‰๋™ ๊ฐ’ ๋ฐ›๊ธฐ
switch (getBehavior(0, 5))
{
    case 1:
        ShowMyStats();
        break;
    case 2:
        ShowMyInventory();
        break;
    case 3:
        ShowShop();
        break;
    case 4:
        EntertheDungeon();
        break;
    case 5:
        GotoInn();
        break;
    default:
        return;
}               

๐Ÿ“– json์œผ๋กœ ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๊ธฐ

โ–ช๏ธ Newton.json ์„ค์น˜ํ•˜๊ธฐ

โ–ช๏ธ Json ํŒŒ์ผ ์ฝ๊ธฐ

static public void LoadItemsFromJson()
{
    string json = File.ReadAllText(filePath + "\\Equipment.json");

    equipments = JsonConvert.DeserializeObject<Equipment[]>(json)!;
}

๐Ÿ“Œ ๋ฌธ์ œ!!!
jsonํŒŒ์ผ์„ ์ฝ์„ ๋•Œ, ๋ฐ˜๋“œ์‹œ json ํŒŒ์ผ์ด UTF-8 ์ธ์ฝ”๋”ฉ์ด ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์ž~!

โ–ช๏ธ Json ํŒŒ์ผ ์“ฐ๊ธฐ

static public void SaveItemsToJson()
{
    string json = JsonConvert.SerializeObject(equipments, Newtonsoft.Json.Formatting.Indented);
    File.WriteAllText(filePath + "\\Equipment.json", json);
}

0๊ฐœ์˜ ๋Œ“๊ธ€