인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

GoM Lv1님의 프로필 이미지
GoM Lv1

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

CS8321오류

해결된 질문

작성

·

986

0

다른 C언어는 공부하지 않고 선생님 강의만 듣고 시작한 C언어 4일차인 수강생입니다!!

TEXT RPG강의까지 수강 후 여러가지 TEXT RPG를 만들어보다가 아래와 같은 코드를 만들어봤는데요

CS8321 로컬함수 'Main'이(가) 선언되었지만 사용하지 않았습니다. 라는 오류가 뜨면서 실행이 안됩니다 ㅠㅠ

혼자 정말 많이 고민해봤는데 답을 못찾겠어요.. 어떻게 해야할까요??

그 외에도 잘못된 문법이나 필요없는식이 있을까요?? 

여쭤볼 수 있는분이 쌤 뿐입니다!! 부탁드릴게요!

using System;

namespace Fishisland

{

    class Program

    {

        enum FishType

        {

            None = 0,

            Smallfish = 1,

            Octopus = 2,

            Crucian = 3,

            Mackerel = 4,

            Marlin = 5,

            Tuna = 6,

            Dolphin = 7,

            Shark = 8,

            Whale = 9,

        }

        struct Fish

        {

            public int None;

            public int Smallfish;

            public int Octopus;

            public int Crucian;

            public int Mackerel;

            public int Marlin;

            public int Tuna;

            public int Dolphin;

            public int Shark;

            public int Whale;

            public static implicit operator Fish(int v)

            {

                throw new NotImplementedException();

            }

        }

        static void PutinAquarium(int a, out Fish fish)

        {

            fish.None = 0;

            fish.Smallfish = 0;

            fish.Octopus = 0;

            fish.Crucian = 0;

            fish.Mackerel = 0;

            fish.Marlin = 0;

            fish.Tuna = 0;

            fish.Dolphin = 0;

            fish.Shark = 0;

            fish.Whale = 0;

            while (true)

            {

                if (a <= 30)

                {

                    fish.Smallfish++;

                    break;

                }

                else if (a <= 50)

                {

                    fish.Octopus++;

                    break;

                }

                else if (a <= 70)

                {

                    fish.Crucian++;

                    break;

                }

                else if (a <= 82)

                {

                    fish.Mackerel++;

                    break;

                }

                else if (a <= 89)

                {

                    fish.Marlin++;

                    break;

                }

                else if (a <= 94)

                {

                    fish.Tuna++;

                    break;

                }

                else if (a <= 97)

                {

                    fish.Dolphin++;

                    break;

                }

                else if (a <= 99)

                {

                    fish.Shark++;

                    break;

                }

                else if (a == 100)

                {

                    fish.Whale++;

                    break;

                }

            }

                Console.WriteLine("물고기를 집어넣었습니다");

                Console.WriteLine("[1] 낚시를 계속하기");

                Console.WriteLine("[2] 로비로 돌아가기");

                string input = Console.ReadLine();

                    if (input == "1")

                    {

                        GoFishing();

                    }

                    else if (input == "2")

                    {

                        EnterLobby();

                    }

            

            static void EnterLobby()

            {

                Console.WriteLine("[Fish island]");

                Console.WriteLine("시작하려면 아무키나 누르세요");

                Console.WriteLine("Press any key to start");

                Console.ReadLine();

            }

            static void StartMenu()

            {

                Fish fish = 0;

                Console.WriteLine("[1] 낚시하기");

                Console.WriteLine("[2] 수족관 보기");

                string input = Console.ReadLine();

                while (true)

                {

                    if (input == "1")

                    {

                        GoFishing();

                        break;

                    }

                    else if (input == "2")

                    {

                        EnterAquarium(fish);

                        break;

                    }

                }

            }

            static void EnterAquarium(Fish fish)

            {

                while (true)

                {

                    Console.WriteLine("[수족관]");

                    Console.WriteLine($"[잔챙이] {fish.Smallfish}마리]");

                    Console.WriteLine($"[문어] {fish.Octopus}마리]");

                    Console.WriteLine($"[붕어] {fish.Crucian}마리]");

                    Console.WriteLine($"[고등어] {fish.Mackerel}마리]");

                    Console.WriteLine($"[청새치] {fish.Marlin}마리]");

                    Console.WriteLine($"[참치] {fish.Tuna}마리]");

                    Console.WriteLine($"[돌고래] {fish.Dolphin}마리]");

                    Console.WriteLine($"[상어] {fish.Shark}마리]");

                    Console.WriteLine($"[고래] {fish.Whale}마리]");

                    Console.WriteLine("[1] 낚시를 계속하기");

                    Console.WriteLine("[2] 로비로 돌아가기");

                    Console.WriteLine("[3] 수족관 보기");

                    string input = Console.ReadLine();

                    if (input == "1")

                    {

                        GoFishing();

                        break;

                    }

                    else if (input == "2")

                    {

                        EnterLobby();

                        break;

                    }

                    else if (input == "3")

                    {

                        EnterAquarium(fish);

                        break;

                    }

                }

            }

            static void GoFishing()

            {

                Random rand = new Random();

                int RandomFish = rand.Next(1, 101);

                while (true)

                {

                    if (RandomFish <= 30)

                    {

                        Console.WriteLine("[ 잔챙이를 잡았습니다 ]");

                        break;

                    }

                    else if (RandomFish <= 50)

                    {

                        Console.WriteLine("[ 붕어를 잡았습니다 ]");

                        break;

                    }

                    else if (RandomFish <= 70)

                    {

                        Console.WriteLine("[ 문어를 잡았습니다 ]");

                        break;

                    }

                    else if (RandomFish <= 82)

                    {

                        Console.WriteLine("[ 고등어를 잡았습니다! ]");

                        break;

                    }

                    else if (RandomFish <= 89)

                    {

                        Console.WriteLine("[ 청새치를 잡았습니다! ]");

                        break;

                    }

                    else if (RandomFish <= 94)

                    {

                        Console.WriteLine("[ 참치를 잡았습니다! ]");

                        break;

                    }

                    else if (RandomFish <= 97)

                    {

                        Console.WriteLine("[ [돌고래]를 잡았습니다!! ]");

                        break;

                    }

                    else if (RandomFish <= 99)

                    {

                        Console.WriteLine("[ [상어]를 잡았습니다!! ]");

                        break;

                    }

                    else if (RandomFish == 100)

                    {

                        Console.WriteLine("[ 대박!! [고래] 를 잡았습니다!!! ]");

                        break;

                    }

                }

                Console.WriteLine("[1] 놓아주고 낚시 계속하기");

                Console.WriteLine("[2] 수족관에 집어넣기");

                Console.WriteLine("[3] 수족관 보기");

                string input = Console.ReadLine();

                Fish fish;

                fish = 0;

                while (true)

                {

                    if (input == "1")

                    {

                        GoFishing();

                        break;

                    }

                    else if (input == "2")

                    {

                        PutinAquarium(RandomFish, out fish);

                        break;

                    }

                    else if (input == "3")

                    {

                        EnterAquarium(fish);

                        break;

                    }

                }

            }

            static void Main(string[] args)

            {

                while (true)

                {

                    EnterLobby();

                    StartMenu();

                }

            }

        }

    }

}

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

안녕하세요,

대부분 코딩 관련 문제는 짜잘한실수에서 비롯된 것이고,
질문자께서 하신 실수는 다른 누군가도 했을 확률도 99%입니다.
나중에 혼자서라도 이런 문제를 찾을 수 있게 문제를 찾는 Step를 설명 드리겠습니다.

1) CS8321 구글 검색
2) 비슷한 질문 발견 
https://community.gamedev.tv/t/the-local-function-is-not-declared-cs8321-solved/69148
3) 답변 주목You have missing closing brackets. (닫기 괄호 { } 짝이 안 맞는다)
4) 코드에서 { } 짝 맞춰보기
5) [-]로 함수 하나씩 접어보고 짝이 맞는지 확인

6) 매우 수상하게 PutinAquarium이 다 접히는 것에 주목
7) PutinAquarium 함수 살펴보기

8) 117 Line에 위화감이 드는 부분을 발견 (코드 -> 새로운 함수로 바로?)
9)  116 Line에 } 추가
10) 그래도 CS1022 문제가 일어나는 것 확인
 

11) 반대로 불필요한 }가 있는 것 제거 (Line 116에 있어야 할 애가 밀려서 이쪽으로 온 것으로 추론)
12) 빌드 잘 되는 것 확인 !

처음에는 정말 온갖 문제로 인해 빌드 실패를 하고
고통을 받게 되지만 점차 점차 경험이 쌓이면
그런 돌발상황에 대처하는 노하우가 생기게 됩니다.
그러니 좌절하지 마시고 다들 한 번쯤 겪는 고통이라 생각하고
열심히 헤딩하고 구글링 해보면서 원인을 찾아보시기 바랍니다 !

0

GoM Lv1님의 프로필 이미지
GoM Lv1
질문자

긴글 읽어주시고 답해주셔서 너무너무 감사합니다 ㅠㅠㅠㅠ

GoM Lv1님의 프로필 이미지
GoM Lv1

작성한 질문수

질문하기