pxt-calliope/docs/reference/js/lessons/pong/activity.md

66 lines
1.8 KiB
Markdown
Raw Normal View History

2016-03-26 00:47:20 +01:00
# pong activity
Building a game of pong with sprites. #docs #lessons #pong
### ~avatar avatar
### @video td/videos/pong-0
Welcome! This tutorial will teach you how to build a simple pong game using sprites.
### ~
The game works as follow: the user moves a paddle on the left of the screen and a ball bounces on the other side. Let's start by creating the 2 sprites.
```
let paddle = game.createSprite(0, 2)
let ball = game.createSprite(4, 2)
```
Let's make the ball start with an angle.
```
ball.setDirection(-45)
```
The user will control the paddle by pressing ``A`` to go up and ``B`` to go down. Let's add ``on button pressed`` event handlers to do that.
```
input.onButtonPressed(Button.A, () => {
2016-03-26 00:47:20 +01:00
paddle.changeYBy(-1)
})
input.onButtonPressed(Button.B, () => {
2016-03-26 00:47:20 +01:00
paddle.changeYBy(1)
})
```
Let's add a ``forever`` loop to start the main game logic.
```
basic.forever(() => {
// Leave the sprite on screen for a little while.
basic.pause(400)
// Let's move the ball in whatever direction it is currently going.
ball.move(1)
// The ball might be on the left side of the screen (``x = 0``), let's test for that.
if (ball.x() == 0) {
// Let's add a little pause to let the user know that the ball is on the side.
basic.pause(400)
// If the paddle is not at the same ``y`` coordinate, it missed the ball and we can trigger a game over. If not, we add a point to the score.
if (paddle.y() != ball.y()) {
game.gameOver()
} else {
game.addScore(1)
basic.pause(500)
}
}
// The ball moved and might be on a side, let's make sure it bounces.
ball.ifOnEdge_Bounce()
// If the ball is on the left side, slide it forward to change slightly the bouncing mechanics.
if (ball.x() == 0) {
ball.changeXBy(1)
}
})
```