Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Apprenez à programmer en C ! > [Pratique] Création de jeux 2D en SDL > TP : Mario Sokoban > Lecture des commentaires

TP : Mario Sokoban

Vous devez être inscrit pour pouvoir poster des messages

Page : 1  2  Suivante
Pseudo Commentaire
Page : 1  2  Suivante
Hors ligne piclem # Posté le 15/04/2006 à 15:07:04 - Ce membre a mis la note : 18
A chaque jour suffit sa peine
Avatar
Groupe : Membres
hé bah chapeau, toujours aussi bien expliqué ! Même si mario se déplace un peu ... violemment... lol ;)

T'es supeeer :p

www.ClemZbloG.net (C'est le blog de Clem... en fait c'est mon blog...)
 
Hors ligne baba0076 # Posté le 15/04/2006 à 16:32:29 - Ce membre a mis la note : 17
Qui ne tente rien n'a rien !
Avatar
Groupe : Bannis
Est-ce possible de télécharger le jeux pour ceux qui n'apprenent pas le C++ ?
Merci m@teo21.

VENDS BOITIER ADVANCE XBLADE 8110B - 60 €
VENDS GAMECUBE + 6 JEUX, 3 MANETTE, 4 MEMORY - 150 €
VENDS SONY ERICSSON W550i + SPEAKERS + CD + CABLE - 150 €

PAR MP SVP
 
Hors ligne lost-in-the-shell # Posté le 15/04/2006 à 17:10:48 - Ce membre n'a pas mis de note
Arf
Avatar
Groupe : Membres
En parlant de C++ ... ce serait plus clean d'enlever les commentaires sur une ligne et de les remplacer par de vrais commentaires C ( /* ... */ ).
Hors ligne Lanier # Posté le 15/04/2006 à 18:04:54 - Ce membre a mis la note : 20
Avatar
Groupe : Membres
IM-PRE-SSION-NANT o_O o_O o_O !

Comment fais-tu pour nous faire comprendre les choses avec autant d'aisance, les déclics se succèdent à une allure phénoménale quand je lis tes tutos! M@teo, chapeau...

P.S.: Je termine de lire la solution proposée puis j'essaie de la reproduire de mémoire (et surtout, de logique) :) .

Lanier
 
Hors ligne gooopy007 # Posté le 15/04/2006 à 19:07:23 - Ce membre n'a pas mis de note
Have a break, have a kitkat
Avatar
Groupe : Membres
Cool.

enfait j'ai comprit le code sans trop de difficulté mais j'aurai pas reussi a m'organiser comme sa.

merci mateo! :)

PS: C'est pas possible d'avoir un executable de la version compète pour linux?



Code : PHP
1
<?php echo '<p>bonjour, je suis une signature bidon</p>'; ?>

 
Hors ligne baba0076 # Posté le 15/04/2006 à 22:41:00 - Ce membre a mis la note : 17
Qui ne tente rien n'a rien !
Avatar
Groupe : Bannis
Quelqu'un peut il m'envoyer le jeux SVP ?

VENDS BOITIER ADVANCE XBLADE 8110B - 60 €
VENDS GAMECUBE + 6 JEUX, 3 MANETTE, 4 MEMORY - 150 €
VENDS SONY ERICSSON W550i + SPEAKERS + CD + CABLE - 150 €

PAR MP SVP
 
Hors ligne Natim # Posté le 15/04/2006 à 23:45:01 - Ce membre n'a pas mis de note
Apprendre à coder c'est coder
Avatar
Groupe : Membres
On peut aussi rajouter des trucs !
Serait-il possible de changer le sprite dans l'éditeur de niveau avec la molette de la souris ?
Je trouve que c'est vraiment super !

from utbm import partiels
Python IRC sur Epiknet
@ bientôt Natim
Status Jabber : Image utilisateur Image utilisateur
Zenwalk-fr.org
 
Hors ligne M@teo21 # Posté le 16/04/2006 à 13:09:11 - Ce membre n'a pas mis de note
Doh ! Nuts. Mmh, donuts !
Avatar
Admins
Bonne remarque, je viens de voir que la SDL gérait depuis peu la molette de la souris. Mais la documentation offline que j'avais téléchargée n'était visiblement pas à jour.
Plus d'infos ici : http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fMouseButtonEvent

Je vais mettre à jour dès que possible le cours à ce sujet.

Ce qui se conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément.

Nicolas Boileau (je suis fan)
Autobiographe à ses heures perdues :p
 
Hors ligne remram44 # Posté le 16/04/2006 à 18:00:34 - Ce membre n'a pas mis de note
§ KCOMDL §
Avatar
Groupe : Membres
Et la version linux i686 ? lol...

---:--: g33k |ns|d3 :--:---
WikiNyug
 
Hors ligne docteur.night # Posté le 17/04/2006 à 04:37:20 - Ce membre n'a pas mis de note
jamais 203, alors 204 !
Avatar
Groupe : Membres
LOL !
je suis en train de préparer un sokoban en javascript, et comme tous les jours, je vais sur le sdz et... paf TP sokoban... c'est le destin ?

Bref, je n'ai pas tout lu, mais en tout cas ça serait bien si le programme pouvait lire le format .xsb, format standard des niveaux pour sokoban.
Une amélioration à faire ?

Voilà un exemple au format standard de sokoban :
(source : Wikipédia)

Code : HTML
    #####                 # -> mur
    #   #                 $ -> caisse
    #$  #                 . -> destination
  ###  $##                * -> caisse sur une zone de rangement
  #  $ $ #                     (pas dans ce niveau)
### # ## #   ######       @ -> personnage
#   # ## #####  ..#       + -> personnage sur une zone de rangement
# $  $          ..#           
##### ### #@##  ..#
    #     #########
    #######
 
Hors ligne Chahine # Posté le 17/04/2006 à 10:45:39 - Ce membre a mis la note : 20
Avatar
Groupe : Membres
J'aurais une remarque à faire à M@téo : tu nous as toujours appris à libérer la mémoire allouée dynamiquement avant de terminer un programme, que ce soit une variable console ou une surface SDL...


Mais quand tu utilises la fonction exit() pourtant, tu ne le fais pas... S'agit-il d'un oubli ou cette fonction le fait-elle automatiquement ?

(tu m'excuseras pour le tutoiement si ça te dérange :p )
Hors ligne kegi # Posté le 17/04/2006 à 21:19:36 - Ce membre a mis la note : 8
Groupe : Membres
Salut,

Bonne chance docteur.night, moi j'ai réussit à faire une version de sim city en javascript :lol: pas aussi bien que le vrai jeu mais assez impressionnant quand meme lol, avec le même principe de mappage bien sur.

8/20 pour ce tuto...

Cordialement,
Kevin (kegi@hotmail.com)
Hors ligne djo0012 # Posté le 18/04/2006 à 05:45:47 - Ce membre n'a pas mis de note
Groupe : Membres
c'est drole... le sokoban etait justement mon idee pour me pratique avec la sdl quand j'aurais fini mon projet en consol... en tout cas merci sa va m'aide si j'ai un probleme quelque part, je nest pas tout lus exactement mais le projet est interressant...

desoler pour le francais j'ai un manque de moliere en moi depuis un bout :( Citation : moi-meme
Si vous n'arrivez pas a résoudre un problème c'est que vous n'avez pas assez travaillé dessus.
 
Hors ligne LeClubber # Posté le 19/04/2006 à 23:36:04 - Ce membre a mis la note : 16
Avatar
Groupe : Membres
Très bon tuto encore une fois ;)
Il manque juste la fonction deplacerCaisse, si tu pouvais la rajouter ça ferai mieux quand j'imprimerai :D
Allez, un "petit" 16/20 pour cet oublie, mais merci pour tout tes efforts.
Hors ligne docteur.night # Posté le 20/04/2006 à 16:43:13 - Ce membre n'a pas mis de note
jamais 203, alors 204 !
Avatar
Groupe : Membres
Héhé, voilà ce qu'il est possible de faire en php/javascript :p

Image utilisateur

J'ai même animé les ptites fleurs sur le sol (gif animé quand tu nous tiens)

Vous pouvez le tester ICI
 
Hors ligne BigGamer95 # Posté le 20/04/2006 à 21:30:24 - Ce membre n'a pas mis de note
Groupe : Membres
trés bon tp, ca m'a permi de comprendre comme se deplacé de case en case ^^

est ce que apres celui la, tu compte en faire un 2eme (histoire de revisé) avec les meme truc que le premier (editeur de niveau par exemple) mais un jeu assez different?
Hors ligne NarTy # Posté le 22/04/2006 à 19:00:31 - Ce membre n'a pas mis de note
Je t'aime amèrement !
Avatar
Groupe : Bannis
Super mais ce qui serait une super amélioration , c'est vérifié q'un niveau que l'on crée soit possible !

Venez jouer
Mon blog => JuLeS’ ProGs
Programmeur xHTML/CSS,PHP/SQL,Javascript,C à votre service

 
Hors ligne tomtom91 # Posté le 24/04/2006 à 21:01:11 - Ce membre a mis la note : 20
...
Groupe : Membres
Voilà un 20 pour ce TP !!! Grâce à toi Matéo j'ai pu comprendre toutes les démarches, tous le code, tout koi !!!!
De plus tu nous donne l'occasion de créer quelque chose concré, et ça, c'est vraiment bien. ^^
Encore MERCI !!!
Hors ligne Adi # Posté le 11/05/2006 à 19:13:23 - Ce membre a mis la note : 20
Avatar
Groupe : Membres
Super tuto ! Merci ;)

J'ai eu un petit probleme avec les améliorations par contre : Il faut finir deux fois chaque niveau avant de passer au suivant o_O
J'ai éssayé de modifier la variable que je passait à la fonction qui charge la carte, et il faut bien rentrer 4 pour le niveau 2, 6 pour le niveau 3, 8 pour le niveau 4, etc... Je met le code en secret, pour ce qui ne veulent pas le voir :

Secret (cliquez pour afficher)
for(c = 1; c < niv; c++){
if(!fgets(ligneFichier, NB_BLOCS_LARGEUR * NB_BLOCS_HAUTEUR + 1, fichier))
return 0;
}


J'ai aussi fait l'image de "objetActuel" qu'on déroule avec la molette, pour aller plus vite (je l'ai fait avec un select case parceque je ne sais pas si les nombres que remplace les mots (MUR, CAISSE, etc..) se suivent forcément...

désolé pour le mot en blanc, c'est pour ne rien dévoiler à ceux qui ne l'ont pas encore fait (repassez avec la souris pour le voir).
Hors ligne Dentuk # Posté le 09/06/2006 à 17:07:22 - Ce membre a mis la note : 18
Yamo...
Avatar
Groupe : Membres
Citation : M@teo21
Dans l'éditeur toujours, il faudrait empêcher que l'on puisse placer plus d'un départ de joueur sur une même carte !

Hihihi il y a une faille ici dans la version ameliorée !

En effet, en laissant le bouton gauche de la souris enfoncé après avoir supprimé le depart, et en se baladant avec la mouse motion on peut en mettre plusieurs ! :)

Sinon, très bon tuto ;)

18/20 :p

Image utilisateur
 
Hors ligne Zimm i48 # Posté le 04/09/2006 à 19:19:06 - Ce membre a mis la note : 20
A quand la retraite ?...
Avatar
Groupe : Membres
Juste un ptit com...
Et ceux qui ont un ordi portable et donc pas de pavé numérique...
COMMENT ON FAIT ? :'(
Non je rigole il faut modifier le programme, je sais mais ça veut dire pas le droit à la version améliorée sans la faire soi-même...
bon ben ça me fera bosser :lol:

Rendez-vous sur Test-Pedago.fr, le site d'un projet libre de logiciels pour s'entraîner sur les tables de multiplication et les conjugaisons.


Wikiversité
 
Hors ligne SubX # Posté le 05/10/2006 à 19:48:06 - Ce membre a mis la note : 18
Modelisateur amateur
Avatar
Groupe : Membres
exellent, mais je comrend pas comment on fait pour savoir que dans le fichier.lvl 1 == un mur par exemple, 2 == une caisse et tout c'est surtout ca qui me bloque, et d'ailleurs c'est obligatoirement un fichier.lvl ou un .txt sa marche?
18/20

Mon site
Image utilisateurEven if you're not with me I'm with you

Pour toute demande d'engagement dans un projet (quel qu'il soit), la reponse est non, jusqu'au changement de cette phrase ;)
 
Hors ligne Bogoris # Posté le 19/11/2006 à 15:26:33 - Ce membre n'a pas mis de note
Exit light ! Enter night !
Avatar
Groupe : Membres
Citation : tuto
carte[0][0]
carte[0][1]
carte[0][2]
carte[0][3]
carte[0][4]
carte[0][5]
carte[0][6]
carte[0][7]
carte[0][8]
carte[0][9]
carte[0][10]
carte[0][11]
carte[1][0]
carte[1][2]

carte[1][3]
carte[1][4]

Il en manque un :p .

Dans les sources de jeu.c on a comme fichiers inclus :
Code : C
#include "constantes.h"

#include "jeu.h"

Or on a besoin de fichiers.h il me semble, quand on a ça :
Code : C
if (!chargerNiveau(carte))


Sinon il semblerait qu'on ai besoin d'inclure tous les .h dans le main.c (source [j'ai eu le même problème de "undefined reference to", mais pas avec la même fonction]), ce qui n'est pas non plus le cas dans le .zip à télécharger.
 
Hors ligne Darock # Posté le 17/12/2006 à 18:03:34 - Ce membre n'a pas mis de note
Groupe : Membres
Help! Apprenant à programmer en C++ et non en C, je me suis contenté de faire des simples copier-coller pour coder ce petit jeu. J'ai aussi suivi les instructions pour "installer" la SDL.
Le problème survient à la compilation, le compilateur cherche SDL/SDL_image.h qui est dans les includes des .c, mais lorsque j'ai installe le SDL (et donc copié les .h dans le répertoire nécessaire, indiqué dans le tuto sur la SDL) je n'ai pas rencontré ce .h ...
La version de SDL est la 1.2, dans le cours de M@teo il s'agit de la 1.0, le problème vient-il de là?
Je précise que j'utilise Visual Studio.NET 2005.
Hors ligne Niluge # Posté le 02/02/2007 à 00:33:44 - Ce membre n'a pas mis de note
Essaye de penser
Avatar
Groupe : Membres
Je n'ai pas lu le tutorial car j'ai pris le partis pris de faire le TP sans aide (Et ca marche :D, j'ai presque finis).
J'ai juste survoler a l'instant ton tutos et je trouve vraiment dommage que tu ne mentionne pas l'existence des tableaux à plusieur entrée au début du tp, car pour l'avoir fais tout seul dans mon coins, j'ai beaucoup galérer en créant des structure compliqué et ce genre de chose qui au final on rendu mon code assez complexe (et très mastoque).

Ceci dis, je ne peux que t'infiniment te remercier pour tout ces tutos, car si j'ai pu galérer sur le sokoban, ben c'est grace à toi et je vais continuer à faire tout un tas de programme en C toujours grace à toi. J'ai hate d'avoir finis mon sokoban et de continuer à apprendre de nouveaux truc. Alors encore une fois merci ! :)

La programmation nuit gravement a votre santé mentale et a celle de votre entourage
 
Hors ligne ronflex # Posté le 09/02/2007 à 19:58:00 - Ce membre a mis la note : 18
Avatar
Groupe : Membres
Enfin un vrai jeu! Bon alors je met 18 car on peut pas être parfait.

il n'y a point de chemin vers le bonheur, le bonheur est le chemin (proverbe bouddhiste)
EN TANT QUE NON-BOULET, J'AIME PAS LES BOULETS. ALORS S'IL VOUS PLAIT LES BOULETS TAISEZ-VOUS AVANT DE PASSER POUR DES C**S.

Grrr. A bas les modérateurs tyranniques! :D
 
Hors ligne Honor # Posté le 03/03/2007 à 17:14:09 - Ce membre a mis la note : 20
maus
Avatar
Groupe : Membres
20 !!
J'ai mis 3 jour a le faire seul et je suis assez fier du résultat car en plus mon "algorithme" est similaire au tien contrairement au TP du pendu :p
Ca m'a vraiment permis de réviser et de me rendre compte la difficulté pour programmer et aussi qu'il fallait absolument etre organisé :-° .
Merci pour ce sublissime Tutorial :)

Datation au carbone 14



[MISE à jour] : ajout vidéo
 
Hors ligne MaitreZur # Posté le 17/03/2007 à 15:23:49 - Ce membre a mis la note : 16
Avatar
Groupe : Membres
Bien détaillé, voilà qui explique concrètement à quoi ressemble un projet digne de ce nom :-°

Toutefois, il y a quand même un petit problème dans le code qui fait que Sokoban peut rapidement utiliser 100% du CPU ! Dans la boucle principale, dans le main.c

Code : C
// [...]
int continuer = 1;

while (continuer)
{
    SDL_WaitEvent(&event);
    switch(event.type)
    {
        case SDL_QUIT:
            continuer = 0;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym)
            {
                case SDLK_ESCAPE:
                    continuer = 0;
                    break;
                case SDLK_KP1:
                    jouer(ecran);
                    break;
                case SDLK_KP2:
                    editeur(ecran);
                    break;
            }
            break;
    }

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    SDL_BlitSurface(menu, NULL, ecran, &positionMenu);
    SDL_Flip(ecran);
}


Cela signifie donc qu'à chaque évènement détecté, la fenêtre est remplie de noir, l'image d'introduction est blittée, et l'écran est mis à jour. Or vu, que le déplacement de la souris crée un évènement, le fait de déplacer la souris sur la fenêtre fait vite monter un processeur modeste à 100%, les trois fonctions ci-dessus étant appelées à chaque fois que la souris bouge d'un pixel o_O

C'est pas un peu lourd ?

Personnellement, j'ai réglé ça de cette manière :

Code : C
// [...]
int continuer = 1;
int afficherMenu = 1:

while (continuer)
{
    SDL_WaitEvent(&event);
    switch(event.type)
    {
        case SDL_QUIT:
            continuer = 0;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym)
            {
                case SDLK_ESCAPE:
                    continuer = 0;
                    break;
                case SDLK_KP1:
                    jouer(ecran);
                    afficherMenu = 1;
                    break;
                case SDLK_KP2:
                    editeur(ecran);
                    afficherMenu = 1;
                    break;
            }
            break;
    }

    if (afficherMenu)
    {
        /* Pourquoi blitter du noir, pour reblitter une image par dessus juste après ?
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
        */

        SDL_BlitSurface(menu, NULL, ecran, &positionMenu);
        SDL_Flip(ecran);
        afficherMenu = 0;
    }
}


Ce qui apparemment résout le problème, le menu n'étant bitté que si c'est nécessaire :)

C'était juste une petite remarque, et j'espère qu'elle est postée au bon endroit :-°

L'informatique n'est pas une science exacte : on n'est jamais à l'abri d'un succès !
 
Hors ligne GuGus963 # Posté le 12/04/2007 à 22:45:29 - Ce membre a mis la note : 17
Pour la connaissance libre !
Avatar
Groupe : Membres
Moi, j'ai pas envie de créer ce jeu pour m'entraîner (je peux pas saquer ce jeu... J'suis trop nul, j'arrive juste les deux premiers levels :p )
Est-ce qu'à ce niveau il est possible de créer un mini tetris ? :p
 
Hors ligne YoannSA # Posté le 25/04/2007 à 18:15:19 - Ce membre a mis la note : 19
Zér0 et fière de l'être
Avatar
Groupe : Membres
Bonjour !
Ton tutorial est super !
Très bien expliqué et tout.
Au revoir :D

Avec du choux pour la quantité et de l'oeuf pour la qualité, ça gaze !

Secret (cliquez pour afficher)
Interdiction de lire ce message






 

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 75 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0458s (0.0344s)