Pontuação e vitória
Parte da seção Projetos do Journey de Godot da Coddy. Lição 17 de 33.
Uma pedra grande vale 20 pontos e uma pequena, 50. _on_rock_broken conhece o tamanho, então adiciona os pontos e atualiza $HUD/Score.
Você vence quando não restam pedras. Comece a contagem em 4. Subtraia uma para cada pedra quebrada e adicione duas quando uma grande se dividir:
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = trueConte as duas novas pedras aqui, não em spawn_rock. spawn_rock é executada no fim do quadro, então a contagem chegaria a zero antes que as duas últimas pedras pequenas existissem.
As pedras, as balas e a nave são Pausable. Main é Always.
Desafio
DifícilEm main.gd:
- Adicione
var score = 0e mostreScore: 0no início. - Uma pedra grande quebrada adiciona 20 pontos, e uma pequena, 50. Mostre a nova pontuação.
- Adicione
var rocks_left = 4e faça a contagem conforme mostrado. Quando chegar a zero, mostreYou Win!e pause o jogo.
Experimente você mesmo
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Projetos
1Projeto: Breakout
Raquete do BreakoutMantenha a raquete na tela4Projeto: Explorador de Masmorras
Percorra a masmorraPegue a chave2Projeto: Jogo de Tiro com Asteroides
Gire a naveAcione o motorPratique por conta própria: Playground de Godot