ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상점에 페이지 기능 추가하기 // 스파르타 C#문법 심화팀과제
    게임 개발기록 2024. 5. 2. 22:03

    상점에 아이템 갯수가 어느정도 넘어가면 다음페이지에서 확인 할 수 있는 기능을 만들자!

     

    우선 내가 작성한 코드가 아니고, 팀이 작성한 코드에서 수정을 해주는 거기 때문에 작업을 할 때마다 프로그램이 어떤 식으로 구성이 됐는지 확인을 해야 한다. 

     

    확인을 한 다음에 일단 아이템이 9개가 넘어가면 다음페이지로 넘어가게 하고, 다시 이전페이지로 넘어오게 하게 하고 싶었다.

     

    도대체 어떻게 할까 생각을 하다가 팀원 분들이 알려줬지만 곱하기 나누기밖에 생각이 안 났다.

     

    일단 변수를 하나 만들고부터 시작 했다. page라는 이름으로 만들 겠다.

     

    그 변수는 시작이 0이고 다음페이지 버튼을 누르면 1이 증가, 이전페이지 버튼을 누르면 1이 감소 되게 했다. 

     

    그리고 그 변수를 활용해서 아이템이 9개만 나오게 하고, 다음 페이지 넘어가면 그 다음 아이템들이 나오게 해줬다.

     

    for 반복문으로 아이템 리스트를 뽑아주게 했는데 여기서 for에 조건들을 수정 해줘서 해결 했다. 

    for( i = 0 이부분에 + 9 * page 이렇게 수정을 해줘서 다음 페이지가 된다면 page는 1이 되고 9가 더해진 index가 호출이 되게 되어서 페이지를 넘겼을 경우에 다음 아이템들이 나오게 해줬다.

     

    확인을 해보니 페이지 넘겼을 때 깔끔하게 다음 아이템이 나오는데, 첫 번째 페이지에서 모든 아이템들이 나오는 것을 확인 했다. 그래서 나는 한 페이지에서 9개의 아이템만 출력을 하게 해야 했다. 

     

    어떻게 할까 고민 하다가 && 연산자를 사용 해서 해결 했다.

     

    이건 for 에 들어가는 조건을 수정 해줬는데

    i < items.Count 적혀 있는 곳에 && i < 9를 추가 해서 9번만 출력 하게 했다.

    이렇게 해주면 아이템 카운트가 없는데 9번을 반복 하거나 9번 이상 반복을 안 하게 할 수 있다. 

     

    그런데 여기서 끝이 아니었다. 페이지를 한 번 넘기고 나니 아이템들이 출력 되지 않았다. 

    확인을 해보니 i가 27 이런 식으로 올라가고 내려오질 않아서 생기는 문제인 걸 확인 했다. (현재 page를 넘기면 page의 값이 1이 증가 된다. 그러면 i의 값에 9*1이 되어서 i + 9가 된다.)

     

    그래서 조건문에 <9 이 조건을 사용 할 때  i - 9 * shop.page 를 추가해서 문제를 해결 했다. 

     

    전체 코드를 보면 이해가 갈 것이다.

    for (int i = 0+9*shop.page; i < items.Count && i-9 * shop.page < 9; i++)

    이렇게 페이지를 넘기고 다시 돌리게 하는 걸 구현 했고, 아이템 목록도 제대로 출력이 되게 했다. 

    그리고 아이템을 구매 할 때나 자막이 표시 되는 곳들이 이와 비슷한 문제로 오류가 생겨 다 수정을 해준 뒤 올바르게 작동 되게 해줬다.

     

    그리고 변수 하나를 더 만들었다. maxPage

     

    이건 ItemList.Count 를 9로 나눠서 maxPage의 값을 가지게 했다. 

    그렇게 현재 페이지의 정보를 상점에서 확인 할 수 있게 만들어 줬다. 이건 page의 변수와 maxPage의 변수를 활용 해서 구현 했다.

     

    상점에 첫 번째 화면. 아이템이 9개만 출력이 되는 걸 확인 할 수 있다.
    2 번 째 Page로 넘어간 모습
    아이템 구매를 할 경우에 다음페이지로 넘어갈 경우 아이템 앞에 숫자가 11~28 이렇게 높은 숫자가 나왔는데 같은 해결방법으로 알맞게 출력 되게 했다.

     

    이렇게 기능을 또 구현 해봤는데 방법만 알면 코드는 정말 짧고 쉽지만 떠올리는 게 쉽지 않다. 팀원분들은 어떻게 바로바로 떠올리는 거지 ..ㅋㅋ ,,,, 물론 나중엔 내가 더 잘 할거다.

Designed by Tistory.