Menu
CoddyTech

ניקוד וניצחון

חלק מהיחידה פרויקטים במסלול ה-Godot של Coddy. שיעור 20 מתוך 36.

סלע גדול שווה 20 נקודות, וסלע קטן שווה 50. _on_rock_broken יודע מה הגודל, ולכן הוא מוסיף את הנקודות ומעדכן את $HUD/Score.

מנצחים כשלא נשארים סלעים. מתחילים את הספירה ב־4. מפחיתים אחד על כל סלע שנשבר, ומוסיפים שניים כשסלע גדול מתפצל:

if rock.size == 2:
	rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
	$HUD/Message.text = "You win!"
	get_tree().paused = true

סופרים כאן את שני הסלעים החדשים, ולא בתוך spawn_rock. spawn_rock רצה בסוף הפריים, ולכן הספירה תגיע לאפס לפני ששני הסלעים הקטנים האחרונים ייווצרו.

הסלעים, הקליעים והחללית ניתנים להשהיה. Main פועל תמיד.

challenge icon

אתגר

קשה

צבור נקודות על הסלעים ונצח כשהם ייעלמו.

  1. ב־main.gd, הוסף var score = 0 והצג Score: 0.
  2. ניפוץ סלע גדול מוסיף 20 נקודות, וסלע קטן מוסיף 50. הצג את הניקוד.
  3. הוסף var rocks_left = 4. הפחת אחד על כל סלע שנשבר, והוסף שניים כשסלע גדול מתפצל. כשנותר 0, הצג You win! והשהה את המשחק.

לחץ על שחק ופנה את הסלעים: ההודעה You win! תופיע. ואז לחץ על בדיקה.

נסו בעצמכם

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)

כל השיעורים ביחידה פרויקטים

תרגלו בעצמכם: Godot אונליין