#58281
Harrylechienfou
Participant

J’ai essayé de l’adapter à mon projet mais les cercles ne tournent pas autour du point central, ils passent dessus et font des allers-retours… Pourtant ton code fonctionne et j’ai l’impression de le comprendre, mais visiblement en faisant la transcription je dois me tromper quelque part :/
J’ai décidé de recréer un code neuf de mon programme en version hyper simplifié pour y voir plus clair, mais rien n’y fait le problème reste le même. Voici le code simplifié (plutôt que de te filer mon code complet qui fait 1700 lignes, t’y verras bcp plus clair), pourrais-tu m’expliquer où je me goure s’il te plait ? J’arrive vraiment pas à comprendre…
Mes pistes :
– Peut-être que faire des boucles ne fonctionne pas (mais j’ai l’impression d’en avoir naturellement besoin au vu de ma manière de créer mes circles, blackCircle, etc.
– Je me trompe dans la transcription (mais je vois vraiment pas où).
– Autre ?

Le code :

function love.load()
	-- Chargement listes
	sprite_list = {}
	circle_list = {}
	blackCircle_list = {}

	-- Chargement des variables
	for n=1,#circle_list do
		local circle = circle_list[n]
		local blackCircle = blackCircle_list[1]
		circle.angle = circle.angle + circle.speed
		circle.x = blackCircle.x + circle.rotation * math.cos(math.rad(circle.angle))
		circle.y = blackCircle.y + circle.rotation * math.cos(math.rad(circle.angle))
	end
	-- Appel de fonction
	CreateBlackCircle(300,300,30)
	CreateCircle(200,200,10,1)
end

function CreateCircle(pX, pY, pSize, pSpeed)
	-- Usine pour créer des cercles animés pour l'écran titre
  local newCircle = {}
  
  newCircle.x = pX
  newCircle.y = pY
  newCircle.angle = 0
  newCircle.size = pSize
  newCircle.speed = pSpeed
  newCircle.rotation = 50
  newCircle.rotation2 = blackCircle_list[1].size + newCircle.size + (blackCircle_list[1].x - newCircle.x) -- Test (distane entre BlackCircle et Circle)
  
  table.insert(sprite_list, newCircle)
  table.insert(circle_list, newCircle)
  
  return newCircle
end

function CreateBlackCircle(pX, pY, pSize)
	-- Usine pour créer des cercles animés pour l'écran titre
  local newBlackCircle = {}
  
  newBlackCircle.x = pX
  newBlackCircle.y = pY
  newBlackCircle.angle = 0
  newBlackCircle.size = pSize
  newBlackCircle.radius = newBlackCircle.size
  newBlackCircle.color = pColor
  
  table.insert(sprite_list, newBlackCircle)
  table.insert(blackCircle_list, newBlackCircle)
  
  return newBlackCircle
end

function love.update(dt)
	for n=1,#circle_list do
		local circle = circle_list[n]
		local blackCircle = blackCircle_list[1]
		circle.angle = circle.angle + circle.speed
		circle.x = blackCircle.x + circle.rotation * math.cos(math.rad(circle.angle))
		circle.y = blackCircle.y + circle.rotation * math.cos(math.rad(circle.angle))
	end
end

function love.draw()
	-- Change couleur background
	love.graphics.setBackgroundColor(0,0,0.9)

	-- Dessine BlackCircle
	for n=1,#blackCircle_list do
		local blackCircle = blackCircle_list[n]
		love.graphics.setColor(0,0,0)
		love.graphics.circle("fill", blackCircle.x, blackCircle.y, blackCircle.size)
		love.graphics.setColor(1,1,1)
	end

	-- Dessine Circles
	for n=1,#circle_list do
		local circle = circle_list[n]
		love.graphics.circle("fill", circle.x, circle.y, circle.size)
	end
end

Je précise que tout ça, à la base, c’est juste pour créer une animation sympa pour l’écran titre… Ça fait même pas partie du jeu à proprement parler. Le jeu est complet à ce niveau là, il me reste que deux fonctionnalités que j’ai envie d’ajouter (le score défilant et un système de high score enregistrés même quand on quitte le programme et qu’on le relance plus tard). C’est un détail mais en même temps j’ai vraiment envie de comprendre, je suis certain que ça me resservira.