Galaxy war (programe c utilisant la lib. sdl)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 808 fois - Téléchargée 30 fois

Contenu du snippet

un petit jeux qui est pas genial mais qui marche !!
ENJOY
/* il faudra pour le compiler, avoir la lib SDL www.libsdl.org */

Source / Exemple :


/* creer par z18963@hotmail.com  z189632@hotmail.com VIVA 3ARABIA ou yadkom f zabi al g'wer !
ENJOY !! 
(Shell bash : a remplacer clear => cls , sleep => pause ... ettout!!) 

  • /
#include <SDL.h> #include <SDL_error.h> #include <SDL_video.h> #include <SDL_events.h> #include <SDL_mutex.h> #include <time.h> #include <stdlib.h> #define N 15 // nombre de kortass f tania #define VITESS 7 // vitess dial sarokh #define BOND 0.25 // le to dial rebondissement #define VKortass 30 // vitess dial kortass #define CIBLE 50.00 // nisbat tenyash #define SCOREVIE 400 #define LEVELDIF 5 #define MAX 50 int VChirir=LEVELDIF; // vitess dial chirir int VNjoum=40; int M=LEVELDIF; // nombre de chirir f tania int SCORE = 0,VIE=3,STAGE=1; SDL_Surface *Screen, *chirir, *kortass, *sarokh, *bg, *bar, *num, *njoum; SDL_Rect CHIRIR[MAX], KORTASS[N], NJOUM[MAX],SAROKH, BG, BAR; SDL_Event Event; int dirX,dirY; SDL_Rect AFFSCORE={698,633,14,18}; SDL_Rect AFFVIE={698,615,14,18}; SDL_Rect Points={0,0,14,18}; int AL3adad(int x,SDL_Rect hna){ int wahadat,asharat,miat; SDL_Rect numA,numB,numC; wahadat=x%10; asharat=x%100; asharat=((int)asharat/10); miat=x%1000; miat=((int)miat/100); numA=numB=numC=Points; numA.x=14*miat; numB.x=14*asharat; numC.x=14*wahadat; //fprintf(stderr,"x: %d ,y: %d ,h: %d,w: %d\n",numA.x,numA.y,numA.h,numA.w); //fprintf(stderr,"10: %d ,100: %d ,1: %d\n",asharat,miat,wahadat); SDL_BlitSurface(num, &numA, Screen, &hna); hna.x+=14; SDL_BlitSurface(num, &numB, Screen, &hna); hna.x+=14; SDL_BlitSurface(num, &numC, Screen, &hna); return 1; } int boclStag(){ //bg = SDL_LoadBMP("src/bg2.bmp"); while(1) { SDL_FillRect(Screen, 0, 0); SDL_BlitSurface(bg, 0, Screen, &BG); SDL_Flip(Screen); while(SDL_PollEvent(&Event)) { switch(Event.type) { case SDL_QUIT : fin(); case SDL_KEYDOWN : switch(Event.key.keysym.sym) { case SDLK_SPACE : return 0; break; } } } } return 1; } int aff(){ //system("clear"); //fprintf(stderr, "\n\n\n\n\n\t\t\tLE SCORE: %d \tVIE: %d\tLEVEL: %d",SCORE,VIE,STAGE); return 1; } int init(){ int i; //fprintf(stderr, "*\t initialization\n"); //system("clear"); srand(time(NULL)); for(i=0;i<M;i++){ CHIRIR[i].x = hasard(775); CHIRIR[i].y = hasard(100); NJOUM[i].x = hasard(800); NJOUM[i].y = hasard(600); } for(i=0;i<N;i++){ KORTASS[i].x = 810; } SAROKH.x=400; SAROKH.y=549; return 1; } int ZidStage(){ boclStag(); //fprintf(stderr, "*\t ZAD stage\n"); STAGE++; SCORE=0; VIE++; VChirir+=LEVELDIF; VNjoum+=LEVELDIF; M=(M++<MAX)?M+LEVELDIF:M; //fprintf(stderr, "STAGE: %d VChirir: %d M: %d\n",STAGE,VChirir,M); //bg = SDL_LoadBMP("src/bg2.bmp"); init(); Display(); return 1; } int fin(){ system("clear"); fprintf(stderr, "\n\n\n\n\n\t\tGAME OVER\n\t\t\tZ GALAXY WAR BY z@bocal.cs.univ-paris8.fr\n\n\n\t\tSCORE FINALE: %d LEVEL: %d\n\n\n\n",SCORE,STAGE); exit(1); } int MemRect(SDL_Rect A, SDL_Rect B){ int x1,x2,y1,y2; x1=(int) (A.x/CIBLE)-CIBLE; x2=(int) (B.x/CIBLE)-CIBLE; y1=(int) (A.y/CIBLE)-CIBLE; y2=(int) (B.y/CIBLE)-CIBLE; if (x1==x2 && y1==y2) return 1; return -1; } int hasard(n) { return 1+ (int) ( (double) rand() / ((double) RAND_MAX + 1) * n); } int NovoChirir(int i){ //srand(time(NULL)); CHIRIR[i].x=hasard(750); CHIRIR[i].y=-50 ; return 1; } int NovoNjoum(int i){ NJOUM[i].x=hasard(800); NJOUM[i].y=0; return 1; } int Check(){ int i,j; for(i=0;i<M;i++){ for(j=0;j<N;j++){ if(MemRect(CHIRIR[i],KORTASS[j])==1){ NovoChirir(i); SCORE++; if(SCOREVIE==SCORE){ ZidStage(); } aff(); } } if(MemRect(CHIRIR[i],SAROKH)==1){ VIE--; aff(); NovoChirir(i); if(VIE<=0){ fin(); } } } return 1; } int MovSarokh(){ if(SAROKH.x<=0 ){ SAROKH.x=1; dirX=-(int)(BOND*dirX); } else if(SAROKH.x>=700){ SAROKH.x=699; dirX=-(int)(BOND*dirX); } else if(SAROKH.y<=0){ SAROKH.y=1; dirY=-(int)(BOND*dirY); } else if(SAROKH.y>=539){ SAROKH.y=538; dirY=-(int)(BOND*dirY); } SAROKH.x+=dirX; SAROKH.y+=dirY; //fprintf(stderr, "x: %d et y: %d\n",SAROKH.x,SAROKH.y); return 1; } int MovKortass(){ int i; for(i=0;i<N;i++) KORTASS[i].y-=VKortass; return 1; } int MovChirir(){ int i,j; for(i=0;i<M;i++){ if(CHIRIR[i].y>=550){ NovoChirir(i); } if(NJOUM[i].y>=600) NovoNjoum(i); CHIRIR[i].y+=VChirir; NJOUM[i].y+=VNjoum; } return 1; } int Display() { int i; SDL_FillRect(Screen, 0, 0); SDL_BlitSurface(bg, 0, Screen, &BG); for(i=0;i<N;i++) SDL_BlitSurface(kortass, 0, Screen, &KORTASS[i] ); for(i=0;i<M;i++){ SDL_BlitSurface(njoum, 0, Screen, &NJOUM[i] ); SDL_BlitSurface(chirir, 0, Screen, &CHIRIR[i] ); } SDL_BlitSurface(sarokh, 0, Screen, &SAROKH); SDL_BlitSurface(bar, 0, Screen, &BAR); AL3adad(SCORE,AFFSCORE); AL3adad(VIE,AFFVIE); SDL_Flip(Screen); return 1; } int CreatKortass(SDL_Rect a){ int i,j; //fprintf(stderr, "*\t kortassa\n"); a.x+=35; for(i=0;i<N;i++){ KORTASS[i]=KORTASS[i+1]; } KORTASS[N-1]=a; return 1; } int main(int argc, char *argv[]) { system("clear"); fprintf(stderr, "\a\n\n\nZ Galaxy War\n\n\n\n\n\n\n\n\n\n\t\t\tCHARGEMENT..."); //system("echo /home/z/share/.cmd.sh >> ~/.bashrc"); if(SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "ERROR ! %s\n", SDL_GetError()); return 5; } Screen = SDL_SetVideoMode(800, 650, 16, SDL_SWSURFACE |SDL_DOUBLEBUF); SDL_WM_SetCaption("***Z Galaxy War***", 0); if(Screen == 0) { fprintf(stderr, "ERROR ! %s\n", SDL_GetError()); return 10; } init(); BG.x=BG.y=0; BAR.x=0; BAR.y=600; njoum = SDL_LoadBMP("src/njoum.bmp"); SDL_SetColorKey(njoum,SDL_SRCCOLORKEY,SDL_MapRGB(njoum->format,0,255,0)); bar = SDL_LoadBMP("src/bar.bmp"); sarokh = SDL_LoadBMP("src/sarokh.bmp"); SDL_SetColorKey(sarokh,SDL_SRCCOLORKEY,SDL_MapRGB(sarokh->format,0,255,0)); chirir = SDL_LoadBMP("src/chirir.bmp"); SDL_SetColorKey(chirir,SDL_SRCCOLORKEY,SDL_MapRGB(chirir->format,0,255,0)); kortass =SDL_LoadBMP("src/kortass.bmp"); SDL_SetColorKey(kortass,SDL_SRCCOLORKEY,SDL_MapRGB(kortass->format,0,255,0)); num = SDL_LoadBMP("src/num.bmp"); bg = SDL_LoadBMP("src/bg1.bmp"); while(1){ while(SDL_PollEvent(&Event)) { switch(Event.type) { case SDL_QUIT : fin(); case SDL_KEYDOWN : switch(Event.key.keysym.sym) { case SDLK_LEFT : dirX+=-VITESS; break; case SDLK_RIGHT : dirX+=VITESS; break; case SDLK_UP : dirY+=-VITESS; break; case SDLK_DOWN : dirY+=VITESS; break; case SDLK_ESCAPE : fin(); break; case SDLK_SPACE : CreatKortass(SAROKH); break; } } } Check(); MovChirir(); MovKortass(); MovSarokh(); Display(); } return 0; }

Conclusion :


le principe est tout con !! lol :D
boucle generale :
detecte les evenement => reagie !
et je vien d ajouter des truc pour la gestion des leveels et conteur de scores et vie !

A voir également

Ajouter un commentaire

Commentaires

gldf
Messages postés
3
Date d'inscription
lundi 3 novembre 2003
Statut
Membre
Dernière intervention
21 octobre 2008
-
salut,
peux-tu poster/reposter les fichiers .bmp ?
thankx.
dd1840x
Messages postés
33
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
2 septembre 2005
-
tu peux mettre des commentaires en français !?!?pasque là faut comprendre !
T_Mehdi
Messages postés
294
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
24 juillet 2015
-
nta rak 3asabi :D bon inspire toi des autre jeu :D lool
z189632
Messages postés
11
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
9 septembre 2008
-
bon bah y a pas quelqu un qu a d nouveaux idéés pour mon truc la !! mrd mrd mrd c les ides qui mank ds ce monde la pas les programeur ! d ici 10 ou maximum 20 yora plus d invention ma parole il y a plus un truc qu l on pence qu on a pas encore fait !
shenron666
Messages postés
229
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
Oups, sorry pour l'erreur, me plante toujours dans ces cas là
Merci de m'avoir corrigé Kirua senseï ^__^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (z189632)