[2D] Sokoban Like

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[2D] Sokoban Like

Message par falsam »

Sokoban Like

■ Objectif..
Dans un entrepôt divisé en cases carrées, vous incarnez un gardien et devez ranger des caisses sur des cases cibles.

Le gardien peut se déplacer dans les quatre directions, et pousser (mais pas tirer) une seule caisse à la fois.

:arrow: Cliquer sur ce lien pour une démonstration vidéo des niveaux 1 à 5

En savoir plus sur Wikipédia https://fr.wikipedia.org/wiki/Sokoban

■ Le code.
Vous trouverez dans cette distribution deux codes réalisés avec le langage PureBasic.

SokobanEditor.pb
Créer autant de niveaux pour Sokoban Like en plaçant les différentes pièces de la scène avec l'aide du gardien que vous déplacez avec les flèches de votre clavier.

Les différentes piéces.

Image Image Image

Comment placer les éléments ?
Déplacer le gardien avec les flèches de votre clavier puis utiliser :
La touche 1 permet de placer un mur
La touche 2 permet de placer une caisse
La touche 8 permet de placer une cible.
La touche 9 permet de placer une caisse sur une cible (Elle devient rouge).

Placez autant de caisses (ou plus) qu'il y a de cibles.

Quand vous avez terminé la création du niveau, placer le gardien en position de départ.

Cette position de départ est sauvegardée dans dans un fichier setup du niveau qui sera lu automatiquement par le code Sokoban.pb (Le player).

Au menu.
- Nouvelle scène ou Ctrl + N pour créer une nouvelle scène
  Avant de créer une scène, donner un nom. Exemple S101

  Chaque scène est sauvegardée dans deux fichiers :
  NomDeLaScene.grid.json (Type et position de chaque élément de la scène)
  NomDeLaScene.setup.json (Position de départ du gardien, nombre de cibles)

  Exemple : S101.grid.json et S101.setup.json   

- Ouvrir une scène ou Ctrl + O pour ouvrir une scène existante.

- Renommer une scène ou F2 pour renommer une scène en cours d'édition.

- Sauver une scène en cours d'édition ou Ctrl + S pous sauvegarder une scène.

Les niveaux sont enregistrés dans le dossier Levels du dossier d'installation de Sokoban.

Vidéo : https://www.youtube.com/watch?v=_P1RlYhcymc

Sokoban.pb
C'est le player de Sokoban. A vous de jouer et de résoudre les différents niveaux.

■ Téléchargement.
Les sources, assets et différents niveaux sont sont publiés sur la plateforme communautaire GitHub
:arrow: https://github.com/falsam/SokobanLike/a ... master.zip

Voir la publication : https://github.com/falsam/SokobanLike

Les Sprites sont open source sur http://opengameart.org/content/sokoban-pack

PS : Spock évite tes commentaires (je suis poli je n'ai pas dit ne me gonfle pas]) tant que tu n'as pas testé ces codes. :mrgreen: (Joke hein ?)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [2D] Sobokan Lite

Message par Ar-S »

Sympathoche :)
Merci pour le partage.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [2D] Sobokan Lite

Message par Ar-S »

Feedback.
Tu as du te tromper dans la délimitation des tableaux ou dans la vérification des coords. Lorsqu'on pousse une casse contre un des bords de l'ecran ça génère une erreur sur GRID().
Testé avec ce level :
[[0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0], [0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0], [0, 0, 0, 0, 0, 1, 1, 0, 8, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 8, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0]]
Dans ton Json peut-être qu'il faut ajouter un valeur supplémentaire pour les cases hors ecran.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokoban Lite

Message par falsam »

Ar-S a écrit :Lorsqu'on pousse une casse contre un des bords de l'ecran ça génère une erreur sur GRID().
Quelle idée aussi d'essayer de pousser une caisse en dehors du screen ?^^

En principe il y aurait du il y avoir un mur. Je vais prendre ce cas là en compte. Merci de ton feedback Ar-s.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokokan Like

Message par falsam »

Mise à jour des codes.
- Quelques commentaires supplémentaires.
- Il n'est plus possible de pousser une caisse en dehors des limites de la grille. (Encore une fois merci Ar-s pour ton feedback ^^)
- Sauvegarde du nombre de cibles crées (Variable CountTargets.i) dans le fichier gridsetup.json quand on quitte l'éditeur de niveau.

Code : Tout sélectionner

;Joueur
Structure NewSprite
  x.i               ;Position x du joueur
  y.i               ;Position y du joueur
  Direction.i       ;Déplacement du joueur (Gauche=10, droite=11, bas=12, haut=13)
  CountTargets.i    ;Nombre de cible crée par le joueur
EndStructure
Global Player.NewSprite
Voir le premier message pour le lien de téléchargement.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [2D] Sobokan Lite

Message par venom »

Cool merci du partage falsam :wink:

ps: je vais faire mon Ar-S :P Dans l'editeur j'ai mis un mur sous mon perso et j'ai fait échappe, donc sur la game je démarre sur un mur pas cool. :wink: Mais je chipote tkt





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokokan Like

Message par falsam »

venom a écrit :Dans l'editeur j'ai mis un mur sous mon perso et j'ai fait échappe, donc sur la game je démarre sur un mur pas cool.
Je sais que tu chipotes tout comme Ar-S qui ne place pas de mur pour délimiter le périmétre du niveau :wink:

Comme je l'ai dit dans ma présentation ....
falsam a écrit :Quand vous avez terminé la création du niveau, Vous placerez le gardien en position de départ.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [2D] Sobokan Lite

Message par venom »

falsam a écrit :Quand vous avez terminé la création du niveau, Vous placerez le gardien en position de départ.
:oops: oups autant pour moi :wink: :lol:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokoban Like

Message par falsam »

Spock a écrit :Il ne faut rien exagérer je ne trouve pas que les l'utilisateurs chipotent
ils te font remonter des bugs, c'est la moindre des choses que de les remercier plutôt
J'ai remercié Ar-S de la remonté du souci qu'il rencontre bien que ce ne soit pas un bug pour moi. le principe de Sokoban est de délimiter une aire de jeu. Si Ar-s ne le fait pas je n'y peut rien. Toutefois j'ai quand meme comblé cette lacune.

venom qu'en a lui a fait une remarque sur le ton de la plaisanterie et je lui ai répondu de la meme manière.
Spock a écrit :Je n'ai pas testé ton code, mais ne peut tu pas par programmation 'replacer le gardien en position de départ ?
Tu vois le problème est là avec toi. Tu commentes une application sans même la tester.

Si je fais revenir le gardien dans une position fixe, comment je peux savoir si il n'y a pas un mur ?

Quand on utilise l'éditeur de niveau il faut placer le gardien dans la position ou je jeu doit démarrer.
Spock a écrit :Ou alors de ne rien dire....
Ne dit rien c'est mieux et teste ces codes la prochaine fois.

Ces deux codes ne sont que des templates minimalistes ne contenant que l'essentiel pour faire un vrai sokoban. C'est suite à une conversation privé avec venom que j'ai proposé ces deux codes.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [2D] Sobokan Lite

Message par Ar-S »

Note : J'ai bien délimité l'aire de jeu, c est ingame qu en poussant une caisse contre un des bords que l erreur apparaissait. :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [2D] Sobokan Lite

Message par Ar-S »

Allez poursuivons sur de bonnes bases avant que je ne nettoie ce topic.

J'ai pu tester que mon level, la correction fonctionne. Merci.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokoban Like

Message par falsam »

Ce que tu n'as pas compris Spock et c'est normal parce non seulement tu n'as pas testé, mais de plus tu ne veux pas comprendre.
Spock a écrit :tu lis le level, et tu regardes a prendre une case vide .....
Mais oui bien sur et je prends n'importe laquelle de libre ? Et bien non ce n'est pas le concept.

C'est le concepteur du niveau qui va définir la position de départ du gardien. Cette position est sauvegardée dans le setup du niveau.
Spock a écrit :mais tu peux aussi dire a tes testeurs d'aller se faire voir ailleurs , il suffit juste de le savoir
A toi je te le dis Spock : Vas te faire voir ailleurs. Tu reviendras quand tu auras testé les deux codes.
Spock a écrit :phrase a ecrire dans ton premier message , avec mention, "me gonflez pas si un truc déconne dans le code"
Tu as raison, Je m'empresse de l'écrire dans mon premier message en mentionnant ton nom bien sur. :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokoban Like

Message par falsam »

Spock a écrit :ton editeur ne prends pas les accents ?
J'utilise l'éditeur officiel et j'ai les accents.
Spock a écrit :ce qui a pour effet de remplacer ce qui se trouve sous le Gardien par de l'herbe !
ça résous le problème du gardien sur un mur ou une caisse !
je ne rajouterais pas de code inutile. Le créateur de niveau peut placer le gardien dans la position de départ de son choix : Donc sur un espace libre en principe (Faut quand même etre béta pour le placer dans un mur ou une caisse)

Cette position du gardien est sauvegardé dans un fichier setup qui sera lu par le player.
Spock a écrit :c'est pas grand chose a faire ....
Tout est dit, c'est pas grand chose à faire :wink:

Comme c'est spécifié dans le premier message, c'est deux codes sont des templates de bases pour la création d'un jeu complet. Ils ne contiennent que le strict minimum facile à déboguer avant de passer à la suite.

Quelques idées pour la suite qui fera l'objet d'un code indépendant de ceux que j'ai posté.

Editeur de niveau
- Un menu comprenant ..
- Un item pour charger un niveau.
- un item pour sauvegarder le niveau avec contrôle de cohérence.
- Un setup pour hiérarchiser les niveaux.
...

Le player
- Compter les déplacements
- Passer au niveau suivant
- Comptabiliser les scores.
- Créer un challenge multijoueurs.
...

Merci pour tes remarques judicieuses Spock :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sobokan LiKe

Message par falsam »

Nouvelle mise à jour des deux codes. Merci à Ar-S, Spock et Venom pour leurs commentaires.

■ Éditeur de niveau
- Lors de la sauvegarde, un message vous informe si le gardien se trouve dans un mur ou une caisse.

■ Player
- Un message vous informe quand la mission est atteinte.
- Ajout de quelques commentaires

■Téléchargement sur la plateform Github
https://github.com/falsam/SobokanLike/a ... master.zip
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [2D] Sokokan Like

Message par falsam »

Ooops j'ai fait une erreur dans le titre de ce sujet. Quelqu'un m'a fait remarqué sur un tchat que le jeu s'appelle Sokoban et non Sobokan. Le titre est corrigé.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre