Har du en ruta som följer skärmen och som bollen studsar runt i?
I så fall föreslår jag att du inför en riktningsvaraiabel höger/vänster och en upp/ner. Vinkeln kan nu variera mellan 0 och 90 grader. En horisontell linje kan vara 0 grader. Bollens riktning kan nu beskrivas som "70 grader höger uppåt" eller "45 grader vänster neråt".
Krockar du i en av sidoväggarna byts höger/vänsterriktningen och krockar du i topp- eller bottenväggen byts upp mot ner och tvärtom. Vinkeln ändras aldrig.
Bra, då slapp du det problemet att ändra på vinkeln! Nädå... du måste göra en funktion för att omvandla din {H/V, U/N, VINKEL} som du har till en fullständig vinkel. Den kan se ut så här med pseudokod:
if sidled = höger then
if höjdled = upp then resultat := vinkel
else resultat := 360 - vinkel
end if
else
if höjdled = upp then resultat := 180 - vinkel
else resultat := 270 - vinkel
end if
end if