C´est a usjuet des lsites chaînées . .. J´a ibien corpis coment elles fonctionnaient, masi pas comment les utiliser . ..
Devrais-je faire une classe? Avec une méthode lire la liste chaînée, rajouter, supprimer . .. ?
Merci d´avance...
http://prog-world.forumactif.com/index.forum
désolé, retour de week end, pas eu le temps de tout lire : réitérez vos questions si je n´y réponds pas.
Tav > Il en existe déja en standard et intégré, jette un oeil sur mon tuto, chapitre D.
sonic66 > jette un oeil sur les structures SDL pour comprendre :
http://sdldoc.csn.ul.ie/sdlevent.php
A l´occas, je ferai un tuto sur les events.
jul38 > Quel genre de collisions veux tu faire ? Explique davantage.
Pub jeuxvideo!!!
www.mekacom.forumactif.com
Venez parlez de jeuxvideo et de créations de jeuxvidéo!!!
HELP PLEASE!
Je déclare
[code]
vector<fiche>carnet(taille);
[/code]
Mais je veux créer une fonction pour afficher. Donc je passe par référence ( dites moi si il ya plus simple) l´objet ´carnet´, qui est un tableau dynamique de type fiche ( fiche est une structure). Mais c´est de quel type? La définition et la déclaration de ma fonction devront être écrites comment?
J´ai bien tenté
[code]
void carnet_afficher(fiche &, int i);
[/code]
Pour ensuite n´avoir qu´a marquer en défintion qqchose du style
[code]
void carnet_afficher(fiche &, int i)
{
cout<<"Nom: " <<carnet[i].nom<<endl;
cout<<"Prenom: " <<carnet[i].prenom<<endl;
cout<<"Addresse email: " <<carnet[i].email<<endl;
cout<<"Anniversaire: " <<carnet[i].anniversaire<<endl;
}
[/code]
Le i, c´est dans une boucle for en fait:
[code]
for(int i=0;i<=taille;i++)
{
carnet_afficher(carnet,i);
}
[/code]
Je sais donc pas comment déclarer ma fonction ´carnet_afficher´... Merci d´avance.
PS: j´ai oublie de preciser que ´taille´ etait un entier définit.
void carnet_afficher(fiche &, int i)
--> faux. Ici, ce que tu passes, c´est une seule fiche, pas un carnet
donc forcément si tu fais :
carnet[i] --> ça va planter.
Essaie plutot de passer tout le carnet correctement ainsi :
void carnet_afficher(vector<fiche>& carnet)
JYY : sur le topic " projet rpg maker vs projet c++ simpliste " tu disais qu´avec la systeme que tu as mis en place sur ton tuto scrolling a la souris , on pouvait " tres facilement et tres rapidement detecter les colisions "
mais . . . j´ai chercher , je ne vois pas comment . . .
quoiqu´il en soit , j´ai quand meme reussi a faire ca :
http://www.memory-leak.fr.st
le deuxieme lien ( le premier c pong )
/ / vous remarquerez les effets d´eau quasi photos realistes au sud de la carte
/ / ainsi que la possibilite de marcher au dessus de l´eau hum . ..
si quelqu´un veut me dire ce qu´il en pense . . . a noter que j´ai abandonne le scrollign a la souris , parceque j´aurais du mettre un A* pour faire avancer mon perso
ca viendra
je l´avais poste ce week end , mais il est parti quelques pages plus loin ![]()
Donc , voila , j´aurias voulu savoir comment tu gerais les collisions avec la technique de " map dans un bmp " , parceque moi je vois pas trop comment faire
en fait , j´ai un peu modifie ta technique , et chaque couleur correspond a un tile precis , donc je ne peut pas faire " si pixel plein , on bloque le joueur " , parceque tous les pixels sont comptes
en fait , c une technique chacale , made in jejej , je recupere la couleur RGB dans un tableau P , et P[0] correspond a l´absicce du tile , P[1] à l´ordonnee , et P[2] au numero du tileset dans lequel le tile a afficher ce trouve
au besoin , je pourrais paster mon code
Bon , cette technique à l´avantage de réaliser de grandes maps , variees , en un minimum de temps a dessiner , et un minimum de ligne de code , l´inconvenient est que la map parait toute noire , et est inmodifiable . ..
JY²-->merci de ton aide, alors je post mon code, car j´ai aussi un autre problème...
Je peux aller jusqu´a la demande de nom, pis la, windows m´affiche un mess d´erreur! Merci de m´aider
void ajouter(FILE *fichier, char *namefile,FILE *fichier2, char *namefile2, int &)
{
fichier2=fopen(namefile2,"rb");
if(!fichier2)
{
taille=0;
}
else
{
fread(&,sizeof(int),1,fichier2);
fclose(fichier2);
}
taille++;
fichier2=fopen(namefile,"wb");
fwrite(&,sizeof(int),1,fichier2);
fclose(fichier2);
vector<fiche>carnet(taille);
fichier=fopen(namefile,"rb");
if(fichier)
{
fread(&,sizeof(carnet),1,fichier);
fclose(fichier);
}
cout<<"N´entrez pas d´espaces: " <<endl;
cout<<"Entrez le nom: " <<flush;
cin>>carnet[taille].nom;
cout<<endl<<"Entrez le prenom: " <<flush;
cin>>carnet[taille].prenom;
cout<<endl<<"Entrez l´addresse email: " <<flush;
cin>>carnet[taille].email;
cout<<endl<<"Entrez la date de naissance: " <<flush;
cin>>carnet[taille].anniversaire;
fclose(fichier);
fichier=fopen(namefile,"wb");
fwrite(&,sizeof(carnet),1,fichier);
fclose(fichier);
system("PAUSE>nul");
}
Mon problème pourrait-il venir du fait que mon tableau<-->vector carnet ne soit pas initialise a zero? Je comprends pâs trop trop bien ce qui pourrait faire buguer le programme . ..
PS: après je tenterai de faire le programme avec des listes chaînées... Mais cette fois-ci j´aimerai utiliser istream et ostream ( si c´est bin ca
l´equivalent de fclose, fopen, fread, fwrite . .. du C. Donc si vous avez de la doc, sinan j´irai en chercher moi-meme!
Merci!
jejej > je te la ferai a l´occas cette fonction de collision.
Le principe est de définir ou est le point supérieur gauche de ton sprite sur la mini carte, ainsi que le point inferieur droit
ce qui forme sur ta mini carte un minirectangle de max 2*2 pixels
tu testes donc si les pixels de ce minirectangle touchent des pixels de mur, et c´est fini
Tav > pourquoi passes tu des FILE* en parametre ?
Les utilises tu en retour de ta fonction ?
si oui c´est normal que ça plante : c´est les variables fichier et fichier2 locales a ta fonction qui seront modifiées, en aucun cas celles de la fonction appelante.
Essaie de débugger pour bien voir d´ou ça peut venir ( met des break point et execute) tu verras, c´est bien pratique ![]()
Merci de ta réponse , mais . .. je crois que j´ai pas tout bien saisi
En fait , j´ai encore des problemes avec les coordonees :
parceque , pour l´instant , j´affiche le monde au coordonnees Xoffset et Yoffset du level en BMP , alors que j´affiche mon perso au coordonnee ( 240 , 280 ) de mon ecran , de sorte qu´il est toujours au centre de l´ecran , mais il n´a pas de rapport avec le level en fait
le monde est dessine en fonction des coordonnes sur la mini carte
alors que le perso est dessine en fonction de ces coordonnees ( constantes ) sur l´affichage ( screen dans tes tutos )
donc , faudra que je fasse differemment ?
JY². Merci, mais sa changerai rien, vu que c´est le fichier qui est modifie, pas son nom...
Je le sais car c´est la seconde fois que je fais ce programme, l´autre fois j´ecrivasi directement sur le fichier, j´utilisais pas un tableau avec vector . ..
re salut,
alors pour mon systeme de collision, je voudrais procéder comme ceci :
map[4][100]
={O,O,O,O,O,O......,
O,O,O,O,O,O......,
O,O,O,O,1,O......,
1,1,1,1,1,1......};
voila ça c´est mon decor,le 1 représente le sol,
si mon perso rencontre le " 1" le decor ne bouge plus,si il rencontre le " 0",le decor bouge.
Le systeme de collisons ressemblerais a cela.
Voila le bot de code :
http://rafb.net/paste/results/2wGzg783.html
Jyy , ton lien ne marche pas
tu pourrait me le remettre sil te plai?
Salut je voulait de l´information sur l´allocation dynamique, je n´ai pas eu de réponse car ce topic va trop vite, donc je le remets ici:
Moi je fais un casse brique et j´aimerais faire une liste chainé(je crois que c´est cela), car quand une brique disparait, je voudrais quel pour vrai(pour l´instant, je la mais à x=0 et y=0 et w=0 et h=0).
Dans un livre, j´ai vu qu´on un peu peux ce faire avec la création dinamyque. Quand on fait par exemple:
SDL_Rect brique * pbrique;
pbrique = new SDL_Rect;
Es-ce que je peux refaire un 2e objet à un autre endroit dans le programme en refesant new SDL_Rect? Et si oui, comment en faire plusieur d´un coup, es-ce que je peux accèder au 2 menbre en fesant ( pbrique+1)->x ( car peut-etre d´autre variable seront créé à ( pbrique+1)? et la dernièr question(si tout cela marche) es-ce que si je supprime le 2e élément, es-ce que le 3e devient le 2e
sonic66 > quel lien ?
pouky10 >
SDL_Rect brique * pbrique[10]; / / 10 d´un coup
for(i=0;i<10;i++)
pbrique[i]=new SDL_Rect;
( pbrique+1)->x < -- NON.
prbique[n]->x < -- OUI
" es-ce que si je supprime le 2e élément, es-ce que le 3e devient le 2e"
--> Non.
sonic66 > jette un oeil sur les structures SDL pour comprendre :
http://sdldoc.csn.ul.ie/sdlevent.php
A l´occas, je ferai un tuto sur les events.
celui la ![]()
je ne sais pas si tu as compris le systeme de collisions que je voudrais faire,mais je trouce ça assez dire.
J´essai de tester de ce genre ;
if ( tableau [i+variable_scrolling][j+variable_scrolling]>0)
variable_scrolling--;
Mais est-ce que cette méthode permet de rajouter des élément quand on veut et d´en supprimer?Ou sinon, il y-en-a-t-il une? Parce que je voudrais supprimer mes brique en mémoire quand elle sont détruite et de tout les recréer au prochain level.
pas super pratique
mais bon, faut essayer pour voir si ça marche !
a l´occas j´implémente celui dont je te parle ![]()
si tu veux des structures comme ça, utilise list : regarde dans mon tuto le chapitre D