스크래치와 유사한 블록코딩 툴인 엔트리로 만들어본 "똥피하기" 게임입니다. 요즘 7살짜리 아들이 코딩에 관심을 보여, 엔트리로 할 수 있는 것에 대해 알려주기 위해 만들었습니다.
똥피하기 게임은 하늘에서 날아다니는 독수리가 싼 똥을 피하는 게임이며, 하늘에서 내려오는 똥을 맞게 되면 게임이 종료됩니다. 반복, 판단, 복제, 좌표의 개념을 익힐 수 있습니다.
실행해보기 : https://playentry.org/ikaruce/5eb6d9451a4ed60036163df8
똥피하기 게임은 다음 순서로 만들었습니다. 순서대로 따라하면 코딩 경험이 없더라도 쉽게 따라 만들 수 있을 것 같습니다.
I. 키보드로 엔트리봇 움직이기.
좌우 방향키를 누를 때, 엔트리 봇이 좌우로 이동하도록 합니다.
1 엔트리 봇이 땅에서 움직이도록 Y 좌표를 -100으로 변경하고, 크기를 50으로 변경합니다.
2. 이제 키를 눌렀을 때 블럭 두개를 추가하고, 키를 각각 왼쪽 화살표, 오른쪽 화살표로 변경해 줍니다. 그리고 이동을 표현하기 위해, x좌표를 더하고 빼주도록 합니다. 그리고 실행해서 왼쪽 오른쪽으로 잘 이동하는지 확인합니다.
3. 왼쪽, 오른 쪽으로 잘 움직이는 건 확인 했는데, 화면 밖으로 벗어나지 않도록 하고 싶습니다. 그래서 벽에 닿으면 이라는 조건을 추가해보겠습니다.
4. 이제 벽에 닿는 경우, 멈추는 것을 구현하였으니, 움직임이 좀 자연스럽게 하기 위해서 걷는 모습을 구현해봅니다. 모양 탭을 클릭해보면, 엔트리봇은 두가지 이미지를 가지고 있는 것을 확인할 수 있습니다. 이제 이 두 이미지를 번갈아가면서 보여줘서, 움직임이 자연스럽게 만들겠습니다.
왼쪽 화살표를 누를 때, 이동방향을 왼쪽으로 변경하고, 모양을 번갈아가며 바꾸도록 했습니다. 이제 방향키를 누르면 엔트리봇이 화살표 방향으로 달려가는 것을 확인할 수 있습니다.
( 원래는 if else 대신, if !벽을 쓰고 싶었는데, 블록은, "<<<벽에 닿았는가?> 가 아니다> 라면>" 이렇게 되어서 맘에 들지 않았습니다. )
II. 독수리 움직이기
이번에는 독수리가 하늘에서 움직이도록 해보겠습니다. 독수리는 왼쪽에서 오른쪽으로 오른쪽에서 왼쪽으로 반복해서 이동하며 날아다닙니다.
1. + 버튼을 클릭하여 오브젝트를 추가합니다. 동물 탭에 독수리가 있습니다.
2. 독수리의 크기를 50%로 조절하고 독수리가 하늘에서 움직이도록 Y좌표를 110으로 이동해 줍니다.
3. 이제 블록을 추가해서 독수리가 좌-우로 이동하도록 해줍니다. 독수리는 시작 버튼을 누르면 이동하다가 벽을 만나면 반대방향으로 이동합니다. 코드로 만들어보면 시작버튼을 눌렀을때부터 계속 반복하도록 블록을 놓고 그 안에 이동 방향을 5만큼 움직이도록 하고, 화면 끝에 닿으면 튕기기 블록을 추가합니다.
실행해보면 독수리가 뒤집히는데, 오브젝트의 회전 방식을 좌우로 선택하면 독수리가 뒤집어지지 않고 반대방향으로 방향이 바뀝니다.
III. 독수리가 똥싸기
독수리까지 이동하는 것이 완료되었으니 이 게임의 핵심인 똥을 추가합니다. 똥은 독수리가 움직이는 위치에 따라 땅으로 떨어지게 됩니다. 땅으로 떨어진 이후에는 사라지고, 다시 독수리가 똥을 싸도록 합니다.
1. 오브젝트를 추가하기 창에서 파일 올리기를 통해서 오브젝트를 추가합니다. 추가하고 오브젝트 이름을 'poop' 라고 정하고 크기를 20으로 변경해 줍니다.
2. 똥은 바닥으로 떨어지게 해 줍니다. 떨어지는 것은 Y좌표를 변경해주면 됩니다. 또는 이동 방향을 180도로 정해줘도 됩니다. 똥의 경우에는 방향이 변하지 않기 때문에 Y좌표를 변경해 주겠습니다.
실행하면 똥이 바닥으로 떨어지게 되죠. 이제 바닥에 닿으면 똥이 떨어지는 것을 중단하겠습니다.
3. 아직은 똥이 떨어지기 시작하는 위치가 화면의 중앙( x:0, y:0 )인데, 독수리서 떨어지도록 하려면 시작 위치를 독수리의 위치로 변경해줘야 합니다.
이제 독수리에서 똥이 떨어지게 됩니다.
IV. 독수리가 계속 똥싸기
독수리는 시작할 때 한번 똥을 싸고 더이상 똥을 싸지 않는데, 계속 해서 똥을 싸도록 만들어 보겠습니다. 똥 오브젝트를 선택하고 수정해 줍니다.
1. 아랫쪽 벽에 닿았을 때 자신의 복제본을 만들도록 해줍니다. 그리고 복제본이 처음 생성되었을 때 블록을 추가하여, 복제본에 대한 행동을 추가해 줍니다. 복제본에서도 마찬가지로, 독수리의 위치로 이동하고 아랫쪽 벽에 닿았을 경우 복제본을 만들도록 합니다.
2. 이제 블록을 확인해보면 동일한 블럭 순서가 반복 됩니다. 똥의 움직임은 모두 동일하니, 반복된 블록을 제거하고 깔끔하게 변경해줍니다. 그리고 다시 실행해서 제대로 동작하는지 확인해봅니다.
3. 실행해보니, 똥이 화면 중앙에 계속해서 보이는 문제가 있습니다. 그래서 똥 오브젝트를 보이지 않게 변경하고, 복제본이 생성되었을 때 나타나도록 합니다.
4. 바닦에 똥이 쌓이는 것이 맘에 들지 않아서 바닥에 떨어지고 1초 후에 사라지도록 하겠습니다.
이제 똥은 바닥에 떨어지고 잠시 후에 화면에서 사라지게 됩니다.
V. 엔트리봇이 똥 맞기
이번에는 엔트리봇이 떨어지는 똥을 맞으면 게임이 종료되도록 하겠습니다.
1. 똥에 닿으면 으악을 소리를 내도록 하겠습니다. 엔트리봇 오브젝트를 선택하고 블럭을 추가해 줍니다.
다시 코드를 실행해보면 똥이 항상 엔트리 봇 머리 위에서 떨어지기 때문에 시작하고 바로 게임이 종료되는 문제가 있습니다. 그래서 다음과 같이
2. 독수리가 처음 똥을 떨어뜨리는 시간을 변경합니다. poop 오브젝트를 선택합니다. 그리고 2초 기다리기 블럭을 추가하고 시간을 1초로 변경합니다. 이제 시작하고 1초 후부터 똥이 떨어지기 시작합니다.
3. 재미를 위해서 소리도 추가해 주겠습니다. 엔트리봇 오브젝트를 선택하고, 소리 탭에서 소리 추가하기를 눌러 남자 비명소리를 추가해 줍니다. 마찬가지로 poop 오브젝트를 선택하고 방귀소리3을 추가해 줍니다.
4. 엔트리봇 오브젝트에 으악을 소리치는 버튼 아래에 남자 비명 소리를 추가하고, poop 오브젝트의 복제본이 생성될때 방귀소리가 나오도록 블록을 추가합니다.
5. 이제 엔트리봇은 똥을 맞거나, 밟았을 때, 으악 소리를 내고 종료하게 됩니다.