꿈두레의 마지막 수업은 팀 프로젝트입니다.
저 이외에 2명의 친구들과 팀을 짜서 프로젝트를 진행했습니다.
프로젝트의 주제는 LOL 챔피언 능력치 계산 프로그램2.0 입니다.
2.0인 이유는 작년에 제작했던 계산 프로그램이 있기 때문인데요.
작년에 만든 프로그램은 코드도 4000줄이 넘어가고 시각적으로도 떨어져서
만족스럽지 못했습니다. 그래서 이번에 코드의 용량도 줄이고 시각화도 좋고
접근성도 좋은 프로그램을 만들어보고자 시도하게 되었습니다.
꿈두레에서 배운 GUI를 이용하면 시각적으로 표현할 수 있을것 같아
작년에 만든 코드와 자료들을 가지고 무작정 시작해보았습니다.
고통의 시작
일단 LOL이라는 게임은 160가지가 넘는 캐릭터들과 많은 아이템들이 있는데요.
시간이 2주정도 밖에 안 주어졌기 떄문에 10가지 캐릭터를 선정하고
아이템도 44개정도만 골라 코드를 작성하기로 했습니다.
원래는 라이엇게임즈에서 제공하는 API를 이용해서 데이터를 다루려고 했는데
학교에서 하다 보니 게임 사이트에서 제공하는게 차단당해서 어쩔 수 없이
작년의 데이터를 가지고 하게 되었습니다.
(2021년거지만 자료가 필요하신 분들을 위해 파일 올려두겠습니댜.)
엑셀의 자료를 이용해서 리스트화 하고
캐릭터의 이름과 아이템의 이름을 받아 리스트를 불러와 합하는 형식으로 제작하였습니다.

챔피언 리스트

아이템 리스트

이건 클래스인데
'클래스를 이용하면 코드를 더 쉽게 줄일 수 있지 않을까' 하는
생각에 시도하였습니다.
하지만 클래스의 개념에 대해 완전히 이해하지 못하고 사용하다 보니
3%도 활용하지 못한 것 같습니다.
그렇지만 코드를 줄이는데 도움이 된 것 같다고 생각합니다.
GUI는 실행하면 이렇습니다.


캐릭터를 고르고 찾아보기를 누르면 그에 맞는 캐릭터의 능력치가 나옵니다.

이건 콤보박스인데 챔피언을 선정하기 위해서 사용했습니다.



cmb_format이 콤보박스인데
cmb_format.get()=='값' 이라는 코드를 쓰는 이유는
콤보박스에 ['조이'나 '아펠리오스'같은 캐릭터들이 선택되면]
이라는 코드를 만들기 위해 사용했습니다.

아까 윗부분에 보여드렸던 캐릭터 리스트를 이용해서
거기에 text=a[]를 이용해 공격력 레이블에는 리스트 첫번째를
공격속도 레이블에는 리스트 두 번째를 넣는 코드를 작성했습니다
그리고 처음에는 콤보박스에서 선택이 되자마자 선택이되었는데
버튼을 누르고 나서 선택되면 좋을 것 같아

이 버튼을 추가했습니다.
찾아보기 버튼이 눌렸을때 select_c 함수가 실행되게 하는데
여기서 select_c 함수는 전에 리스트를 받은 코드에
start라는 다른 함수를 실행합니다.

처음에 attack_Label에 text로 빈칸을 두는 이유는
사용하지 않으면 계속 리스트가 중첩되서
레이블의 숫자가 계속 늘어나는 이상한 현상이일어났습니다.
그래서 찾아보기를 누르고 Label에 챔피언에 맞는 리스트값을 넣어주도록 합니다.
레이블을 pack 해주면 GUI는 완성입니다.
이제 선정한 데이터를 합해주는 단계입니다.

각각의 단계에서 불러온 리스트를 가지고 모든 능력치를 합해준 후

몇가지 한국어 패치와 합께 출력해줍니다.

출력결과
느낀점과 생각
리스트를 이용해서 챔피언과 아이템의 정보를 불러오고
1탄에서 4000줄이 넘는 코드를 500줄로 줄일 수 있었던 것이 만족스럽다. 하지만
코드를 줄여보고자 class를 도입했지만 이해도가 낮아 제대로 활용하지 못하였고
캐릭터의 능력치를 즉각적으로 불러오는 것은 성공했지만 아이템을 선정하여 계산 결과까지 GUI로 구현하지 못한 점이 아쉬웠다.
시간이 좀 더 있었다면 더 많은 기능과 더 높은 퀄리티를 표현할 수 있었을 텐데 그러지 못한 점이 아쉬웠다.
하지만 코드 제작 과정에서 class 제작하고 사용하기(기초적)나 리스트 자료형의 연산과 활용 방법, if문과 리스트의 조합으로 코드를 단순화하기와 같은 요소들을 구현하기 위해 인터넷과 파이썬 서적들을 찾아보게되었고
이 과정에서 클래스의 개념에 대해 명확히 하고 리스트와 if문의 활용 이해도를 높힐 수 있었던 점이 의미있었다고 생각한다.
'고등학교 활동' 카테고리의 다른 글
| 꿈두레 GUI 총정리(2022.5.18 ~ 2022.6.2)2편 (0) | 2024.06.25 |
|---|---|
| 꿈두레 GUI 총정리(2022.5.18 ~ 2022.6.2)1편 (0) | 2024.06.25 |