728x90
- 주제
>>C#을 이용해 텍스트 게임 만들기 및 오류 해결
- 오류 발생 및 해결
오류1.
while문 안에 switch 문을 넣어, 특정 숫자 입력시 마다 화면 이동을 구현했는데, 게임 시작 화면에서만 오류 없이 잘 실행되고 코드가 while문을 거치면서 오류가 발생했다.
예) 초기 시작 화면에는 1. , 2. , 3. 세가지 선택지가 있고, 다른 번호를 입력시 "잘못입력되었다"는 문구가 나와야 한다.
문제는 switch 속 case 마다 연결되어 있는 화면들에서 "0.나가기(메인화면)" 를 선택하면, switch에 나열되어있는 case 숫자만큼 선택지가 증가하는 오류가 발생하였다. --> (나가기 선택후 4번을 입력하면, case 4: 에 해당하는 화면이 실행됨)
해결1.
while문 다음에 바로 switch문을 넣지 않고, if문을 먼저 사용해 조건을 더 추가하였다.
코드가 많이.. 복잡해졌지만, 실행해보니 예외없이 화면이동이 가능했다.
while (true)
{
if (chosen == 1 || chosen == 2 || chosen == 3)
{
switch (chosen)
{
case 1: //상태보기
itemData.StatsScene();
chosen = int.Parse(Console.ReadLine());
while (true)
{
if (chosen == 0) //나가기
{
startScene.Intro();
break;
}
else
Console.WriteLine(" 잘못된 입력입니다.");
chosen = int.Parse(Console.ReadLine());
}
break;
case 2: //인벤토리
itemData.InventoryScene();
chosen = int.Parse(Console.ReadLine());
while (true)
{
if (chosen == 0) //나가기
{
startScene.Intro();
break;
}
else if (chosen == 1) //장착 관리
{
.....
오류2.
아이템을 구입할 때마다 아이템리스트에 그 아이템이 있는지 확인하고, 있으면 "이미 구매하였다"는 내용이 나오도록 코드를 구현하였다. 그런데 같은 아이템을 아무리 눌러도 "구매완료"만 나왔다.
아이템리스트 내 아이템 숫자가 증가하지 않았다.
//구매에 따른 소지 아이템 목록 작성
public void BoughtList(int a)
{
//구매목록(구매번호,구매정보) 딕셔너리
Dictionary<int, string> boughtDic = new Dictionary<int, string>();
int count = boughtDic.Count;
if (count == 0)
{
if (a < 1 && a > 6)
Console.WriteLine(" 잘못된 입력입니다.");
else
{
TryBuying(a); //재화관련 함수
}
}
.....
해결2.
메서드 내에 리스트가 존재하여 값이 반영되지 않았었다. 그래서 리스트 위치를 메서드 밖으로 옮기니 제대로 작동되었다.
//구매목록(구매번호,구매정보) 딕셔너리
Dictionary<int, string> boughtDic = new Dictionary<int, string>();
//구매에 따른 소지 아이템 목록 작성
public void BoughtList(int a)
{
int count = boughtDic.Count;
if (count == 0)
{
if (a < 1 && a > 6)
Console.WriteLine(" 잘못된 입력입니다.");
else
{
TryBuying(a); //재화관련 함수
}
}
else //데이터 존재
{
if (a < 1 && a > 6)
Console.WriteLine(" 잘못된 입력입니다.");
else
{
if (!boughtDic.ContainsKey(a))
{
TryBuying(a);
}
else
{
Console.WriteLine(" 이미 구매한 아이템입니다.");
}
}
}
}
728x90
'🌐 유니티 (Unity)' 카테고리의 다른 글
Day 12 - 텍스트 게임 만들기(오류 해결 과정3) (0) | 2024.04.27 |
---|---|
Day 11 - 텍스트 게임 만들기(오류 해결 과정2) (0) | 2024.04.26 |
Day 9 - C# 문법(클래스, 상속, 가상메서드 및 오버라이딩, 추상클래스) (0) | 2024.04.24 |
Day 8 - C# 문법(조건문, 반복문, 배열, 딕셔너리, 메서드, 오버로딩, 구조체) (0) | 2024.04.23 |
Day 7 - C# 문법(WriteLine, 이스케이프 시퀀스, 자료형, 변수, 연산자 등) (0) | 2024.04.22 |