Jeu du serpent avec choix du niveaux [vc++ 6.0]

Soyez le premier à donner votre avis sur cette source.

Vue 6 399 fois - Téléchargée 573 fois

Description

le jeu dessine le niveau choisie a partir du fichier Niveaux.bmp(la capture d'ecran montre le niveau 6)
on donc peut editer les niveaux avec paint par exemple ou meme en rajouter a la suite(en rajoutant 40 pixel a la hauteur de l'image pour chaque niveau suplementaire)
sinon il y a toujours les 9 niveaux de difficulté correspondant a la vitesse du serpent
et il se joue avec les touche 4,5,6,8 du numpad

maj: voila une version ou on peut jouer a 2 joueur, le joueur 2 se sert des touches z,q,s,d
ca marche bien mais parfois ca bug?

maj: j'ai remis la version 1 joueur(la version 2 joueurs est toujours presente dans le zip) car avec 2 joueurs ya pas mal de bug

Source / Exemple :


#include "terrain.h"

#define QUITTER 'a' 

#define P1_HAUT '8'
#define P1_BAS '5'
#define P1_GAUCHE '4'
#define P1_DROITE '6'

#define P2_HAUT 'z'
#define P2_BAS 's'
#define P2_GAUCHE 'q'
#define P2_DROITE 'd'

/************** fonction utilisée dans jeu() *******************/
void info()
{
	gotoxy(0,MAX_H+2);
	textcolor(ROUGE_C,BG);
	cout<<"score j1:"<<P1_score<<endl
		<<"score j2:"<<P2_score<<flush;
	gotoxy(0,0);
}

bool P1_testC(char c,char tmp)
{
	if(c==P1_HAUT || c==P1_GAUCHE || c==P1_BAS || c==P1_DROITE || c==QUITTER)
    if(!((c==P1_DROITE && tmp==P1_GAUCHE)||(tmp==P1_DROITE && c==P1_GAUCHE)||(c==P1_HAUT && tmp==P1_BAS)||(tmp==P1_HAUT && c==P1_BAS)) || c==QUITTER)
		return true;
	return false;
}

bool P2_testC(char c,char tmp)
{
	if(c==P2_HAUT || c==P2_GAUCHE || c==P2_BAS || c==P2_DROITE || c==QUITTER)
    if(!((c==P2_DROITE && tmp==P2_GAUCHE)||(tmp==P2_DROITE && c==P2_GAUCHE)||(c==P2_HAUT && tmp==P2_BAS)||(tmp==P2_HAUT && c==P2_BAS)) || c==QUITTER)
		return true;
	return false;
}

int getDir(char c)
{
	switch(c)
	{
	case P1_HAUT   :return 1;
	case P1_BAS    :return 2;
	case P1_GAUCHE :return 3;
	case P1_DROITE :return 4;
	case P2_HAUT   :return 1;
	case P2_BAS    :return 2;
	case P2_GAUCHE :return 3;
	case P2_DROITE :return 4;
	}
}

void fin()
{
	textcolor(BLANC,BG);
	system("cls");
	gotoxy(15,15);
	cout<<"perdu!!!   score joueur1 ="<<P1_score<<" points"
		<<"  score joueur2 ="<<P2_score<<" points"<<endl<<endl;
	cout<<"                appuyez sur une touche pour recommencer"<<endl;
	getch();
}

void jeu()
{
	int P1_dir, P2_dir;
    char c,tmp1,tmp2;
    bool touche=false;
	char terrain[MAX_L][MAX_H];
	SERPENT s1(5,10,4,VERT_C,VERT), s2(5,17,4,BLEU_C,BLEU);
    
	srand(time(NULL));
	system("cls");
	setcursortype(1);
	P1_score=0;
	P2_score=0;
    init(terrain,nbniveaux(),niveau);
    s1.affiche();
	s2.affiche();
	s1.getCoord(terrain);
	s2.getCoord(terrain);
	genereCible(terrain);
	info();
	getch();
    P1_dir=DROITE_;
	P2_dir=DROITE_;
	tmp1=P1_DROITE;
	tmp2=P2_DROITE;

    while(c!=QUITTER )
    {
        while((!kbhit() || touche) ) 
        {
            touche=false;			
            s1.avance(P1_dir);
			s2.avance(P2_dir);
	     	s1.getCoord(terrain);
			s2.getCoord(terrain);
	        if(s1.colision(terrain) || s2.colision(terrain))
			{
				getch();getch();
				goto fin;
			}
			if(s1.mange(cible))
			{
				s1.grandir();
				P1_score+=difficulte;
				info();
				genereCible(terrain);
			}
			if(s2.mange(cible))
			{
				s2.grandir();
				P2_score+=difficulte;
				info();
				genereCible(terrain);
			}
			Sleep(30+(9-difficulte)*8);
        }
		c=getch();
		if(P1_testC(c,tmp1))
		{
			tmp1=c;
			P1_dir=getDir(tmp1);
		}
		if(P2_testC(c,tmp2))
		{
			tmp2=c;
			P2_dir=getDir(tmp2);
		}
        touche=true;
    }
fin:
	setcursortype(2);
}

/********************** programme principal ********************/
void main()
{
	int nbn=nbniveaux();

	system("title SNAKE III");
	setcursortype(2);
	for(;;){
	while(niveau<1 || niveau>nbn)
    {
        system("cls");
		cout<<endl<<endl<<"     niveau(1 a "<<nbn<<"):";
        cin>>niveau;// variable globale
	}
    while(difficulte<1 || difficulte>9)
    {
        system("cls");
        cout<<endl<<endl<<"     niveau de difficulte (1 a 9):";
        cin>>difficulte;// variable globale
    }
	jeu();
	fin();
	niveau=0;
	difficulte=0;}
}

Conclusion :


il faur bien sur ne pas oublier de redimensionner la fenetre pour qu'elle ait une hauteur de 45 lignes au moins

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5 -
avec quelque modif oui, du coté de sconio (conio.h sous devcpp )
genus1002
Messages postés
12
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
10 octobre 2008
-
esque il marche avec dev-C++
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5 -
g te l'ai envoyer, sinon moi aussi g suis sous vc++ 6.0 et d'ailleur, sconio.h, que tu peut trouver sur ce site a ete developper pour vc++
MoDDiB
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1 -
Sniff j'allais commencer le ptit multi mais ben j'ai pas sconio.h c'est normal (g visual c++ 6.0)
quelqu'un peut til me lenvoyer ? modkiller@wanadoo.fr

Merci bcoup ^^
cs_djl
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
5 -
pour le faire marcher sous borland c++ 5.02 il faudra que tu vire l'entete sconio.h et remplacer la fonction textcolor qui doit s'utiliser differement
c pour ca que g mis l'exe dans le zip!

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.