Allora... Tu hai fatto bene a creare questo while infinito, è quello che viene chiamato main loop, application loop, o game loop.
Quello che non va nel loop è appunto l'inizializzazioine degli oggetti.
un gioco in via molto generale è una struttura di questo tipo
codice:
struct point {int x; int y;};
Int main()
{
//dichiari puntatori che rappresentano i tuoi oggetti, o sistemi
//oppure puoi dichiararli fuori come variabili globali
//ora qui faccio solo un esempio
unsigned char** _bordo = null;
unsigned char** _racchetta = null;
unsigned char* _palla = null;
bool exit = false;
point _posizionePalla; //in realtà poi per queste sarebbe meglio usare un float variabile da 0 a 1 in modo che si adatti alle dimensioni dello schermo
int _posizioneRacchetta;
//ti crei una bella funzione di inizializzazione, che disegna il bordo e la racchetta e la palla nella posizione iniziale
Init_all();
//adesso puoi entrare nel loop infinito ed ascoltare l'input dell'utente
while (!exit)
{
//prendi l'input da tastiera e lo elabori. Se l'input è di uscita metti exit=true;
//aggiorni _posizioneRacchetta
//aggiorni _posizionePalla
//cancelli lo schermo e lo ridisegni tutto
} //EO game loop
} //EO main
Poi qui ci sono tante cose da fare: per esempio per far muovere la palla ad una certa velocitá devi sapere quanto tempo ci vuole per eseguire un ciclo del loo.
Questo comunque puoi aggiungerlo in un secondo momento