SokoBoihn

17:19 modifié dans Vos applications #1
Bonjour à  tous  :o ,

Je viens de finir, correctement, enfin dû moins du mieux que j'ai pu, ma première petite application mac. Bon beaucoup me diront sûrement que c'est pas extraordinaire, sachez que j'ai 18 ans, et qu'après avoir lu quelques petit commentaire sur, forums, sites de développeurs, etc, j'ai retenus que la programmation SDL était, pour faire des jeux 2d basiques, la plus simple et facile d'accès des nombreuses bibliothèque, donc j'ai décidé de partir de là  il y a quelques jours. Soyez donc indulgent s'il vous plais.
Voici donc SokoBoihn.

ban_sokoboihn.png


Présentation:
SokoBoihn est un jeu basé totalement sur le très célèbre jeu du Sokoban, où il faut pousser des caisses d'une certaine façon pour les amener sur des objectifs. La difficulté est le fait que les caisses ne peuvent pas être poussé si elle sont faces à  une autre, si elles sont face à  un mur.
Ici dans SokoBoihn, vous être un petit Ourson qui à  perdu ces petites bêtes de compagnie, les Boihns, de petites boules de couleurs. Aider donc l'Ourson à  rassembler les Boihns dans leur caisse.

Fonctions:
Les fonctions présentes dans le jeu SokoBoihn sont très limités, mais suffisante pour passé quelques minutes de votre temps.
En plus de la fonction principale, "Jouer" vous pouvez "à‰diter" le niveau dans lequel vous jouer. C'est à  dire que dans SokoBoihn ce ne sont pas des niveau pré-définis mais UN seul niveau que vous "à‰ditez" en y supprimant, et rajoutant, des ARBRES, l'OURSON, les BOIHNs et les CAISSES.

Amélioration à  venir:
- Possibilité de sauvegardé plusieurs niveau et de choisir lequel charger.
- Choisir la taille du niveau.
- Implantation d'un temps et d'un meilleur record.

download_sokoboihn.png


Si vous avez des suggestions pour l'amélioration du programme n'hésitez pas à  m'en faire part.
Remarques ou critiques non constructives S'ABSTENIR

Réponses

  • 17:19 modifié #2

    Dyld Error Message:
      Library not loaded: @executable_path/../Frameworks/SDL_image.framework/Versions/A/SDL_image
      Referenced from: /Users/loulou/Downloads/SokoBoihn.app/Contents/MacOS/SokoBoihn
      Reason: image not found

  • iSofTomiSofTom Membre
    17:19 modifié #3
    Exactement même erreur pour moi!
  • lugdanumlugdanum Membre
    17:19 modifié #4
    Salut

    Tiens, en parlant de gratuit, tu pourrais proposer les sources ?
    ;)

    Le lien : http://www.bemill.com/prog/sokoboihn/
  • 17:19 modifié #5
    Je débute donc il est vraie qu'il est possible qu'il y est des erreurs.
    Je dois vous avouez que je ne vois pas comment réglé l'erreur qui apparemment est simplement que le logiciel ne trouve pas le framwork qui est utilisé pour charger les images.

    Rah... toujours ces petits problèmes ;)

    dans 1263299878:

    Salut

    Tiens, en parlant de gratuit, tu pourrais proposer les sources ?
    ;)

    Le lien : http://www.bemill.com/prog/sokoboihn/


    C'est à  dire les sources ? Et pourquoi mettre le lien je comprend pas lol...
  • lugdanumlugdanum Membre
    17:19 modifié #6
    dans 1263319910:


    C'est à  dire les sources ? Et pourquoi mettre le lien je comprend pas lol...


    Mettre les sources de ton projet pour partager ton code avec la communauté.
    Pour le lien, j'ai fait un mixte avec un autre topic, désolé.

    Donc les sources, on attend ?  <3
  • 17:19 modifié #7
    Oui donc par rapport au source, gratuité n'est pas égale à  openware me semble t-il.

    Attention à  ne pas tout mélanger lugdanum. C'est pas parce que je suis capable de faire un site web gratuit pour quelqu'un que je dois lui donner les fichiers .PSD du template par exemple.
  • Eddy58Eddy58 Membre
    17:19 modifié #8
    <br />Referenced from: /Users/loulou/Downloads/SokoBoihn.app/Contents/MacOS/SokoBoihn<br />


    Tu n'as pas copié le framework dans ton bundle on dirait.
  • CeetixCeetix Membre
    17:19 modifié #9
    Bon j'ai envie de tester moi. Hop hop hop !
  • ThibautThibaut Membre
    17:19 modifié #10
    Le framework est dedans, mais il n'a pas le bon nom.

    L'exécutable cherche "SDL_image.framework" alors que le framework se norme "SDL.framework". À moins que ce ne soit un second framework ?
  • 17:19 modifié #11
    Ouep c'est moi qui est fait de la merde lol, quand on rajoute le SDL_image qui est une extension du framework SDL qui permet de faire afficher des images de tous types, car en SDL on ne peut que charger des images non compressé c'est à  dire des bitmaps, il me semble ;)
    Je vais essayé de corriger se problème et rééditerais pour que vous me disiez si ça fonctionne chez vous.

    Merci pour vos aides et conseil.
  • lugdanumlugdanum Membre
    17:19 modifié #12
    chez moi ça fonctionne bien, bon travail, les graphismes sont sympa (tuto sokoban site du Zéro ?)
    :)
  • 17:19 modifié #13
    dans 1263492352:

    chez moi ça fonctionne bien, bon travail, les graphismes sont sympa (tuto sokoban site du Zéro ?)
    :)

    Oui c'est effectivement ça, je m'en suis bien inspiré après avoir donc appris le SDL, qui est apparemment la meilleur librairie pour faire de la programmation 3D car elle s'adapte facilement à  tout les systèmes.
    Sinon toi, as-tu déjà  programmer en SDL et plus précisément est-ce que tu aurais déjà  utilisé SDL_image, car si c'est le cas peut être que tu as déjà  la librairie SDL_image dans ton Mac et du coup il la trouve, contrairement au deux problèmes des autres qui dit qu'il ne la trouve pas.

    J'ai fais quelques recherches pour savoir si il y avait une librairie de Mac OS X et Xcode histoire que j'ai pas tout ces problèmes de frameworks avec SDL, mais j'ai pas vraiment trouvé de chose meilleur que SDL ou équivalent en matière de conception de jeu 2D.

    Par contre je ne sais pas comment faire en sorte de faire fonctionne les raccourcis de base et faire un menu pour la barre en haut. Genre quand on fait pomme+Q ça ne quitte pas ça fait rien.
    Et dans le menu en haut on ne peut voir que les trucs de bases.

    Si quelques aurait une réponse à  ma question?
  • AliGatorAliGator Membre, Modérateur
    17:19 modifié #14
    Cocos2D

    SDL j'avais utilisé pour ma part il y a très longtemps (dans mes jeunes années étudiantes au tout début lol), mais ça fait une éternité que je l'ai pas utilisé et codé avec, j'avais limite oublié qu'il existait :D

    Pour des GUI crossplateform moi j'utilise Qt (Trolltech).
    Pour des graphismes, les libs propres à  la plateforme sont tellement bien foutues en général que je m'embête pas avec SDL (tellement plus simple de faire [UIImage imageNamed:@toto.jpg] en Cocoa par exemple pour charger une image :D)
  • 17:19 modifié #15
    Merci je vais creuser de ce côté là  voir ce que je peux trouvé, mais pourrais-tu me donner plus de précision ou des liens pour l'utilisation et l'installation des différentes réponses que tu me proposes.
  • 17:19 modifié #16
    Bon pour ceux qui avez eût le problème avec la Librairie je penses l'avoir réglé, donc si vous voudriez bien le re-télécharger et me dire s'il fonctionne.

    Si ce n'est pas le cas je ne vois vraiment pas comment faire.
  • Eddy58Eddy58 Membre
    17:19 modifié #17
    Pour moi ça fonctionne (mais je n'avais pas essayé la précédente version)

    Manque un petit chrono pour mettre un peu la pression ;)
  • iSofTomiSofTom Membre
    17:19 modifié #18
    Chez moi aussi ça fonctionne, ça y est  :)

    Si je peux me permettre je vais faire quelques remarques:
    -Faire attention aux fautes d'orthographe ("le but est de mettre touS les Boà¯hns...")
    -Mais surtout, je sais pas pour les autres, mais moi la sémantique de cliquer sur le bouton de fermeture pour revenir au menu me choque beaucoup, surtout que ce n'est pas expliqué, ou alors c'est bien caché...

    Mais sinon c'est assez sympa comme jeu, et graphiquement réussi. 
  • 17:19 modifié #19
    Merci.

    Pour le chrono, c'est une évolution que j'envisage en effet, pour les prochaines versions.
    Pour les fautes d'orthographes, je tacherais d'y faire attention car c'est vraie que ça perd de sa crédibilité.
    Ensuite tu peux faire ECHAP pour revenir aux fenêtre précédentes, et pour quitter le programme une fois à  la fenêtre de base. Mais je suis en train de voir pour intégrer correctement le menu de Mac OS X avec les raccourcis normaux pour fermer comme pomme+Q.

    Merci encore pour vos critiques et, bientôt je sortirais une autre version avec le chrono et les raccourcis plus sympathique.
  • 17:19 modifié #20
    Bonjour à  tous,

    Bon voila, j'ai arrêté un peu la programmation hors de mes cours à  l'IUT pour justement les suivre, le semestre 2 est un peut plus costaux et surtout plus intéressant ;) .

    Bon là  j'ai recherché un peu et je me perd pas mal.
    J'ai remarqué qu'en créant une application Cocoa dans Xcode, c'était plus facile grâce à  l'Interface Builder de rajouté les menus, les raccourcis d'Apple etc, mais je me demande justement ensuite comment mettre dans cette fenêtre mon code de SDL/C++.

    Ayant un minimum de jugote et connaissant un minimum la programmation Mac, je sais que Cocoa et fait en Objectif-C et donc pas compatible avec le SDL/C++, peut être grâce au .mm donc à  l'Objectif-C++ mais parait que ça merde des fois.

    Donc ma requête est la suivante, j'ai cherché mais je m'y perd un peut.
    COmment puis-je recréer de la même manière qu'avec la SDL, mon programme ?

    Quartz ? Cocos2D (apparemment plus orienté pour les apps iPhone/iPod Touch) ?
    Enfin voila, je sais pas si vous comprenez mais ça m'aiderais énormément car bon mon but c'est de pouvoir refaire le programme mais en le codant en faisant un Nouveau Projet : Cocoa Application (ou autre si il faut mettre autre chose) pour pouvoir acceder au fameux Interface Builder, et ainsi avoir plusieurs fenêtre mettre des boutons, des tools barre etc etc...

    J'espère vraiment que vous comprenez ce que je veux dire et m'expliquez un peut car je me perd pour choisir...
  • 17:19 modifié #21
    Personne pour m'aider ?  ??? ??? ???
  • AliGatorAliGator Membre, Modérateur
    17:19 modifié #22
    Bah tu fais une Cocoa Application, dedans tu mets une NSView qui représente ta zone de jeu, et tu fais tout en Quartz/CoreGraphics.
    Ca fait longtemps que j'ai pas touché à  SDL donc je sais plus trop à  quoi ça ressemble au final, mais CoreGraphics n'est pas bien méchant, dessiner des formes et des bezierpaths ça change pas du principe de SDL.

    En fait pour ce genre de jeu "en grille", il y a deux choix possibles en général :
    - Soit tu n'utilises qu'une seule NSView et tu dessines tout à  la main dedans, un bloc par ci, une case vide par là , un mur par ci, le joueur par là , ...
    - Soit tu peux aussi utiliser une NSView par case (quitte à  regarder du côté de NSMatrix, ça fait un bail que j'ai pas fait de prog Mac depuis que je taf sur iPhone mais il me semble qu'elle pourrait t'aider), et du coup tu fais une sous-classe de NSView par type de bloc (bloc, case vide, mur, joueur, case but...), et tu les places au bon endroit en tant que subview de la NSView qui représente tout ton terrain de jeu
    - A la limite, ultime solution, tu fais un mix des deux : ta NSView qui représente ton aire de jeu, tu lui fais dessiner les parties fixes, et pour les parties mobiles (joueur, bloc mobile) tu utilises des NSViews distinctes, que tu mets en subview de la NSView de l'aire de jeu.

    Dans tous les cas, faut une petite logique MVC qui va bien (M = Modèle représentant ton terrain modélisé sous forme de cases, par exemple un tableau de tableau d'enums CASE_VIDE,MUR,BLOC,CASE_BUT,... ou tout autre représentation de l'état courant de ton plateau de jeu ; V = la représentation visuelle de ton plateau de jeu, tel que décrit à  l'instant).
  • 17:19 modifié #23
    D'accord merci pour la réponse, je vais essayé de m'initier au Quartz/CoreGraphics.

    Si jamais vous avez des tutoriels je suis preneur lol.
  • 17:19 modifié #24
    Et comment je gère les évènements comme en SDL :s ?

    Personnellement je ne connais pas la syntaxe de l'Objectif-C mais j'ai de très bonne base en C++.
    Et je vois pas comment avec Quartz j'arriverais à  gérer les évènements.
    Ensuite CoreGraphics je vois pas du tout ce que c'est (peut-être la gestion des évènements justement lol).
  • AliGatorAliGator Membre, Modérateur
    17:19 modifié #25
    Quartz et CoreGraphics c'est la même chose en fait... enfin ça l'est p'tet pas tout à  fait, mais perso j'ai jamais réussi à  faire la distinction, s'il y en a une la limite est sans doute subtile. D'ailleurs il suffit de lire la doc :
    The Quartz 2D API is part of the Core Graphics framework, so you may see Quartz referred to as Core Graphic
    (source)


    Si tu veux apprendre à  gérer les événements et autres trucs du genre... Bah y'a pas de mystère, va falloir te mettre à  l'Objective-C :P
    Tu verras, la syntaxe est déroutante au début, faut s'y faire et apprendre à  bien gérer la mémoire également... mais à  part ça, tu retrouveras la plupart des concepts du C++ (classes, héritage, variable d'instance, méthodes membre, ...) enfin de la POO en général quoi.
Connectez-vous ou Inscrivez-vous pour répondre.