Загрузка данных
namespace SpriteKind {
export const Coin = SpriteKind.create()
export const Basket = SpriteKind.create()
export const Text = SpriteKind.create()
}
function startDrop () {
clearGame()
scene.setBackgroundColor(13)
createBaskets()
makeText(80, 18, question)
coin = sprites.create(img`
. . 5 5 5 5 5 5 . .
. 5 4 4 4 4 4 4 5 .
5 4 4 4 4 4 4 4 4 5
5 4 4 4 1 1 4 4 4 5
5 4 4 1 4 4 1 4 4 5
5 4 4 1 4 4 1 4 4 5
5 4 4 4 1 1 4 4 4 5
5 4 4 4 4 4 4 4 4 5
. 5 4 4 4 4 4 4 5 .
. . 5 5 5 5 5 5 . .
`, SpriteKind.Coin)
coin.setPosition(80, 38)
coin.vy = 18
coin.setFlag(SpriteFlag.StayInScreen, true)
controller.moveSprite(coin, 70, 0)
state = 1
}
function showQuestion () {
clearGame()
scene.setBackgroundColor(13)
makeText(80, 28, "PRIVATE OR PUBLIC?")
makeText(80, 58, question)
makeText(80, 96, "PRESS DOWN TO START")
state = 0
}
function chooseQuestion () {
questionNumber = randint(0, 5)
while (questionNumber == lastQuestion) {
questionNumber = randint(0, 5)
}
lastQuestion = questionNumber
question = questions[questionNumber]
correctPrivate = answers[questionNumber]
}
function showWin () {
clearGame()
scene.setBackgroundColor(7)
makeText(80, 35, "GAME COMPLETE!")
makeText(80, 65, "5 / 5 CORRECT")
makeText(80, 95, "WELL DONE!")
state = 4
}
function clearGame () {
sprites.destroyAllSpritesOfKind(SpriteKind.Coin)
sprites.destroyAllSpritesOfKind(SpriteKind.Basket)
sprites.destroyAllSpritesOfKind(SpriteKind.Text)
}
function clearText () {
sprites.destroyAllSpritesOfKind(SpriteKind.Text)
}
function createBaskets () {
privateBasket = sprites.create(img`
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 . . . . . . . . . . . . . . . . . . 2
2 . . . . . . . . . . . . . . . . . . 2
2 . . . . . . . . . . . . . . . . . . 2
2 . . . . . . . . . . . . . . . . . . 2
2 . . . . . . . . . . . . . . . . . . 2
2 . . . . . . . . . . . . . . . . . . 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
`, SpriteKind.Basket)
privateBasket.setPosition(35, 108)
privateBasket.setFlag(SpriteFlag.Ghost, true)
publicBasket = sprites.create(img`
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
7 . . . . . . . . . . . . . . . . . . 7
7 . . . . . . . . . . . . . . . . . . 7
7 . . . . . . . . . . . . . . . . . . 7
7 . . . . . . . . . . . . . . . . . . 7
7 . . . . . . . . . . . . . . . . . . 7
7 . . . . . . . . . . . . . . . . . . 7
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
`, SpriteKind.Basket)
publicBasket.setPosition(125, 108)
publicBasket.setFlag(SpriteFlag.Ghost, true)
makeText(35, 82, "PRIVATE")
makeText(125, 82, "PUBLIC")
}
function showWrong () {
clearGame()
scene.setBackgroundColor(2)
makeText(80, 38, "WRONG!")
makeText(80, 62, "TRY AGAIN")
makeText(80, 92, "PRESS DOWN")
makeText(80, 110, "TO TRY AGAIN")
state = 3
}
controller.down.onEvent(ControllerButtonEvent.Pressed, function () {
if (state == 0) {
startDrop()
} else if (state == 2) {
chooseQuestion()
showQuestion()
} else if (state == 3) {
showQuestion()
}
})
function makeText (x: number, y: number, words: string) {
text = sprites.create(img`
. .
. .
`, SpriteKind.Text)
text.setPosition(x, y)
text.sayText(words, 999999)
}
function showCorrect () {
clearGame()
scene.setBackgroundColor(7)
makeText(80, 42, "CORRECT!")
makeText(80, 78, "PRESS DOWN")
makeText(80, 98, "FOR NEXT QUESTION")
state = 2
}
let correctAnswers = 0
let hitPublic = false
let hitPrivate = false
let coin2: Sprite = null
let coins: Sprite[] = []
let text: Sprite = null
let publicBasket: Sprite = null
let privateBasket: Sprite = null
let correctPrivate = false
let questionNumber = 0
let state = 0
let coin: Sprite = null
let question = ""
let lastQuestion = 0
let answers: boolean[] = []
let questions: string[] = []
questions = [
"PASSWORD",
"HOME ADDRESS",
"PHONE NUMBER",
"FAVOURITE GAME",
"YOUR NAME",
"FAVOURITE SPORT",
"EMAIL",
"SCHOOL",
"BANK CARD",
"PHONE CODE"
]
answers = [
true,
true,
false,
false,
false,
false,
false,
false,
true,
true
]
lastQuestion = -1
scene.setBackgroundColor(13)
chooseQuestion()
showQuestion()
game.onUpdate(function () {
if (state == 1) {
coins = sprites.allOfKind(SpriteKind.Coin)
if (coins.length > 0) {
coin2 = coins[0]
if (coin2.y >= 90) {
hitPrivate = coin2.x >= 15 && coin2.x <= 55
hitPublic = coin2.x >= 105 && coin2.x <= 145
if (hitPrivate && correctPrivate) {
correctAnswers += 1
if (correctAnswers >= 5) {
showWin()
} else {
showCorrect()
}
} else if (hitPublic && !(correctPrivate)) {
correctAnswers += 1
if (correctAnswers >= 5) {
showWin()
} else {
showCorrect()
}
} else {
showWrong()
}
}
}
}
})