View Full Version : [C]aiuto programma di grafica
Devo fare un programma in grafica 2d che faccia andare in movimento un pallina (rappresentabile con un cerchietto) all'interno di 4 pareti con due ostacoli e la pallina una volta che incontra le pareti rimbalza.. ora il problema non è come far muovere la pallina ma come farla rimbalzare? aiutatemi
Se il problema che hai è fisico ti posso dire che una delle soluzioni migliori è rappresentare la velocità della pallina come un vettore, che quindi ha una direzione, un verso ed un modulo.
Nei rimbalzi basta che vari la verso e direzione della velocità(e magari puoi dimunire un pelo il modulo in modo da farla più "reale") in base all'angolo di incidenza della pallina con la parete.
Diventa così un problema puramente geometrico e facilmente rappresentabile con un software.
il tutto come è rendibile in c?
Bhe diventa matematica, quindi semplici operazioni.
Intanto devi mettere su una sorta di "motore grafico", detta così sembra chissà che ma basta che fai un loop(ne giochi definito solitamente game loop) dove il programma sposterà la palla e farà tutti i vari controlli per gli urti.
Per farlo semplice fai un loop temporizzato, che ogni dt(delta t con t=tempo) cicla.
Se hai definito il moto della palla attraverso la velocità, il ds(delta s con s=spostamento) è dato dalla tua velocità della palla e dal dt --> ds=v*dt
In questo modo sai di quanto si è spostata la palla, in particola essendo v un vettore anche ds sarà un vettore, quindi scindibile in due componenti dsx e dsy, ovvero di quanto si sposta la palla sull'asse x e sull'asse y.
Se il problema che hai è fisico ti posso dire che una delle soluzioni migliori è rappresentare la velocità della pallina come un vettore, che quindi ha una direzione, un verso ed un modulo.
Nei rimbalzi basta che vari la verso e direzione della velocità(e magari puoi dimunire un pelo il modulo in modo da farla più "reale") in base all'angolo di incidenza della pallina con la parete.
Diventa così un problema puramente geometrico e facilmente rappresentabile con un software. per questo tipo di problema rappresentare un vettore tramite direzione verso e modulo è sconveniente (te lo dico perché l'ho fatto in 3D una volta :)). è più conveniente rappresentarlo semplicemente con 2 o 3 valori (a seconda che le dimensioni dello spazio siano 2 o 3, in questo caso 2), perché in tal modo un rimbalzo altro non è che l'inversione di segno di uno di quei numeri, a seconda che la parete su cui rimbalza la pallina sia orizzontale o verticale.
Io stavo spiegando come fare io, anzi come feci io per il mio giochino, se inizia così poi alla pallina può far fare davvero tutto in modo molto semplice.
più o meno ho capito la teoria.. però non come farlo perchè innanzi tutto vabbeh ho sbagliato come far muovere il cerchi che stupidamente ho pensato di far muovere mettendo l'indice del for al posto delle coordinate del cerchio... poi vorrei capire la condizione per far si che la pallina si accorga di essere arrivata alla parete e poi la pallina come cambia di direzione? se io gli do un movimento di spostamento uguale velocità per tempo devo variare un parametro all interno del for?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.