begin process at 2013 06 20 00:17:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > FRUTISNAKE 1.0

FRUTISNAKE 1.0


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :snake, serpent, jeu serpent, frutisnake Niveau :Débutant Date de création :06/03/2013 Date de mise à jour :08/03/2013 10:42:38 Vu / téléchargé :1 415 / 94

Auteur : ringo73

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est le jeu classique du snake, avec un éditeur et même quelques options! Il a été code en c avec l'aide de la SDL et des connaissances du tutoriel sur le C du site du 0. Toutes les images utilisees dans le jeu viennent d'un forum du même site:"http://www.siteduzero.com/forum/sujet/jeu-sd l-frutisnake-33341". Et vous pouvez télécharger le jeu en entier ici:"http://sourceforge.net/projects/frutisnake10/ ".

Source

  • Voici la fonction "jouer":
  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <time.h>
  • #include <SDL.h>
  • #include <SDL_image.h>
  • #include <SDL_ttf.h>
  • #include "constantes.h"
  • #include "enumeration.h"
  • #include "structures.h"
  • #include "jeu.h"
  • #include "fichiers.h"
  • #include "serpent.h"
  • #include "main.h"
  • #include "macros.h"
  • int jouer(SDL_Surface* ecran, const int tempsLatence, InfosCarte* infosCarte)
  • {
  • printf("Entrer dans jeu.\n");
  • int carte[NBRE_BLOCS_LARG][NBRE_BLOCS_HAUT]= {{0}};
  • int continuer=1, i=0, j=0, tempPrecedent=0;
  • srand(time(NULL));
  • Serpent serpent;
  • Objets objets;
  • Temps temps;
  • Info infosJeu;
  • //InfosCarte infosCarte;
  • //INIT_INFOS_CARTE(infosCarte);
  • SDL_Event event;
  • SDL_Rect position={0, 0, 0, 0};
  • informerJoueur(&infosJeu, JEU, INIT, NULL);
  • if(!chargerCarte(carte, CHOISIR, infosCarte))
  • {
  • informerJoueur(&infosJeu, JEU, CLOSE, NULL);
  • ERREUR_DONNEES();
  • fprintf(stderr,"Impossible d'ouvrir le fichier pour chargement.\n");
  • return QUITTER;
  • }
  • initialiser(&serpent, &objets, carte, &infosJeu, ecran);
  • for (j=0; j<NBRE_BLOCS_HAUT; j++)
  • {
  • for (i=0; i<NBRE_BLOCS_LARG; i++)
  • {
  • if (carte[i][j] == TETE_GAUCHE)
  • {
  • serpent.mobile.position[0].x = i;
  • serpent.mobile.position[0].y = j;
  • serpent.mobile.morceau[0]=serpent.tete[GAUCHE];
  • carte[i][j]=VIDE;
  • }
  • }
  • }
  • tempPrecedent=SDL_GetTicks();
  • temps.tempsLatence=tempsLatence;
  • infosJeu.niveau=tempsLatence;
  • while(continuer)
  • {
  • SDL_PollEvent(&event);
  • switch(event.type)
  • {
  • case SDL_QUIT:
  • libererSurfaces(&serpent, &objets);
  • informerJoueur(&infosJeu, JEU, CLOSE, NULL);
  • return QUITTER;
  • break;
  • case SDL_KEYDOWN:
  • switch(event.key.keysym.sym)
  • {
  • case SDLK_PAUSE:
  • if(!pause(&objets, ecran, carte))
  • {
  • libererSurfaces(&serpent, &objets);
  • informerJoueur(&infosJeu, JEU, CLOSE, NULL);
  • return QUITTER;
  • }
  • break;
  • case SDLK_F10:
  • changerModeAffichage(ecran);
  • break;
  • case SDLK_ESCAPE:
  • if(!sauvegarderDonneesPartie(&infosJeu))
  • {
  • ERREUR_DONNEES();
  • fprintf(stderr,"Echec de la sauvegarde des donnees de la partie!\n");
  • }
  • libererSurfaces(&serpent, &objets);
  • informerJoueur(&infosJeu, JEU, CLOSE, NULL);
  • return MENU;
  • break;
  • case SDLK_RIGHT:
  • serpent.mobile.direction=DROITE;
  • break;
  • case SDLK_LEFT:
  • serpent.mobile.direction=GAUCHE;
  • break;
  • case SDLK_DOWN:
  • serpent.mobile.direction=BAS;
  • break;
  • case SDLK_UP:
  • serpent.mobile.direction=HAUT;
  • break;
  • default:
  • break;
  • }
  • break;
  • }
  • infosJeu.longSerpent.donnee=serpent.mobile.nbreMorceaux;
  • temps.actuel=SDL_GetTicks();
  • infosJeu.temps.donnee=(temps.actuel-tempPrecedent)/1000;
  • if(!gererTemps(carte, &serpent, &temps, &infosJeu))
  • {
  • POS_INIT(position);
  • position.x=ecran->w/2 - serpent.perdu->w/2;
  • position.y=ecran->h/2 - serpent.perdu->h/2;
  • SDL_BlitSurface(serpent.perdu, NULL, ecran, &position);
  • SDL_Flip(ecran);
  • if(!sauvegarderDonneesPartie(&infosJeu))
  • {
  • ERREUR_DONNEES();
  • fprintf(stderr,"Echec de la sauvegarde des donnees de la partie!\n");
  • }
  • SDL_Delay(2000);
  • continuer=0;
  • continue;
  • }
  • for(i=0; i<2; i++)
  • {
  • POS_INIT(position);
  • modifierPosition(serpent.mobile.positionFond[i].x*TAILLE_BLOC,
  • serpent.mobile.positionFond[i].y*TAILLE_BLOC,
  • TAILLE_BLOC, TAILLE_BLOC, &position,1);
  • SDL_BlitSurface(objets.arrierePlan, &position, ecran, &position);
  • }
  • if(serpent.mobile.effacerPomme)
  • {
  • POS_INIT(position);
  • modifierPosition(serpent.mobile.position[0].x*TAILLE_BLOC,
  • serpent.mobile.position[0].y*TAILLE_BLOC,
  • TAILLE_BLOC, TAILLE_BLOC, &position, 1);
  • SDL_BlitSurface(objets.arrierePlan, &position, ecran, &position);
  • serpent.mobile.effacerPomme=0;
  • }
  • collerSerpentJeu(&serpent, ecran);
  • POSITION(position);
  • collerSurfaces(carte, ecran, &objets, POMME, &position);
  • informerJoueur(&infosJeu, JEU, BLIT, ecran);
  • SDL_Flip(ecran);
  • SDL_Delay(tempsLatence*0.50);
  • }
  • informerJoueur(&infosJeu, JEU, CLOSE, NULL);
  • libererSurfaces(&serpent, &objets);
  • return MENU_NIVEAUX;
  • }
Voici la fonction "jouer":

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>

#include "constantes.h"
#include "enumeration.h"
#include "structures.h"
#include "jeu.h"
#include "fichiers.h"
#include "serpent.h"
#include "main.h"
#include "macros.h"

int jouer(SDL_Surface* ecran, const int tempsLatence, InfosCarte* infosCarte)
{
    printf("Entrer dans jeu.\n");
    int carte[NBRE_BLOCS_LARG][NBRE_BLOCS_HAUT]= {{0}};
    int continuer=1, i=0, j=0, tempPrecedent=0;
    srand(time(NULL));
    Serpent serpent;
    Objets objets;
    Temps temps;
    Info infosJeu;
    //InfosCarte infosCarte;
    //INIT_INFOS_CARTE(infosCarte);
    SDL_Event event;
    SDL_Rect position={0, 0, 0, 0};

    informerJoueur(&infosJeu, JEU, INIT, NULL);
    if(!chargerCarte(carte, CHOISIR, infosCarte))
    {
        informerJoueur(&infosJeu, JEU, CLOSE, NULL);
        ERREUR_DONNEES();
        fprintf(stderr,"Impossible d'ouvrir le fichier pour chargement.\n");
        return QUITTER;
    }
    initialiser(&serpent, &objets, carte, &infosJeu, ecran);

    for (j=0; j<NBRE_BLOCS_HAUT; j++)
    {
        for (i=0; i<NBRE_BLOCS_LARG; i++)
        {
            if (carte[i][j] == TETE_GAUCHE)
            {
                serpent.mobile.position[0].x = i;
                serpent.mobile.position[0].y = j;
                serpent.mobile.morceau[0]=serpent.tete[GAUCHE];
                carte[i][j]=VIDE;
            }
        }
    }

    tempPrecedent=SDL_GetTicks();
    temps.tempsLatence=tempsLatence;
    infosJeu.niveau=tempsLatence;

    while(continuer)
    {
        SDL_PollEvent(&event);
        switch(event.type)
        {
        case SDL_QUIT:
            libererSurfaces(&serpent, &objets);
            informerJoueur(&infosJeu, JEU, CLOSE, NULL);
            return QUITTER;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym)
            {
            case SDLK_PAUSE:
                if(!pause(&objets, ecran, carte))
                {
                    libererSurfaces(&serpent, &objets);
                    informerJoueur(&infosJeu, JEU, CLOSE, NULL);
                    return QUITTER;
                }
                break;
            case SDLK_F10:
                changerModeAffichage(ecran);
                break;
            case SDLK_ESCAPE:
                if(!sauvegarderDonneesPartie(&infosJeu))
                {
                    ERREUR_DONNEES();
                    fprintf(stderr,"Echec de la sauvegarde des donnees de la partie!\n");
                }
                libererSurfaces(&serpent, &objets);
                informerJoueur(&infosJeu, JEU, CLOSE, NULL);
                return MENU;
                break;

            case SDLK_RIGHT:
                serpent.mobile.direction=DROITE;
                break;
            case SDLK_LEFT:
                serpent.mobile.direction=GAUCHE;
                break;
            case SDLK_DOWN:
                serpent.mobile.direction=BAS;
                break;
            case SDLK_UP:
                serpent.mobile.direction=HAUT;
                break;
            default:
                break;
            }
            break;
        }
        infosJeu.longSerpent.donnee=serpent.mobile.nbreMorceaux;
        temps.actuel=SDL_GetTicks();
        infosJeu.temps.donnee=(temps.actuel-tempPrecedent)/1000;

        if(!gererTemps(carte, &serpent, &temps, &infosJeu))
        {
            POS_INIT(position);
            position.x=ecran->w/2 - serpent.perdu->w/2;
            position.y=ecran->h/2 - serpent.perdu->h/2;
            SDL_BlitSurface(serpent.perdu, NULL, ecran, &position);
            SDL_Flip(ecran);
            if(!sauvegarderDonneesPartie(&infosJeu))
            {
                ERREUR_DONNEES();
                fprintf(stderr,"Echec de la sauvegarde des donnees de la partie!\n");
            }
            SDL_Delay(2000);
            continuer=0;
            continue;
        }

        for(i=0; i<2; i++)
        {
            POS_INIT(position);
            modifierPosition(serpent.mobile.positionFond[i].x*TAILLE_BLOC,
                             serpent.mobile.positionFond[i].y*TAILLE_BLOC,
                             TAILLE_BLOC, TAILLE_BLOC, &position,1);
            SDL_BlitSurface(objets.arrierePlan, &position, ecran, &position);
        }
        if(serpent.mobile.effacerPomme)
        {
            POS_INIT(position);
            modifierPosition(serpent.mobile.position[0].x*TAILLE_BLOC,
                             serpent.mobile.position[0].y*TAILLE_BLOC,
                             TAILLE_BLOC, TAILLE_BLOC, &position, 1);
            SDL_BlitSurface(objets.arrierePlan, &position, ecran, &position);
            serpent.mobile.effacerPomme=0;
        }

        collerSerpentJeu(&serpent, ecran);
        POSITION(position);
        collerSurfaces(carte, ecran, &objets, POMME, &position);
        informerJoueur(&infosJeu, JEU, BLIT, ecran);
        SDL_Flip(ecran);
        SDL_Delay(tempsLatence*0.50);
    }

    informerJoueur(&infosJeu, JEU, CLOSE, NULL);
    libererSurfaces(&serpent, &objets);

    return MENU_NIVEAUX;
}

 Conclusion

Je pense que le jeu assez complet mais il manque quand même quelques trucs comme la musique, la possibilité de jouer a plusieurs, un mode aventure...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

07 mars 2013 19:08:04 :
ajout de quelques infos
08 mars 2013 10:42:41 :
correction de l'URL pour télécharger le jeu

 Sources du même auteur

Source avec Zip Source avec une capture TUX JUMP 1.0
Source avec Zip Source avec une capture FONCTIONS EN ACTION

 Sources de la même categorie

Source avec Zip Source avec une capture SUDOKU EN LANGAGE C par casseur
Source avec Zip Source avec une capture TUX JUMP 1.0 par ringo73
Source avec Zip ASCII_PHYSIX par BuuG63
Source avec Zip EAT GAME - AFFRONTEZ VOS AMIS par Nebur97232
Source avec Zip Source avec une capture BRIQUES GAME par xtreen

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LE SNAKE par BCedric
Source avec Zip Source avec une capture SIMPLE JEU DU SERPENT par goundy05
Source avec Zip Source avec une capture UN SNAKE FAIT EN DIRECT X par Pretender06
Source avec Zip Source avec une capture [C++][SDL] PETIT SNAKE par PierreAd
Source avec Zip SNAKE GRAPHIQUE ( 1/2 JOUEURS ET IA) par AmK

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Snake tsssssssssss aidez moiiiiiiii [ par AmK ] Salut ,Je suis en train de coder un snake et la je crois avoir bien compris le principe de l'algo mais niveau code ça foire je sais pas pourquoi voila Serpent en sdl : petit probleme [ par tchern007 ] Deja bonjour a tous , je vous explique mon petit problemej ai fait un serpent avec sdl mais je voit pas comment faire pour faire en sorte de savoir qu Snake en Glut => [ par Toxiko ] Enfait on dois faire 3 interfaces differentes pour un snake (sous linux ;))g fait une partie "core" et une partie "librairie dynamique" en gros le mai jeu le serpent [ par Horfee ] bon je suis tout nouveau en C et j'ai un petit probleme :j'ai codé le jeu du serpent, assez rapidement mais j'ai un probleme : dès que j'appuie sur un serpent et mur . [ par ultima666 ] Bonjour je suis en train de faire un serpent.Mais voila G quelque problème je ne sais pas comment faire les mur( délémiter le terrain )genre un terrai pb avec WM_KEYDOWN [ par melkiorlenecrarque ] Bonjour!j'ai l'impression que les messages envoyés lorsque je presse une touche du clavier ne sont pas captés!par contre, quand je supprime les boutto serpent 2 joueurs tactique o tour par tour en poo [ par baalibono ] g besoin d'aide mais tous les source que g trouve ne sont pas vraiment des serpent programmé en orienté objet et moi j'aurait besoin d'aide parce que Problème de déplacement de serpent [ par triso1007 ] Salut, j'essaie de programmer un serpent, c'est que le début et je ne comprends pas, si j'appuie sur la touche s ou d, le serpent se déplace normaleme problème avec mon serpent [ par redrum261 ] Je ne comprens pas pourquoi le snake que j'ai programmé n'est pas en mouvement si vous aviez des suggestions, des conseils je suis à votre écoute. mer [SDL] Fenetre qui s' affiche et disparait aussitot [ par jonezy ] Bonjour Je debute en programmation, j'ai telechargé ce code qui est cencé etre un jeu de serpent avec SDL. Quand je l'execute la fenêtre apparaît et


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,881 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales