Open World Soccer Forum Index Open World Soccer
Community Forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Codice Sorgente
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Open World Soccer Forum Index -> Italiano
View previous topic :: View next topic  
Author Message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Thu Jun 17, 2010 12:25 am    Post subject: Codice Sorgente Reply with quote

ciao a tutti.

innanzi tutto COMPLIMENTI.
veramente impressionate quello che avete realizzato.

ma Ŕ possibile avere il codice sorgente con le indicazioni di tutti i programmi utilizzati ed eventuali configurazioni se necessario?
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Thu Jun 17, 2010 12:27 am    Post subject: scusate Reply with quote

qua forse?

http://openworldsoccer.sourceforge.net/forum/viewforum.php?f=2

Embarassed
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Thu Jun 17, 2010 2:23 am    Post subject: Reply with quote

ho seguito passo passo ma poi ho un problema.

http://openworldsoccer.sourceforge.net/forum/viewtopic.php?t=66&start=0&postdays=0&postorder=asc&highlight=

dopo aver messo tutto nel percorso:

C:\msys\1.0\home\yourusername\ows

modificato il Makefile come indicato e aver lanciato i comandi:

Code:
$ make
$ ./ows.exe


mi viene restituito:

Code:
make: *** No targets specified and no makefile found. Stop

ho pensato che fosse un problema di percorso quindi per prova ho
portato tutto dentro alla cartella ../home/myusername

e cosý mi dice:

Code:
Makefile:4: *** missing separator. Stop

cosa sbaglio?
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Thu Jun 17, 2010 10:53 am    Post subject: Reply with quote

io ve le scrivo tutte le domande poi quando avete tempo magari mi date una risposta globale.

voi con cosa programmate?
Dev-c++?
o cosa?
sapete come configurare Dev per ar girare il tutto?

grazie Very Happy
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Thu Jun 17, 2010 6:06 pm    Post subject: Reply with quote

Alan_Wilder wrote:
io ve le scrivo tutte le domande poi quando avete tempo magari mi date una risposta globale.

voi con cosa programmate?
Dev-c++?
o cosa?

Per lo sviluppo uso Debian Lenny e come editor vi.
In Linux e' tutto molto semplice, con tre comandi puoi preparare l'ambiente, scaricare i sorgenti e compilare il tutto.
Alan_Wilder wrote:

sapete come configurare Dev per ar girare il tutto?
grazie Very Happy

Le versioni per Windows le ho compilate usando MinGW, ma purtroppo non ho avuto ancora tempo di completare il tutorial (manca la 3 parte).

Riguardo gli errori nel Makefile, assicurati che i comandi siano indentati usando la tabulazione e non lo spazio.
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Fri Jun 25, 2010 9:21 pm    Post subject: Reply with quote

ciao.

ti posso chiedere la spiegazione della funzione:

void Ball::update_physics()

dentro Ball.ccp?

in particolar modo le righe:

Code:
   
// angle & spin
a += 4.0/SECOND*s;
s *= 1-2.0/SECOND;

// position & speed
x = x + v / SECOND * (Cos(a));
y = y + v / SECOND * (Sin(a));
   
// grass friction
//v = v - grass.friction * Sqr(Abs(v)) * (z < 1);
v = v - 6.7 / SECOND * sqrt(Abs(v)) * (z < 1);


la variabile SECOND a cosa serve??

Code:

const int SUBFRAMES = 10;            // subframes are used to achieve a smooth replay
const int REFRATE = 50;             // (must be multiple of 10)
const int SECOND = REFRATE * SUBFRAMES;


e perchÚ deve valere 500?

grazie
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Fri Jun 25, 2010 10:52 pm    Post subject: Reply with quote

Alan_Wilder wrote:

la variabile SECOND a cosa serve??

Code:

const int SUBFRAMES = 10;            // subframes are used to achieve a smooth replay
const int REFRATE = 50;             // (must be multiple of 10)
const int SECOND = REFRATE * SUBFRAMES;


e perchÚ deve valere 500?

grazie

E' il numero di frame (calcolati) per secondo.
In OWS vengono calcolati molti piu' frame di quelli effettivamente visualizzati durante la partita. Questi "subframe" sono visualizzati nel replay per ottenere un movimento fluido.
Quindi con 10 subframe e un refresh di 50 Hz vengono calcolati 500 frame al secondo.
La fisica della palla e' parametrizzata con SECOND, in modo da essere indipendente dai valori di REFRATE oppure SUBFRAMES.
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Fri Jun 25, 2010 11:50 pm    Post subject: Reply with quote

grazie!!! Wink

altre domande (se approfitto troppo della tua gentilezza dimmelo).

quando la palla entra in possesso di un giocatore (owner) questa prende la velocitÓ del giocatore finchÚ non la perde?

a che servono le variabili sulla zona tipo:

Code:

zone_x
zone_x_next

costanti :
BALL_ZONE_DX
BALL_ZONE_DY


grazie mille
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Sat Jun 26, 2010 10:25 am    Post subject: Reply with quote

Alan_Wilder wrote:

quando la palla entra in possesso di un giocatore (owner) questa prende la velocitÓ del giocatore finchÚ non la perde?

Esatto

Alan_Wilder wrote:

a che servono le variabili sulla zona tipo:

Code:

zone_x
zone_x_next

costanti :
BALL_ZONE_DX
BALL_ZONE_DY


grazie mille

E' la zona del campo dove si trova la palla.
I giocatori che non partecipano all'azione si posizionano in base alla tattica della squadra e alla zona attuale e futura della palla.
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Tue Jun 29, 2010 8:19 pm    Post subject: Reply with quote

Ti prego spiegami queste:

Code:

   // angle & spin
   a += 4.0/SECOND*s;
   s *= 1-2.0/SECOND;


l'angolo di cosa?
nelle 2D?
o Ŕ l'angolo con cui si alza la palla da terra?
a cosa ti serve lo spin??
sarebbe l'accelerazione??

Code:

   // position & speed
   x = x + v / SECOND * (Cos(a));
   y = y + v / SECOND * (Sin(a));


l'angolo che parte ha qua?
calcoli la x e la y ma poi in che momento le applichi veramente alla palla? le vere coordinate della palla sono data[frame].x e data[frame].y giusto?

Code:
   
   // grass friction
   v = v - 6.7 / SECOND * sqrt(Abs(v)) * (z < 1);


???

grazie!!!

Cool
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Tue Jun 29, 2010 8:48 pm    Post subject: Reply with quote

Alan_Wilder wrote:

l'angolo di cosa?
nelle 2D?
o Ŕ l'angolo con cui si alza la palla da terra?

e' l'angolo del piano x-y

Alan_Wilder wrote:

a cosa ti serve lo spin??
sarebbe l'accelerazione??

lo spin e' l'"effetto" (di un tiro o un passaggio)

Alan_Wilder wrote:

Code:

   // position & speed
   x = x + v / SECOND * (Cos(a));
   y = y + v / SECOND * (Sin(a));

l'angolo che parte ha qua?
calcoli la x e la y ma poi in che momento le applichi veramente alla palla?

le sto applicando proprio adesso, sono x e y della palla

Alan_Wilder wrote:

le vere coordinate della palla sono data[frame].x e data[frame].y giusto?

si, "vere" nel senso che da "data" vengono preso i dati per la visualizzazione e il replay

Alan_Wilder wrote:

Code:

   // grass friction
   v = v - 6.7 / SECOND * sqrt(Abs(v)) * (z < 1);


questo e' l'attrito dell'erba
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Mon Aug 23, 2010 4:10 pm    Post subject: Reply with quote

Ciao massimo, torno a disturbarti.

potresti dirmi (anche in parole povere) come utilizzi l'immagine "keeper_cd.png" per determinare la collisione detection?

i due colori a cosa servono?
a che condizioni la palla Ŕ stata intercettata?

in particolare puoi darmi qualche spiegazione di massima su questa?


Code:

int Player::keeper_collision()
{
   if (Abs(ball->y -y) < 2) {
      
      int frame_x = fmx;
      int frame_y = F2Int(Abs(floor(fmy)));
      if (frame_y >= 16) frame_y -= 16;

      // offset
      int offx = +24 +F2Int(ball->x -x);
      int offy = +34 +F2Int(ball->y -y -ball->z +z);

      // verify if the pixel is inside the frame
      if ((offx < 0) || (offx >= 50)) return 0;
      if ((offy < 0) || (offy >= 50)) return 0;
      
      int det_x = F2Int(50 * (frame_x % 24) + offx);
      int det_y = F2Int(50 * (frame_y % 24) + offy);

      int c_rgb;
      SDL_Color c = GetPixel(keeper_collision_detection, det_x, det_y);
      c_rgb = rgb(c.r, c.g, c.b);
      //std::cout << int(c.r) << " " << int(c.g) << " " << int(c.b) << std::endl;

      switch (c_rgb) {   
         case 0x00C0C0:   // rebound

            ball->v = ball->v/4;
            ball->a = Mod(- ball->a, 360);
            ball->s = -ball->s;
            return 0;
            
         case 0xC00000:   // catch

            ball->v = 0;
            ball->vz = 0;
            return 1;
            
         case 0x0000C0:   //deflect
         {
            // real ball x-y angle (when spinned, it is different from ball.a)
            double ball_axy = ATan2(ball->y - ball->y0, ball->x - ball->x0);
            
            double ball_vx = ball->v * Cos(ball_axy);
            double ball_vy = ball->v * Sin(ball_axy);
            
            ball_vx = Sgn(ball_vx)*(0.5*Abs(ball_vx)+0.25*Abs(ball_vy))+v*Cos(a);
            ball_vy = 0.7*ball_vy;
            
            
            ball->v = hypo(ball_vx, ball_vy);
            ball->a = ATan2(ball_vy, ball_vx);
            ball->vz = 2*vz;
            return 0;
         }
         default: // no collision
            ;
            return 0;
      }
   }
}
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Mon Aug 23, 2010 9:05 pm    Post subject: Reply with quote

Code:

int Player::keeper_collision()
{
   if (Abs(ball->y -y) < 2) {


Nel momento in cui la palla si trova nello stesso piano del portiere...

Code:

      int frame_x = fmx;
      int frame_y = F2Int(Abs(floor(fmy)));
      if (frame_y >= 16) frame_y -= 16;

      // offset
      int offx = +24 +F2Int(ball->x -x);
      int offy = +34 +F2Int(ball->y -y -ball->z +z);

      // verify if the pixel is inside the frame
      if ((offx < 0) || (offx >= 50)) return 0;
      if ((offy < 0) || (offy >= 50)) return 0;
      
      int det_x = F2Int(50 * (frame_x % 24) + offx);
      int det_y = F2Int(50 * (frame_y % 24) + offy);

...calcola la posizione della palla rispetto al portiere...
Code:

      int c_rgb;
      SDL_Color c = GetPixel(keeper_collision_detection, det_x, det_y);
      c_rgb = rgb(c.r, c.g, c.b);
      //std::cout << int(c.r) << " " << int(c.g) << " " << int(c.b) << std::endl;
      switch (c_rgb) {   

... e a seconda del colore del pixel in quel punto...
Code:

         case 0x00C0C0:   // rebound

            ball->v = ball->v/4;
            ball->a = Mod(- ball->a, 360);
            ball->s = -ball->s;
            return 0;
            
         case 0xC00000:   // catch

            ball->v = 0;
            ball->vz = 0;
            return 1;
            
         case 0x0000C0:   //deflect
         {
            // real ball x-y angle (when spinned, it is different from ball.a)
            double ball_axy = ATan2(ball->y - ball->y0, ball->x - ball->x0);
            
            double ball_vx = ball->v * Cos(ball_axy);
            double ball_vy = ball->v * Sin(ball_axy);
            
            ball_vx = Sgn(ball_vx)*(0.5*Abs(ball_vx)+0.25*Abs(ball_vy))+v*Cos(a);
            ball_vy = 0.7*ball_vy;
            
            
            ball->v = hypo(ball_vx, ball_vy);
            ball->a = ATan2(ball_vy, ball_vx);
            ball->vz = 2*vz;
            return 0;
         }
         default: // no collision
            ;
            return 0;
      }
   }
}


...respingi, blocca, o devia la palla.
Back to top
View user's profile Send private message
Alan_Wilder



Joined: 17 Jun 2010
Posts: 11

PostPosted: Tue Aug 24, 2010 11:54 am    Post subject: Reply with quote

Cosa intendi con:

Massimo32 wrote:
Code:

int Player::keeper_collision()
{
   if (Abs(ball->y -y) < 2) {


Nel momento in cui la palla si trova nello stesso piano del portiere...



Mi puoi dire i codici a che colore corrispondono?

Code:

 0x00C0C0

 0xC00000

 0x0000C0


????
Rosso?
Blue?
Back to top
View user's profile Send private message
Massimo32
Site Admin


Joined: 11 Nov 2007
Posts: 177
Location: Bolzano, Italy

PostPosted: Tue Aug 24, 2010 5:39 pm    Post subject: Reply with quote

Alan_Wilder wrote:
Cosa intendi con:

Massimo32 wrote:
Code:

int Player::keeper_collision()
{
   if (Abs(ball->y -y) < 2) {


Nel momento in cui la palla si trova nello stesso piano del portiere...




che palla e portiere hanno circa la stessa y

Alan_Wilder wrote:

Mi puoi dire i codici a che colore corrispondono?

E' semplice, basta inserire i codici in qualunque programma di grafica, o in un RGB calculator su web:

http://www.drpeterjones.com/colorcalc/
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Open World Soccer Forum Index -> Italiano All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Get Open World Soccer at SourceForge.net. Fast, secure and Free Open Source software downloads