Menu
CoddyTech

Une tour aléatoire

Leçon 3 sur 18 du cours Jeu Roblox : tour sans fin de Coddy.

Une tour composée cinq fois du même étage, ce n’est pas amusant. ServerStorage.Stages contient sept types : Steps, KillBricks, Conveyor, VanishingSteps, Bounce, Spinner et Lasers. Choisis-en un au hasard pour chaque niveau :

local all = stages:GetChildren()
local stage = all[math.random(1, #all)]

math.random(1, #all) est un nombre entier compris entre 1 et le nombre d’étages, donc chaque étage a la même probabilité d’être choisi. Pour l’instant, la plupart ne font rien : leurs toupies, tapis roulants et lasers s’animeront dans le chapitre suivant.

Au-dessus du dernier étage se trouve ServerStorage.Finish, une plateforme dorée où l’ascension prend fin. stack soulève déjà n’importe quel Model, donc il soulève aussi Finish.

challenge icon

Défi

Facile
  1. Écris pickStage() : renvoie un enfant aléatoire de stages.
  2. Dans buildTower, empile pickStage() au lieu de stages.Steps.
  3. Après la boucle, empile ServerStorage.Finish tout en haut.

Appuie plusieurs fois sur Play : chaque tour est différente. Puis Check.

Essayez vous-même

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)

local stages = ServerStorage.Stages
local tower = nil

print("Each tower has " .. Settings.StageCount .. " stages")

-- Chaque joueur reçoit Wins dans le classement
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local wins = Instance.new("IntValue")
	wins.Name = "Wins"
	wins.Parent = leaderstats
end)

-- Place une copie d’un modèle au sommet de la tour ; renvoie la copie et la nouvelle hauteur du sommet
local function stack(template, bottom)
	local copy = template:Clone()
	local box, size = copy:GetBoundingBox()
	local lift = bottom - (box.Position.Y - size.Y / 2)
	copy:PivotTo(copy:GetPivot() + Vector3.new(0, lift, 0))
	copy.Parent = tower
	return copy, bottom + size.Y
end

-- Construit une tour à partir du stage Steps
local function buildTower()
	tower = Instance.new("Model")
	tower.Name = "Tower"
	tower.Parent = workspace
	local top = 0
	for i = 1, Settings.StageCount do
		local stage, newTop = stack(stages.Steps, top)
		top = newTop
	end
end

buildTower()
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Jeu Roblox : tour sans fin