sonic66: Ce n´est pas parce que on te repond pas que tu doit mettre l´attention sur ta question.
a ok!
je pensait un peu que SDL_Rect Rect(int x,int y,int w,int h)
netait pas une fonction mais plutot quelque chose du genre struct , un truc specifique a la sdl qui servirait a faire un rectangle or du int main ^^
ben merci!
SDL_Event def_mov ( event)
{
Ca marche ?
Le compil me met une erreur avant " {"
syntax error before `{´ token
Salut, cela fait quelque temp que j´essaie de mettre une animation en c++ en screensaver(économiseur d´écran, j´écris ici car je sais qu´il y a beaucoup de spécialiste en c++( car mon topic ne précisait pas c++, le voici pour plus d´info https://www.jeuxvideo.com/forums/1-31-8365644-1-0-1-0-0.htm )
. Je l´ai fait avec SDL, mais quand je le change en mon . exe en . scr et que je clique à droite puis installer, le screensaver ne fonctionne pas, j´ai seulement un fond noir, pourquoi que dois-je faire(pour plus d´info https://www.jeuxvideo.com/forums/1-31-8365644-1-0-1-0-0.htm )
. Voici mon code source http://img11.exs.cx/img11/2457/32sprites3uk.png ( chnager la en bmp)):
SDL_Surface *screen;
class sprite
{
public:
int nombre; / / chiffre à afficher
int vitesse; / / vitesse
int next; / / temps du prochain changement
static int total; / / nombre de chifrre
static SDL_Surface *ima;
SDL_Rect r,d;
sprite(int time); / / constructeur
void actusprite(int &) / / regarde si on doit chager d´étape
{
if(time > next)
{
next= time +vitesse;
nombre++;
if(nombre>10)
nombre=0;
r.x=nombre*32;
}
}
};
int sprite::total=0; / / déclare les membre static de sprite
SDL_Surface *sprite::ima =SDL_CreateRGBSurface(SDL_HWSURFACE, 800, 600, 32, 0, 0, 0, 0);
sprite::sprite(int time=SDL_GetTicks())
{
int temp=0;
nombre=0; / / organise chaque sprite
vitesse=(rand()%2000)+200;
next=time;
r.x=nombre*32; / / surface de départ
r.y=0;
r.w=32;
r.h=32;
d.x = ( total%25)*32; / / surface d´arriver
d.y=(total/25)*32;
d.h=32;
d.w=32;
total++;
}
void initsdl() / / initialise la sdl
{
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER)<0)
{
printf("SDL can´t init %s" , SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
SDL_ShowCursor(0);
screen
=SDL_SetVideoMode(800,600,32,SDL_FULLSCREEN|SDL_HW
SURFACE|SDL_DOUBLEBUF);
if(screen==NULL)
{
printf("Can´t set video mode %s", SDL_GetError());
exit(2);
}
sprite::ima= SDL_LoadBMP("32sprites.bmp");
}
int main(int argc, char* argv[])
{
SDL_Event event;
bool done =true;
initsdl();
int i;
srand(SDL_GetTicks()); / / nombre aléatoire
int time;
sprite chiffre[476];// tout les nombre
while(done==true)
{
time=SDL_GetTicks(); / / réorganise les sprite à la bonne étape
for(i=0;i<476;i++)
{
chiffre[i].actusprite(time);
}
SDL_PollEvent(&); / / attend une touche
if(event.type==SDL_KEYDOWN ) break;
for(i=0;i<476;i++)
{
SDL_BlitSurface(sprite::ima, &[i].r, screen , &[i].d);
}
SDL_Flip(screen);
}
return 0;
}
sonic66 > Rect est une fonction que j´ai faite, regarde dans mon code sourace ou tu l´as trouvé, elle y est implémentée.
nulissimo ->
SDL_Event def_mov ( event)
{
Le problème ici c´est que tu n´as pas typé l´argument event, et donc il doit prendre ça pour un appel de fonction genre ça :
SDL_Event def_mov(event);
Alors que ce que tu veux faire c´est définir une fonction, donc il faut typer l´argument :
SDL_Event def_mov([type] event)
{
}
ah non j´ai rien dit, si tu mets le type de retour devant il sait que c´est une définition...
Bon ben sinon regarde si t´as pas un ; ou un truc qui manque à la ligne d´avant...Pis types ton event ![]()
répondez à mon message plus haut
pouky : est ce que en . exe ton programme marche normallement ?
si non, ça ne marchera pas en . scr.
Si oui, ne clique pas sur installer, mais sur tester pour voir, la il le lance juste normallement.
Si ça marche, cliquer sur installer ne devrait pas le lancer mais juste l´enregistrer comme écran de veille à la place de l´écran de veille ( comme dirait l´autre).
Mon éxécuteur marche mais pas le screensaver même aprè la méthode que tu vien de me donner par contre je n´avait pas réussit à testé le 2e argument si il est / s comme tu m´avait déja dit(mon éxécuteur ne marchait plus), quel test dois-je faire if(argv[2] ! = ! /s!) , if(argv[2] ! = ! /s!) utiliser strcmp ou comment?
strcmp(argv[1],"//s");
ou alors :
if ( argv[1][0]==´//´&&[1][1]==´s´)
Salut, je n´ai pas encore réussit, pourrait-tu tester mon programme et me dire ce que je devrait faire(si tu as le temps et si tu veux). Je l´ai mis sur mon stie le voici: http://pouky10.morgendavivid.dyndns.org/sreensavers.rar
Winrar va te dire qu´il y a des fichier corompue mes c´est correcte.
Bonjour à tous , j´ai un problème avec les maths :
j´ai arrete ( momentanement ) la programmation de jeu , pour programmer exclusivement du graphisme ( une demo graphique 2d hum . .. )
Bon , j´ai réussi à faire un cercle à l´ecran
( rigolez , mais c´est pas si facile . .. ) mais , sans utilisez cosinus ou sinus , parceque je n´y arrive pas .
Pour le cercle , j´ai fait autrement , mais là je voudrais dessiner une sinusoide .
voici mon code :
void DSinusoide( SDL_Surface *screen , Couleur coul)
{
Slock(screen);
int x;
for(x=0; x < = 1024 ; x++ )
{
DPoint( screen , x , sin(x)*3.14/180+384 , coul.R , coul.G , coul.B ) ;
}
Sulock(screen);
}
Ce code n´affiche en fait qu´une ligne plus ou moins droite en fait .
J´ai change le sin(x)*3.14/180+384 en 100*sin(x)*3.14/180+384 , pour augmenter la taille de la sinusoide , mais ca ne fait qu´agrandir la distance entre les points . ..
Quelqu´un sait comment dessiner ce que je voudrais ? merci beaucoup
( je crois que le probleme vient d´un melange radiant-degres , pas sur . .. )
t aussi esce que
Rect(0,0,f->w,f->h);
est comme
r.x=......
r.y=.......................
ect......
La programmation de primitive graphique est assez ardue dès que l´on veut donner de l´épaisseur à ses traits et/ou mettre en place un anti-aliasing.
Donc si programmer ces primitives n´est pas un but en soi, tu peut regarder du coté de http://www.libsdl.org/ pour des bibliothèques basées sur SDL et sur http://www.antigrain.com/ pour l´excellente bibliothèque AGG.
blawk : je n´ai pas compris , tu me répondais ?
en fait , ce que je voudrais , c´est l´équation pour dessiner une sinusoide potable , parceque , un sinus etant compris entre -1 et 1 , sur un ecran de 768 pixels de hauteur , la différence n´est pas flagrante . ..
mais , si je mets sin(x)*50 , la courbe est plus grande , mais ce n´est pas une courbe , mais un ensemble de points repartis un peu n´importe comment . ..
depuis deux heures que je suis dessus mais bizarement l´image ne bouge pas!
a l´aide! ![]()
http://rafb.net/paste/results/e1bGpr24.html
ya quelqun?
![]()
vous tes la?
Oué je suis la...