Strutture in C - IV - Il punto rimbalzino

Vogliamo fare rimbalzare un carattere sullo schermo... usiamo una struttura che ne contenga i dati! Molto più semplice, no?

#include <iostream>
#include "semigraf.h"

using namespace std;

struct Punto {
	char carattere; // Il carattere da fare rimbalzare
	int colore; // Il colore del carattere
	int x; // La posizione x sullo schermo
	int y; // La posizione y sullo schermo
	int velX; // La velocità sull'asse x a cui sta viaggiando
	int velY; // La velocità sull'asse y a cui sta viaggiando
	
	Punto() { // imposto i valori inziali
		carattere = '>';
		colore = 3; // Colore iniziale
		x = 1; // posizione iniziale x
		y = 1; // posizione iniziale y
		velX = 1; // è fermo all'inizio, velocità X = 0
		velY = 1; // è fermo all'inizio, velocità Y = 0
	}
}; 

// Stampa la pallina nella posizione corrente
void stampaPunto(Punto p) {
    gotoxy(p.x, p.y);
    setcolor(p.colore);
    cout << p.carattere;	
}

// Cancella la pallina nella posizione corrente
void cancellaPunto(Punto p) {
    gotoxy(p.x, p.y);
    cout << " ";	
}

int main() {
	Punto pallina; // Il punto p ha già i valori impostati nel costruttore
	setcursor(_NOCURSOR); // Nascondo il cursore
	for (int i=0; i<20; i++) {
		stampaPunto(pallina);
		delay(125);
		cancellaPunto(pallina);
		// Aggiorno x e y in base alla velocità
		pallina.x = pallina.x + pallina.velX;
		pallina.y = pallina.y + pallina.velY;
	}	
}

Il codice precedente muove una pallina a in diagonale in basso a destra partendo da 1,1.

Attività

  1. Sperimenta come fare muovere la pallina solo cambiando la velocità. Cosa succede se la velocità è negativa?
  2. Fai in modo che la pallina rimbalzi sulle pareti
  3. Fai in modo che la pallina cambi colore e simbolo casualmente dopo ogni rimbazo
  4. Fai in modo che la pallina dopo dieci rimbalzi acquisti velocità
  5. Aggiungi una seconda pallina con velocità diversa
  6. Aggiungi n palline configurate dall'utente che sceglie la velocità
  7. *** Fai rimbalzare le palline tra si loro

Quindi carica su moodle un il programma realizzato.

Maggiori informazioni su cplusplus

Buon lavoro!