c quoa CC++?
merci
Toi tu vas aller voir sur google hein ?
oulaaa, alors j´ai essayé de comprendre tout ce que vous avez dit et la je vois que je suis un peu à la rue...
En fait j´ai compris les 3/4 de la conversation ( pas la fin, un peu hard
) mais un mot ne m´a pas aidé a la compréhension: tile
D´après ce que g compris, vous appellez " tiles" des représentations par du texte, des images ou juste certains endroits d´elles.
en gros sa revient à remplacer les différents éléments d´un tableau par différentes images et ainsi créer le fond du jeu.
C´est aussi le pocédé que je souhaite utiliser ( dsl JYY ^^) comme ca on peut faire des éditeurs de niveaux très simple et suivre une logique incontestable quand on mappe ^^
pour eklair: le C++ est un langage de programmation, en gros du tapes des lignes de textes spécifiques à chaque langage, tu utilises un logiciel dessus et le logiciel transforme tes lignes de texte en programme.
PS: Les gars préparez vous je vais vous sortir les pires questions que vous vous êtes jamais posés!!
![]()
Entre midi et 2 j´ai codé un petit editeur de map pour mon programme.
http://membres.lycos.fr/vengeurstock/MapEdit.zip
J´ai des problèmes d´upload snif...
En gros, vous creez votre map ( très simple : vous choisissez un tile avec D et G , vous bougez le curseur blanc avec les touches directionnelles sur la carte et appuyez sur espace pour le poser) puis vous appuyez sur S.
Ensuite, quittez le programme et regardez le fichier map.txt qu´il a créé. Selectionnez tout, copiez le tableau a la place de l´ancien de mon programme et...(vous connaissez le résultat).
Bref, tout pour commencer un petit rpg sympa en C ; )
merci bcp angeur41, mais esque tu pourait mez filer le sdl_ttf, il me semble que je l´ai mais j´arrive pâs a l´installer et donc j´ai pas pu tester ton jeu
merci(a propos j´ai 16 ans et je trouve très bien que dans ce type de forum on trouve des gars comme toi et pas que des " pro" qui traite tout le omde ne newbie.
http://membres.lycos.fr/vengeurstock/SDL_ttf.zip
96ko
Contient SDL_TTF.h libSDL_TTF.a et SDL_TTF.dll
merci beaucoup vengeur41!
en effet j´avais pas les bon fichiers
bon je v de ce pas tester ce jeu et cet éditeur!
sinon pour en revenir a mon projet initial, je suis en train de suivre les tuto de JYY et je comprend tout donc merci a lui et je pense revenir bientot avec quelques questions
Bon ba voila comme promis j´ai plein de questions, je viens de finir les tuto de JYY sur le SDL et maintenant j´essaye de faire le début de mon RPG.
J´affiche une image qui bouge de gauche à droite
avec le code suivant: ( c´est le tuto de JYY d´image qui bouge)
--------------------------------------------------
SDL_Surface* screen;
SDL_Surface* screen1;
SDL_Surface* screen2;
SDL_Surface* screen3;
SDL_Surface* screen4;
SDL_Event event;
void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}
SDL_Rect Rect(int x,int y,int w,int h)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}
SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}
int main(int argc , char **argv)
{
int s=1;
int x=0;
SDL_Rect rect1;
init_SDL();
rect1.x = 0;
rect1.y = 128;
rect1.w = 1024;
rect1.h = 768;
screen1 = SDL_LoadBMP("sprites2/Image1.bmp");
screen2 = SDL_LoadBMP("sprites2/image2.bmp");
screen3 = SDL_LoadBMP("sprites2/image3.bmp");
screen4 = SDL_LoadBMP("sprites2/image4.bmp");
while(1)
{
x+=3*s;
rect1.x=x;
if ( x<0) s=1;
if ( x>400) s=-1; SDL_BlitSurface(screen1,NULL,screen,&1);
SDL_Flip(screen);
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}
--------------------------------------------------
Questions
1/Je voudrais que l´image affichée change lors de son mouvement, qu´au lieu d´afficher screen1, on affiche screen2 lorsque x<=100, puis screen3, screen4..ect et tout ca doit dépendre de x.
( J´ai essayé avec une série while puis de if, sans succès)
2/Est-il vraiment utile de quitter le sdl, à partir du moment ou on quitte le programme?
3/La fonction SDL_ShowCursor() sert à montrer ou a cacher la souris, mais dans les deux cas, je ne la voit pas, pourquoi?
j´ai mis une accolade en trop vers la fin, mais ce n´est pas lié a mon probleme
nan en fait j´ai rien mis en trop lol
1/
cree un tableau plutot que 4 variables différentes screen1,screen2,screen3,screen4
-->
SDL_Surface* surf[4];
puis ensuite, pour charger :
surf[0] = SDL_LoadBMP("sprites2/Image1.bmp");
surf[1] = SDL_LoadBMP("sprites2/image2.bmp");
surf[2] = SDL_LoadBMP("sprites2/image3.bmp");
surf[3] = SDL_LoadBMP("sprites2/image4.bmp");
peut etre optimisé, mais bon...
et ensuite, tu veux qu´en fonction de x, l´indice change ?
SDL_BlitSurface(surf[(x/100)%4), NULL,screen,&1);
voila ![]()
comme tu vois, ça divise x par 100, donc ça te sert, tous les 100, un nombre différent ( 0,1,2,3,4,5,6,7,....)
mais comme au dela de 3 ça n´existe plus, je fais %4.
l´avantage de modulo dans ce cas, ça sert a boucler : un nombre %4 variera entre 0 et 3 : exactement ce qu´on veut ! !
donc ça fera, tous les 100 :
( 0,1,2,3,0,1,2,3,0,1,....)
correct non ?
2/ non : car le systeme, de toute façon, sait désallouer le programme quand il quitte ( sécurité de Windows XP ( attention a win98 par contre))
oui : car si tu désalloue pas, ça fait programmeur crado, pas bien ! !
3/ SDL_ShowCursor marche comme un blit de souris ( et oui, la souris n´est rien d´autre qu´une SDL_Surface, si j´ose dire ! )
donc met le juste avant le flip.
moi je cherche quelqu´un qui saurait faire un truc de ce genre ,
http://www.3d-rpgbuilder.com
bah ouais, c´est du du type rpg maker mais en 3d ( plus ou moins) mais ce log est plus diriger vers du rpg de type everquest, ou ultima online, il me faudrait plus un moteur de type FF. donc avis au c++´iens. merci
PS ca afit un an que je cherche un programmeur.
Merci beaucoup pour toutes ces réponses JYY!!
Et surtout pour ces explications claires et précises, j´aurais jamais pensé a faire un truc pareil pour la 1/, mais c´est vrai que c´est pas bete du tout ^^
par contre comme tu le dis dans un de tes tuto, t´aime pas trop taper, et ca doit être la raison de tes nombreuses fautes d´inatention ^^, naaaan de pas grave^^
SDL_BlitSurface(surf[(x/100)%4), NULL,screen,&1);
c´est pas tout à fait ca, c´est plutot:
SDL_BlitSurface(surf[(x/100)%4], NULL,screen,&1);
Hé oui, une parenthèse, ou un crochet peut faire toute la différence ^^ ( Mais peut être que ca faisait partie intégrante de ton explication, si j´avais pas compris l´idée ca marcherai toujours pas.. ^^)
autant pour moi, petite faute d´accolade en effet ![]()
mais bon, l´essentiel est que l´idée soit passée ![]()
Le SDL_ShowCursor n´est pas a mettre à chaque boucle, c´est au début.
Par contre si dans l´initialisation de Screen, tu as mis SDL_DOUBLEBUF + SDL_FULLSCREEN, ca marchera pas.
En tt cas, pour le reste des cas ca marche.
Peut-etre que le ShowCursor dans ces cas là se met dans la boucle ?
Je ne crois pas, il me semble qu´il se met en début et éventuellement en fin de programme ^^
Bon ba une autre question pour vous les gars:
La méthode de JYY, marche parfaitement, mais si je veux changer les temps entre certaines, ou toutes les images, je fais comment?
Il faut appliquer le même style de méthode mais en l´adaptant, ou faut il en trouver un autre?
Donc si j´ai bien compris avec la méthode de JYY, si j´ai 5 images, j´ai %5 au lieu de %4 dans la ligne:
SDL_BlitSurface(surf[(x/100)%4), NULL,screen,&1);
oui, avec la méthode modulo, si tu fais module N, tu boucles entre 0 et N-1
ok pour ca, mais si je veux changer le temps entre les images, comment je fait ( je veux qu´il ne soit pas régulier par exemple)
Si quelqun pouvait m´expliquer aussi comment utiliser les touches du clavier dans mon code, je vois absolument pas comment faire, j´ai regardé la source de vangeur, mais je comprend pas grand chose
bon aller je balance ma liste de questions:
1/Comment fait on varier la vittesse entre plusieurs images(une animation) qui est en même temps en mouvement?
2/Comment fait on passer du temps dans notre programme?? Faut-il simplement icrémenter une variable dans une boucle et mettre un if pour reprendre le programme?
3/Comment utiliser les différentes touches du clavier?
Merci d´avance!
Sinon, je vous propose tout simplement ( pour la question 3/ ) , de commenter et d´expliquer le programme de Vangeur41