Menu
CoddyTech

Random Lanes

Part of the Game Rules section of Coddy's Godot journey. Lesson 21 of 29.

Some random picks need a whole number, like one of five lanes or a die roll.

randi_range(a, b) gives a random whole number from a to b, both included:

var roll = randi_range(1, 6)	# 1, 2, 3, 4, 5 or 6

The screen is 640 pixels wide, so five lanes are 128 pixels each. Multiply the lane by 128, then add 64 to reach the middle of the lane:

var lane = randi_range(0, 4)
spawn(lane * 128 + 64)

That gives x = 64, 192, 320, 448 or 576, and nothing in between.

challenge icon

Challenge

Easy

Make the blocks fall in five lanes.

  1. In _on_spawn_timer_timeout(), pick a lane with var lane = randi_range(0, 4).
  2. Spawn the block at lane * 128 + 64.

Press Play: blocks fall in neat columns. Then Check.

Try it yourself

extends Node2D

var block_scene = preload("res://block.tscn")

func _ready():
	$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)

func _on_spawn_timer_timeout():
	spawn(randf_range(40, 600))

func spawn(x):
	var block = block_scene.instantiate()
	block.position = Vector2(x, -30)
	add_child(block)
quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

All lessons in Game Rules

Practice on your own: Godot playground