Newsgroup: it.comp.lang.c++
Titolo: Chi mi aiuta????

Qualcuno puo dirmi a che servono   push_back, begin e end? Come si usano? So
che fanno parte delle STL ma non ho capito a che servono e come funzionano.
Qualche volontario può spiegarmi questi pezzi di codice?
---------------------------------
void Savana::cicloDiVita()
{
 for(animali::iterator it = fauna.begin(); it != fauna.end(); ++it)
  if((*it)->getVivente())
   (*it)->vivi(*this);
}
---------------------------------
// Inserisce una mossa dopo verifica della validita'
bool TicTacToe::Mossa(int g, int x, int y) {
 if(x>=1 && x<=3 && y>=1 && y<=3)
  if(s[x-1][y-1] == 0) {
   s[x-1][y-1] = g;
   nMosse++;
   return true;
  }
 return false;
}
-----------------------------------------
Un'ultima cosa: come calcolo il rimbalzo di una palla in direzione
perpendicolare quando tocca un bordo?
Un GRANDE grazie a chi vorrà aiutarmi  ( ho esame tra una decina di giorni)
Garfles

 giorni)
In bocca al lupo!
-- 
Per l'e-mail rimuovere la frase in maiuscolo e gli underscore.

:
[...]
Dimenticavo: per le specifiche sulla STL,
http://www.sgi.com/tech/stl/
Saluti


 perpendicolare quando tocca un bordo?
Vabbè, questa è un pò troppo generica come domanda;-)
Ciao


Cerco di spiegarmi meglio:
il prog consiste in un robot che appena tocca un bordo dell'arena, rimbalza
in direzione perpendicolare al bordo colpito. Mi seviva sapere come
calcolare il rimbalzo in direzione perpendicolare . Per costruire l'arena
(10x10), debbo usare unsare un array o esiste qualche altra soluzione?
Garzie ancora
Garfles

 (10x10), debbo usare unsare un array o esiste qualche altra soluzione?
Una soluzione, non so quanto (ti) piaccia e non specifica nel linguaggio. (e
spero giusta).
Puoi associare al robot una posizione (sull'arena) ed una velocita'
istantanea, intesa come quadretti/ciclo percorsi dal robot. Entrambi i
valori sono vettori di dimensione 2 (direzione X/Y, immagino la tua arena
vista dall'alto). Un ciclo aggiorna continuamente la posizione, applicando
la velocita' e correggendo quindi la posizione del robot.
Sempre nel ciclo, quando avviene un rimbalzo su una parete (assumendo che
sia elastico), cosa che puoi testare dal valore delle coordinate, viene
ribaltata la componente della velocita' ortogonale alla parete.
Esempio: chiamando vx la velocita' in direzione x e vy quella in direzione
y, allora avremo che:
- parete ovest / est:  vx = -vx
- parete sud / nort: vy=-vy.
In questo modo l'urto rimane elastico.
Occhio al caso in cui sbatta esattamente sul vertice, a cui appartengono
entrambe le pareti.
La cosa si complica se l'arena non e' rettangolare, ovviamente...  ma forse
ti basta questo ;)
Saluti


Grazie, pensavo anch'io di fare cosi.
Per costruire l'arena (10 m x 10m), debbo usare usare un array o esiste
qualche altra soluzione?
Garfles

 qualche altra soluzione?
Beh non e' detto. Se, come mi hai detto, il tuo robot sta su un'arena
rettangolare, direi che l'arena e' caratterizzata solo da altezza e
larghezza. In ogni caso, molto dipende da cosa hai in mente di fare. Un solo
"robot", o tanti, per dirne una?
Comunque direi di no, quello che conta e' la posizione del robot nell'arena,
non lo "stato" di ciascun settore in cui e' suddivisa. Ma immagino esistano
piu' modi... magari posta qui quando avrai abbozzato una soluzione
formalmente piu' precisa.
Saluti.

 formalmente piu' precisa.
A pensarci hai ragione, basta mettere x<=10 e y<=10 (cone x e y le
coordinate del robot) ed è fatta .
Che ne pensi?

 Che ne pensi?
Essendoci molti robot la matrice sarebbe stata una soluzione piů efficiente.
Senza matrice l'unico modo per sapere se una data posizione č occupata č
quella di scorrere la lista di tutti i robot e verificare se quel robot č in
quella posizione.
Con la matrice invece č solo un singolo accesso in memoria.
Fai tu, dipende dalle esigenze.

 Che ne pensi?
Perche' me lo chiedi? :)
Piuttosto implementalo, e verifica se il tuo modo di pensare e' giusto...
E se hai problemi specifici posta pure qui.
Saluti.

 Saluti.
Ok, ora faccio il tutto e vediamo se funziona.
Grazie per l'aiuto.
Garfles