해결된 질문
작성
·
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
안녕하세요,
대부분 코딩 관련 문제는 짜잘한실수에서 비롯된 것이고,
질문자께서 하신 실수는 다른 누군가도 했을 확률도 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