본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[스크래치] 스쿼시 게임 2단계

by easyfly 2023. 2. 19.
반응형

스크래치 스쿼시 2단계

1단계 과정은 공이 패들에 붙어 있다가 마우스 클릭과 동시에 패들을 떠나 왼쪽과 오른쪽 각각 45도 범위에서 랜덤 하게 튀어 나가는 코딩을 했습니다. 패들 y좌표는 -140에 고정된 상태로 마우스의 x좌표만 참조하게 했습니다.

1단계 코딩에서 공과 패들의 블록 구조

문제는 스쿼시는 4면이 벽이 될 수는 없습니다. 패들이 있는 아래 벽에 닿으면 게임오버가 되는 상황입니다. 주어진 공은 3개. 패들에 공을 맞추면 score는 올라가는 것으로 하겠습니다.

자, 패들에 공이 닿으면 반사되는 부분부터 진행합시다.

공이 패들에 닿으면 반사되기

공이 패들에 닿으면(조건문) 공은 방향을 바꾸게 됩니다. 처음에 주어진 공은 좌우 45도 범위에서 난수로 랜덤 하게 튕겼습니다. 마찬가지로 패들에 닿으면 공의 각도가 좌우 45도 범위의 난수로 반사되게 합니다. 우선 스프라이트 중 'ball'을 선택하여 블록을 추가하도록 합니다.

패들에 닿으면, 공의 방향을 조정하는 블록 추가

추가한 부분도 무한반복문 안에 포함시킵니다. 공은 벽을 만나면 튕기다가 '패들을 만나면' 각도가 다시 주어지는 것입니다. 코딩 과정에서 각도를 조정하면 반사되는 각의 변화를 줄 수 있겠네요.

여기까지...

패들 쪽 벽에 닿아도 튕겨버리는 문제가 있습니다.

공이 패들 쪽 벽에 닿으면 다시 시작

공이 패들이 있는 벽에 닿으면 공이 하나 줄면서 다시 시작해야 합니다. 패들의 y좌표는 -140입니다. 스프라이트의 기준점은 한가운데입니다. 만약 y좌표를 -100, x좌표를 0으로 한다면 아래와 같은 위치가 됩니다.

스프라이트 정중앙 (x:0, y:-100)인 경우

스프라이트 정중앙 (x:0, y:-140)인 경우를 보겠습니다. 공이 y좌표 기준으로 -140 아래로 내려가면 패들을 지나쳤다는 얘기입니다. 그런데 공도 좌표의 기준점은 한가운데입니다.

스프라이트 정중앙 (x:0, y:-140)인 경우
공과 패들 두 스프라이트의 좌표 기준은 한 가운데임
좌표의 기준이 되는 네모 숫자가 중요함

y좌표와 비교되는 좌표값이 중요합니다. 공이 한 번에 이동하는 거리가 15이기 때문에 만약 벽까지 거리가 15를 넘게 되면 카운트가 2회 이상이 되고 맙니다. 그걸 고려해서 결정해야 합니다. 공의 좌표 기준은 한가운데지만 벽을 만나 튕기는 지점은 공의 크기와 관계가 있습니다.

패들로 공을 맞추지 못했기 때문에 사용할 수 있는 공은 하나가 줄면서 게임은 진행됩니다. 공이 0이 되면 게임은 종료됩니다.

y좌표가 -157이 되면서 종료됨

한 번에 움직이는 거리가 있기 때문에 비교 기준점을 넘기는 순간의 y좌표가 -157이 됐습니다. 벽에 완전히 닫기 직전이네요.

게임 마무리

위에서 진행된 순서에 의해 ball 변수가 0이 되면 모든 스크립트가 멈추면서 게임은 종료됩니다.

ball 변수가 0이 되면서 게임 종료

그러나 문제가 있습니다.

여기서 종료를 시키게 되면 ball 변수가 0이 아닌 경우에는 공은 멈추지 않고 계속 튕기게 됩니다. 그래서 마지막 조건문의 구조를 변경하겠습니다. 만약 'ball=0이면 종료' 되지만, 아니면 공이 패들 위에서 기다리는 조건으로.

ball 변수가 0이 아닌 경우의 패들과 공의 초기화 블록

위 블록으로 대체해야 올바른 코딩이 되겠습니다.

복합 조건문의 블록 배치가 중요함

공은 계속 튕기면서 패들이 놓치면 ball 변수를 1씩 줄입니다. 그러다가 ball 변수가 0이면 게임은 끝나지만 그러기 전까지는 패들과 공은 초기 상태로 다음 마우스 클릭을 기다리게 됩니다.

특히 위에서 화살표로 지적한 블록에서 유의해야 합니다. '마우스를 클릭했는가?'까지 블록 안의 행위가 이어져야 패들 위에 공이 붙어 있으니까요.

정리

복합 조건문이 되면서 블록의 구조가 복잡합니다.

공은 멈추지 않고 움직이다가 벽에 닿으면 튕기고 패들에 닿다도 튕깁니다. 패들이 맞추지 못한 경우 ball 변수를 줄이고 0이 되기 전까지는 공과 패들의 초기화를 시킵니다.


반응형

댓글