5.7 플래피버드 게임 추가기능 구현하기 (파이프 위치 랜덤화)
Last updated
Last updated
만일 당신이 부터 잘 따라왔다면 랜덤화(무작위화)는 낯선 것은 아니다. 엔트리-파이썬 책에 에서 이미 다룬적이 있기 때문이다. 거기에서 엔트리-파이썬과 오리지널 파이썬에서 약간의 차이가 있다고 언급했던 부분 있는데 그것은 바로 랜덤기능을 코딩하기 위해서는 실제 파이썬의 경우, 랜덤(random)이라는 모듈을 불러오는 부분이 선행되어야 한다고 언급했었는데 그 부분부터 시작해 보도록 하자. 따라서 우리는 오리지널 파이썬이기 때문에 랜덤을 활용하기 위해 코드의 맨 첫번째 라인에서 random 모듈을 import하는 것부터 시작하자.
우리의 코드 안에서 파이프 위치가 랜덤화 되어야 할 때는 언제인가? 적어도 최소한 2번의 시점에서 필요한데, 첫번째로 파이프가 화면 좌측으로 빠져나가면서 우측화면부터 재등장해야하는 시점에서 필요하고, 두번째로 게임이 첨부터 재시작하는 시점에서도 파이프의 위치가 무작위로 등장하면 좋을 것이다. 이렇게 적어도 2번 이상 같은 코드가 활용될 것으로 예상되기 때문에 이런 경우, 이 부분을 함수화하는 것을 고려하면 좋을 것이다.
🔢 위에서 언급했던 것처럼 33~38번 라인에서 그 부분을 reset_pipes 라는 이름으로 함수화 하였다. 그리고, 해당 함수를 호출은 위에서 언급한 바로 그 두 시점(게임의 재시작, 파이프의 무한순환)에서 호출하고 있다. 이제 이 함수코드를 자세히 이해해 보자. 먼저 랜덤값(무작위값)을 얻기 위해 random 모듈 안에 있는 randint 함수를 호출하는데 이 함수는 이름에서 알 수 있듯이 램덤으로 생성할 정수값(integer)의 최소값과 최대값의 범위를 파라미터로 갖는다. 우리는 randint(-100, 100) 이라고 호출했는데 이 의미는 -100 ~ 100 사이의 랜덤한 정수값을 얻겠다는 것이고, 더 궁극적인 의미는 파이프들의 위치를 그 범위 사이에서 위아래로 랜덤(무작위)하게 움직이게 하려는 목적에서다. 35-36번 라인의 코드에서 확인할 수 있듯이, 기존 top_pipe.y 와 bottom_pipe.y 값에 파이프들의 기존 기본 위치에 랜덤값(random_y)을 추가로 덧붙혀 줌으로써 두 파이프는 일제히 랜덤값이 반영된 최종 위치를 갖게 되는데, 결과적으로 만약 랜덤값이 음수값 일 경우는 기존 원래 위치보다 더 위쪽으로, 양수값 일 경우는 더 아래쪽으로 이동하게 된다.
이제 마지막으로 게임성을 높이기 위해 구현해 볼 것은 플래피버드가 하늘을 날 때, 날개 펄럭임의 애니메이션을 추가해 게임의 그래픽 퀄러티 수준을 높히는(?) 것이 남아있다.