포켓몬 배틀 구현
-
우선도와 스피드 구현포켓몬 배틀 구현 2022. 3. 16. 00:40
포켓몬은 "스피드"와 "우선도"라는 개념이 존재한다. 일단 스피드는 말 그대로 포켓몬의 스피드를 나타낸다. 각 포켓몬은 고유의 스피드 개체값을 지니고있고, 이를 노력치, 아이템 등으로 보정한다. 그리고, "스피드가 더 높은 = 빠른 포켓몬이 먼저 공격한다" 포켓몬은 한방 한방이 정말 크기떄문에, 이 선공과 스피드는 아주 중요한 개념이다. 또한 우선도는, "스피드와 상관없이 우선도가 높은쪽이 먼저 공격한다." 스피드가 아무리 느린 포켓몬이라도, 기술에 우선도가 붙어있다면 해당 포켓몬이 선공하게 된다. 그렇기에 우선도가 붙은 기술은 여러 디메리트가 있어도 필수적으로 채용하곤 한다. 참고로 우선도가 같으면 스피드를 비교하고, 스피드가 같으면 그냥 랜덤으로 선공이 결정된다. 이제 내 포켓몬 배틀의 스피드 비교 ..
-
처음에 기획을 잘해야 하는 이유포켓몬 배틀 구현 2022. 3. 15. 23:26
보이나 이 아름다운 5000줄짜리 코드가(...) 앞서 말했듯이 포켓몬은 2차원 배열로 구현했다. 그리고 플레이어와 cpu의 포켓몬들은 2차원 배열 3개로 구성된 3차원 배열로 구성되었다. 다만 이는 한번 갈아 엎은 2번째 코드고 (물론 대충 틀을 짠 뒤 한번 갈아엎는게 계획이긴 했다) 처음에는 3차원이 아닌 그냥 2차원 배열 3개로 진행하였다. 플레이어의 1번 포켓몬은 p1[][], cpu의 2번 포켓몬은 s2[][] 이런식으로 2개의 3차원 배열이 아닌 6개의 2차원 배열로 진행하였다. 그 결과 큰 문제가 발생하였으니, 플레이어의 현재 포켓몬이 1번 포켓몬이고 상대 포켓몬이 1번인 경우, 1번이고 2번인 경우, 1번이고 3번인 경우... 총 9개의 경우를 구현하여야했다. 코드가 길어지긴하겠지만 그래도..
-
추가로 구현에 필요한 배열들포켓몬 배틀 구현 2022. 3. 15. 23:13
각 포켓몬은 배열로 구현하였다. 이제 배틀에 사용하는 다섯개의 배열이 필요하다. 1.p[][][], s[][][]배열 p[][][]와 s[][][] 배열은 플레이어와 cpu의 포켓몬 배열이다. 각 포켓몬은 2차원 배열로 구현되었고, 플레이어의 첫번째 포켓몬은 p[1][][], 두번째 포켓몬은 p[2][][] 이런식으로 접근한다. 줄기차게 사용될 배열이니만큼 이름은 간단하게 지었다. p는 player일것같지만 사실 pokemon의 p였다... s는 's'angdabang, 상대방(...) 2.ps[]배열 포켓몬은 크게 현재 필드위에 존재하는 포켓몬과 아닌 포켓몬으로 나뉜다. 현재 사용가능한 기술, 공격한 포켓몬, 맞는 포켓몬은 전부 필드에 존재하는 포켓몬이므로, 현재 필드에 있는 포켓몬의 번호를 지정해줘야..
-
"포켓몬"의 구현포켓몬 배틀 구현 2022. 3. 15. 22:59
string 에이스번[one][two] = { {"에이스번", "불꽃", "null", "154", "184", "76", "95", "95", "171", "n", "y", "에이스번", "리베로", "기띠"}, {"화염볼", "불꽃", "120", "90", "5", "물리", "화상", "10", "null", "null", "null", "n", "y", "y","10% 확률로 상대방에게 화상을 입힌다." }, {"무릎차기", "격투", "130", "90", "10", "물리", "null", "null", "null", "null", "null", "y", "n", "y", "실패하면 최대 체력의 1/2의 피해를 입는다."}, {"더스트슈트", "독", "120", "80", "5", "물리"..
-
포켓몬 배틀의 구현, 전체적인 기획포켓몬 배틀 구현 2022. 3. 15. 22:41
포켓몬 배틀을 텍스트 형식으로 구현해보았다. 이를 구현해보기로 결정한 이유엔 여러가지가 있는데, 일단은 포켓몬을 해보고싶은데, 포켓몬 쪼금 하자고 스위치를 사자니 부담스럽기도 했고, 다른 게임들에 비해 텍스트로 구현하기 쉽기도 하고, 결정적으로 나와 겨룰 cpu의 "AI"를 만들어보고싶어서였다. 포켓몬의 경우 현재 싸우는 포켓몬 뿐만 아니라 상대의 교체, 나의 교체 등 다양한 변수를 생각해야한다. 그렇기에 AI 구현이 상당히 어려울 것 같았고, 이를 한번 구현해내보고싶어졌다. 일단 AI 부분은 미뤄두고 배틀 부분부터 코딩을 시작했다. 솔직히 금방 끝나지 않을까했는데 생각보다 오래걸렸다. 거의 일주일동안 잠자는 시간 빼고 코딩만 한것같다. 이렇게 무언가에 몰입한건 오랜만인것같다. 일단 배틀은 WHILE문으..