Programming is not so difficult as it might seem to be at first sight. It is all about logic.
Translating that logic into workable code might perhaps be a more daunting task, but for that we can offer help.
i have a question: do i have to repeat all my steps 20 times?
If you would not use a computer and/or programing language but would have to calculate things using your calculator, and drawing the circles on paper (one sheet per frame). How would you solve the problem then ?
If drawing circles to paper is too complicated, just pick some coins from your wallet and place them on a table and start moving them around and try to follow/understand the flow of the (moving) coins. Visualize and ask yourself what happens when two coins 'touches' each other ? And what happens if 3 coins touches each other at the same time ? And how do we 'know' that one or more coins touches at the same time ? How many times would you have to 'verify' whether two coins touched each other or not ?
isnt that the thing we wanted to avoid?
If you were able to answer the questions above then you know the answer, and also know why it would be impossible to avoid the repetition. Having said that, a programming language offers a solution for that and that solution is named "a loop".
because i spent some time thinking about everything and i tried something in a copy of my program and everything i tried didnt work (i dont want you to show me the solution i just want a "yes" or a "no" to my question above).
I am guessing that the answer that you seek for your question would be yes. but as i wrote above (and written by user Lainz, and earlier in this thread shown with code by user taazz) you can use a loop for that.
Seems to me that you're just trying as you get along in the hope something will eventually work without actually understanding a) the problem at hand and b) the basic constructs that the pascal language offers.
Both are something that you could improve upon.
You said you have working code for two ellipses that are able to bounce off each other (and "sidewalls"). imho that would be a much better starting point to introduce yourself to arrays and subsequently loops.
The whole point (at least one of them) of a loop is to avoid repetition and place repetitive statements inside that loop so that you (as a programmer) do not have to repeat the same statements over and over again.
btw: i've noticed somewhere the use of variables named Freix and Freiy which seems to indicate your native tongue is German ? There are excellent German forums that support Delphi and/or Free pascal and for sure there are German users around (not to mention the existence of books about Delphi/Pascal written in the German language).