sonic :
la structure fraction contient le nominateur et le denominateur
donc en créant dix " instances" de cette structure , on peux dire que tu cree dix fractions
sonic66 >
Bon, alors si tu veux passer une structure dans une fonction, tu peux faire :
void fonction(struct moyenne& m)
si tu veux ![]()
apres, tu manipules les champs qu´il y a dessous avec
moyenne.nomb1
etc...
une structure, ce n´est jamais qu´un paquet qui contient plusieurs variables !
si tu crees une structure avec 2 nombres et que tu l´appelles fraction, alors, avec la ligne :
struct fraction f[10];
tu crées 10 structures " fraction" si tu préféres ![]()
la on est ok ? apres, une fraction c´est quoi ? c´est 2 nombres, 1 en haut, et un en bas, donc la structure fraction est idéale pour ça ! ![]()
Dis moi si tu accroches encore
Rikkuman4 > ce qui te gene, c´est les fonctions a parametre ? le §1.9 ?
C´est peut etre parce que ça parle de puissance.
Bref, imagine maintenant une fonction " ajoute" définie ainsi :
int ajoute(int a,int b)
{
return a+b;
}
voila, encore plus simple !
le role de cette fonction, c´est que tu lui donnes 2 int, et elle t´en renvoie un autre : en effet, on voit qu´en entrée ( dans les parentheses) on lui donne un int qu´on appelle a, et un autre qu´on appelle b. et on voit, en sortie, donc au début, que c´est un " int"
Imagine un pote a toi qui sait calculer, il s´appelle " ajoute" : il te dit :
" donne moi 2 nombre, moi je t´en donne la somme"
donc toi tu lui en donnes 2, lui il t´en rend 1.
Apres, peu importe comment il a fait, l´essentiel est que tu aies la réponse...
en gros si tu définis, dans le main :
int reponse ;
reponse = ajoute(5,8);
alors ça va appeler la fonction ajoute, avec, dans l´ordre, 5 et 8
donc comme on avait :
int ajoute(int a,int b);
l´ordi, dans l´ordre, va donc faire :
int ajoute(int a = 5, int b = 8)
ensuite, il va faire le code de la fonction, a savoir
return a+b; ce qui fait
return 5+8;
or 5+8 = 13, et donc return 13
donc ajoute va te donner 13
or comme tu as mis
reponse = ajoute(5,8);
et que ajoute(5,8) = 13
alors
reponse = 13
mais l´interet est que tu pourras faire :
ajoute(2,4);
ça va appeler la meme fonction, mais avec d´autres parametres, et cette fois, ça te donnera 6.
La fonction puissance du §1.9 est la meme chose : tu lui donnes 2 nombres, et ça te calcule la puissance de ces 2 nombres : peut importe comment ça se démerde, l´essentiel est que ça te donne la réponse
Dis moi si tu seches encore, et sur quoi ? ![]()
ok merci pour cet explication ![]()
je vais voir, mais pourrais tu me dire, à quoi sa pourrais servire dans un programme ![]()
dis moi, à return r; le r quand ont fait main()
r puiss(a,b) c´est le r pour dire return ?
non non
dans puiss, si tu regardes juste puiss, il se cree une variable r. Bref, il fait sa sauce tout seul, tu le laisses faire. Apres, lui, provisoirement, il stocke sa réponse dans r.
mais apres, ce qu´il te retourne, c´est la valeur de r.
Donc un nombre
et dans le main, on y récupere dans le r du main
Dans un premier temps, si tu ne sais pas a quoi ça sert, dis toi juste que ça existe. Tu verras a quoi ça sert quand tu seras confronté a l´evenement.
Tu peux continuer la tuto si tu veux, tu as juste a te dire que ça existe, et le jour ou tu en as besoin, tu reviens dessus avec les idées plus claires ![]()
merci beaucoup ! je ne suis pas prés de lacher ton site ![]()
jejej > une astuce pour toi :
Comme tu vois, pour le moment, la vitesse de tes déplacements se fait en Pixels/Frame
Si tu portes ton jeu sur un autre PC, qui sera + ou - rapide, tu n´auras pas autant de frame par secondes, donc ça ira + ou - vite...
L´idéal donc, c´est de faire des déplacements en pixels/Secondes.
C´est + propre
Pour faire un truc comme ça, c´est simple : utilise :
SDL_GetTicks()
http://sdldoc.csn.ul.ie/sdlgetticks.php
qui te donne le nombre de millisecondes écoulées depuis le dernier boot.
Et greffe ça a ta boucle principale :
uint32 lastchrono=SDL_GetTicks();
while(1)
{
uint32 dt=SDL_GetTicks()-lastchrono;
/ /... le reste
}
A partir de la, dt contient le temps, en millisecondes, passée depuis la derniere frame.
Ensuite, pour faire avancer ton gars de 15 pixels par secondes, il te suffit de faire :
x = 15*dt / 1000;
tout simplement !
bref, c´est une astuce qui peut s´avérer puissante...
Petit oubli : faut remettre a jour lastchrono.
uint32 lastchrono=SDL_GetTicks();
while(1)
{
uint32 dt=SDL_GetTicks()-lastchrono;
lastchrono+=dt;
/ / ... le reste
}
jejej > Tiens, j´ai un cadeau pour toi, tu me demandais comment récupérer tes 0 et tes 1, dans ton fichier, pour faire ton casse brique :
Je t´ai programmé une fonction :
int LireDatas(char* fichier,char* buf)
{
int curs=0;
char tmp;
ifstream F(fichier);
while(!F.eof())
{
F.read(&,1);
if ( tmp>´0´ && tmp<´9´)
buf[curs++]=tmp;
}
F.close();
return curs;
}
usage :
char table[500];
int nombrechiffres = LireDatas("test.txt",table)
( elle ignore les espaces et les sauts de ligne, donc tu peux y structurer comme tu veux dans ton fichier)
Enjoy !
correction :
int LireDatas(char* fichier,char* buf)
{
int curs=0;
char tmp;
ifstream F(fichier);
while(!F.eof())
{
F.read(&,1);
if ( tmp>=´0´ && tmp<=´9´)
buf[curs++]=tmp;
}
F.close();
return curs;
}
Merci beaucoup JYY
Pour le coup du temps , en fait j´avais deja remis ce que tu m´avais dit il y a quelques jours ( pour mon sprite ) je crois que ca marche a peu pres , mais je ne suis pas sur ( ben oui , j´ai qu´un ordi
)
Donc ca serait cool que des personnes avec un ordi puissant ( 3 ghz ) et . .. bon ( 500 mhtz ) essaye mon jeu , si vous voulez bien , pour voir si il n´est ni trop lent ni trop rapide . ..
je l´ai mis ici :
http://www.memory-leak.fr.st
pour l´instant , j´ai encore quelques bugs de collision , et il n´y a pas de score . .. mais c´est deja jouable . ..
Par contre , JYY si tu y joues , tu remarqueras que la balle est " double" , c´est bizarre à explqiuer , mais c´est tres désagréable à regarder . .. par contre je ne vois pas d´où ca peut venir . ..
ton lien est foireux sur ton site, il pointe sur c:\mesdocuments, lol ! ![]()
Bon , ca y est , c´est corrigé
mm je crois
ca marche ?
Tiens, une fonction qui te servira pour tes collisions futures :
tu lui donnes 2 SDL_Rect et ça te renvoie 1 si les rectangles se chevauchent, et 0 sinon
int BoxCollide(SDL_Rect* a,SDL_Rect* b)
{
if ( !(((b->x<a->x) && ( a->x<b->x+b->w)) || ( (b->x<a->x+a->w) && ( a->x+a->w<b->x+b->w))))
return 0;
if ( !(((b->y<a->y) && ( a->y<b->y+b->h)) || ( (b->y<a->y+a->h) && ( a->y+a->h<b->y+b->h))))
return 0;
return 1;
}
marche pas ton lien ![]()
aaarg
j´ai oublie comment faire ![]()
< a href="pong.rar">cliquez ici</a>
ok, je viens de regarder ![]()
pour l´effet de la balle, c´est un effet de persistance, je ne sais pas si on peut enelever ça.
Cependant, j´ajouterais que la, je suis a la boite, que j´ai essayé ton jeu rapidos pendant une micropause, et que, a la boite, étant équipé d´une machine de + de 3Ghz, ta balle va trop vite, et les raquettes aussi !
injouable !
Le coup des secondes serait donc idéal !
ca a marché ? !
omg chez moi ca marche plus oO
bon , bah j´ai du faire une erreur dans la gestion de SDL_GetTicks , je l´avais mise pourtant mais . .. je vais comparer avec ce que tu m´as mis
parceque , chez moi je peux controler les deux raquettes en meme temps , et je m´endort en jouant . ..
Jyy en fait il faut creer un struct fraction puis apres on la " clone" en dix fexemplaire qui sappelerons struct fraction[0] struct fraction[1} ect...
et pour ton tutos sur les fonctions avec les puissances , moi aussi javais rien compris alors g essayer de faire pareil avec une moyenne et g compris^^
mais pour etre sur return c ce quon ve que la foncion " affiche" qd on " l´appelle" ![]()