Je ne comprends pas j´ai poutant bien fait voici le code du main.cpp:
-------------------------------------------------
short i=0;
FunnyDuck *Game;
/ /Création des Sprites
Sprite *Skull[10];
SDL_Surface *surface, *Skullhead;
ofstream Error2;
//------------------------------------------------
-----------------
/ / FunnyDuck Main
//------------------------------------------------
-----------------
void GameInitialize()
{
Game=new FunnyDuck(SDL_HWSURFACE | SDL_DOUBLEBUF, surface, " Moteur FunnyDuck par pandamark", 640, 480);
Game->SetFrameDelay(1);
srand(time(NULL));
}
void GameStart()
{
int c;
//Chargement des Sprites
for(c=0;c<10;c++)
{
Skullhead=SDL_LoadBMP("SKULL.bmp");
Skull[c]=new Sprite(Skullhead, rand()%600+20, rand()%440+20);
}
}
void GameEnd()
{
}
void GameActivate()
{
}
void GameDeactivate()
{
}
void GamePaint()
{
int s=0;
for(s=0;s<10;s++)
{
Skull[i]->Draw(surface);
}
FlipScreen(surface);
i++;
if(i==10)i=0;
}
void GameCycle()
{
Skull[i]->SetPos(rand()%600+20, rand()%440+20);
}
bool StopLoop()
{
return false;
}
FunnyDuck *GetEngine()
{
return Game;
}
--------------------------------------------------
ta classe FunnyDuck passe le pointeur screen en parametre
cependant, le pointeur qui est récupéré dans le constructeur est, bien entendu, une copie du pointeur.
dans ton constructeur, que tu as du prototyper comme ça :
FunnyDuck(....,SDL_Surface* screen,...)
c´est la copie de screen qui est modifiée quand tu crées ta surface, pas celui du main.
Si tu ne veux pas t´embeter, passe ton pointeur par référence, et tu verras que ça ira nettement mieux
1 caractere a rajouter :
FunnyDuck(....,SDL_Surface*& screen,...)
dis moi si ça marche.
Ouais , JYY , mais il m´a fallu modifier un peu toute ta fonction en fait ![]()
la , ca marche a peu pres , c marrant parceque ca bug un peu ( bon , c marrant a voir , parceque je sens qu´a corriger ca va etre relou ) , mais ca marche
pour le logiciel , j´utilise irfan view pour avoir la couleur de mes pixels . .. d´ailleurs , le bleu que tu utilisais , c´etait du ( 3,3,255) ![]()
arf
de toute façon, je ne controlais que le bleu, lol
donc 3 en rouge et en vert étaient ignorés, hihi ![]()
mais bon, apres, si tu fais un controle rigide, je me serais fait avoir ! ! ![]()
car si j´avais dit " pure bleu", il m´aurait dit " non", et pan ! ![]()
Bon , bah maintenant , c´est parti pour la partie " lourde " : choisir les tiles sets ( j´en ai trouve plein ) , definir pour chacun une " couleur " d´affichage " , et . .. dessiner la carte
Ah , petit problème la : pas de scénario ? arg ^^
Bon , alors ca va etre l´histoire d´un gars qui arrive en bateau dans un monde inconnu , et plus ou moins bien civilisé , et qui va sauver le monde des griffes de l´infame X et de sa horde de démons alors . .. avec deux-trois princesses , des trésors , un roi traitre et du sang partout . .. ouais , ca devrait aller
bof , de toute facon , je commence par le systeme de carte , puis je ferais la classe perso , objet et en dernier lieu les mosntres puis les quetes . ..
salut,
J´ai un gros probleme avec les tiles,impossible de comprendre,mon but est de générer un scrolling.
Donc mon niveau sera constitué de 200-300 titles pour les decors lu à travers un tableau :
unsigned char map[50][20]={0,0,1,1,0,0,...,};
donc mon niveau s´affiche bien a l´aide de boucle for imbriquées.
Mais comment procéder pour un scrolling?
Si mon perso avance il faudrait que le decor bouge.
regarde mon tuto " scrolling a la souris" dans mon tuto pour savoir comment ça se gere ![]()
Est ce que qqn connait une méthode pour pouvoir charger avec la SDL des images qu´on aurait mis dans un fichier de ressource ?
parce qu´avec windows, on ne peut récupérer qu´un handle sur l´image alors que la SDL attend un chemin de fichier.
Bien sur on pourrait recopier " à la main" ( c´est a dire pixel par pixel) d´une surface bitmap type windows vers une SDL_Rect, mais c´est pas très propre.
donc si quelqu´un sait, ça serait inteessant, pour pouvoir éviter d´avoir à déployer plein de ficher images avec son application.
a mon avis, il n´y a pas cette fonction
par contre, tu peux créer en effet manuellement une surface avec SDLcreateRGBSurface, puis t´y colles les pixels un a un.
Si tu fais cette fonction ça peut m´intéresser ! ![]()
dnob700 > T´as jeté un oeil dans la catégorie " librairies" du site officiel ?
Il y a peut être ce que tu cherches...
I N C R O Y A B L E
le compilo qui plante
G t a faire un truc trop chaud , et boum , le programme ne repond pas
Alors , petit conseil a tous ceux qui utilisent Dev-cpp : ne surchargez pas les noms de fonctions , en effet dev cpp affiche une petite fenetre " d´aide hum " qui nous donne le prototype de la fonction qu´on est en train d´appeller . .. et si deux fonctions portent le meme nom . .. bah . .. il sait pas quel prototype afficher . .. et il plante ![]()
euh bizarre !
des fois les compilateurs plantent ( tres rare) quand tu as fait un truc tres tordu
essaie un exemple simple la dessus, et tu me diras si ça plante toujours !
Jejej : la surcharge etant un truc de base, a mon avis tu t´es manque qqpart... ou alors devc++ est VRAIMENT mauvais :D
cela c´est possible de faire planter son compilo ( vive les " internal compiler error" sous VC par ex.) Cela arrive lorsqu´on atteint une des limitations du parser, comme le nombre de if imbriques, la longueur des identifiants, etc.
Nan Nan LGV , je crois pas
en fait , on va dire que j´avais
void Affiche(int x ) ;
et
void Affiche(int x , int y);
ben , dans mon main , je commence a ecrire
Affiche . .. la il m´ouvre une petite fenetre avec le prototype de la fonction Affiche , mais il commence a hesiter entre les deux . .. plaf
je reesayerais si vous voulez , j´espere que c´est juste de la malchance
parceque , c´est pas la premiere fois que je surcharge , mais je plante rarement dev-cpp . ..
Boah , j´ai perdu que 10 minutes ![]()
Et , en fait , j´ai recommence le projet donc . ..
peut etre que les fonctions etaient trop longues
void Affiche ( SDL_Surface *image , SDL_Surface *fond , int x , int y , int x2 , int y2 , int w , int h ) . ..
non, faut mettre le paquet pour qu´une fonction soit longue, j´en ai déja vu a 24 parametres : ça ne ralait pas
( enfin juste le mec qui l´appelait ralait, hihi
)
aaaah, le " intellisense" version devc++... moui, ca arrive sur VC++ aussi, si le rebuild date d´un certain temps. Mais ca n´est qu´une partie minime du parser de l´IDE, rien de bien alarmant donc
le compilo, lui, s´y retrouve. c´est l´essentiel.
par contre comme je disais plus haut, on peut faire du code conceptuellement et syntaxiquement correct mais qui ne compile pas, pour cause de limitations internes du compilos.
Bon , tes fonctions Map et Pixel , JYY , je sais pas si c´est toi qui les a faites , mais faut avoir l´esprit tordu
La , je crois que je commence a comprendre le fonctionnement global , mais , ensuite , pour ce qui est du modulo et tout . .. je sais pas pourquoi ca marche
La , j´ai ( enfin ) reussi a afficher à peu pres ce que je voulais . ..
bon , on va dire que je n´ai plus de fatal error : segment fault . ..
Parcequ´en fait , j´ai trouve plusieurs tilesets ( 11
) qui contiennent chacun 64 tiles . .. Donc , je dois spécifier une couleur pour chacun d´eux ( et trouver la couleur dans paint en plus ) et reussir a les afficher ![]()
" tes fonctions Map et Pixel , JYY , je sais pas si c´est toi qui les a faites"
--> Yes
" mais faut avoir l´esprit tordu"
--> Merci
j´en suis tres fier
" je sais pas pourquoi ca marche"
--> c´est mathématique.
" Donc , je dois spécifier une couleur pour chacun d´eux "
-->
mais tu peux t´organiser de façon a y automatiser ! enfin ![]()
Ben . .. a vrai dire , je me sens encore vraiment faiblard avec l´optimisation , la separation du projet , tout ca
donc , pour l´instant , je code tout en dur , dans le meme fichier texte
Par contre , j´ai un petit probleme :
avec le switch , je l´ai jamais bien utilisé , mais la je vois pas où est l´erreur :
j´ai modifie un peu ta fonction pixel , elle retourne tout le tableau P
ensuite , je compare P[0] avec 0 , P[1] avec 255 etc dans un if() , si c juste j´affiche tel bitmap
ca , je l´ai essaye sur ton code , ca marchait ( j´ai mis deux heures , y a interet )
Par contre , c´etait pour tester 3 valeurs , ca allait
mais la , vu que je pense avoir au moins 50 valeurs differents , j´ai voulu faire un switch :
int ChoixTiles( Uint8 *P[] , int *Pnumcarreau)
{
switch ( P[0] )
{
case 0:
{
switch ( P[1] )
{
case 255:
{
switch( P[2])
{
case 255:
{
Pnumcarreau = 1;
break;
}
}
}
}
}
mais il me dit :
switch quantity not an integer
pour chaque switch . .. ?