Sokoban3D en commun

Généralités sur la programmation 3D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Dans la procedure ChargeNiveau() , ça se passe ici :
c'est l'entity 0

Code : Tout sélectionner

Case "@"
               ;Ajoute un Sol à la position du joueur
               AddEntity(#TSol , #MeshPlain , X , Z , 0)
               ;Création du joueur
               ;Joueur\AngleX = 90
               ;Joueur\OldX = X : Joueur\OldZ = Z
               CreateEntity(0 , MeshID(#MeshCylindre) , MaterialID(#TJoueur))
               ScaleEntity(0 , #TailleEntity , #TailleEntity / 4 , #TailleEntity) 
               EntityLocate(0 , X * #TailleEntity ,  #TailleEntity / 8 , Z * #TailleEntity)
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Sa y est j'ai trouver ou il ya l'Objet, reste plus qua mettre le robot !
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Nouvelle version V002

elle incorpore les modifs de filperj , et 50 niveaux , la gestion est légèrement différente , je n'utilise plus les datas , mais un fichier que je charge dans un bloc mémoire .

http://perso.wanadoo.fr/comtois/Sokoban ... DFORUM.htm
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Ouais, je regarderais sa plus tard Comtois car je pars en Week end !

Sinon, pour le Robot sa avance doucement :p

Aller, bon Week End à tous, et ne programmeZ pas trop :p
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Bon week-end :)

Je viens de l'intégrer le robot , j'étais trop curieux de voir ce que ça donnerait :)
Il reste à s'attaquer aux déplacements !
le robot va imposer un autre mode de gestion que celui que j'avais fait .
En regardant rapidement le fichier skeleton ;j'ai vu qu'il y avait une autre animation "Slump" , est-ce qu'il y en a d'autres ? va falloir que je regarde ça plus attentivement .

Sinon , comment arrêter une animation ? comment savoit laquelle est en cours ? ( à part en mémorisant moi même l'anim en cours ? )

j'ai vu un truc bizarre, quand je change de niveau je lançais à chaque fois l'animation , et l'animation du robot se faisait de plus en plus vite :!:
du coup ; je ne la lance qu'une fois ,et ça va mieux. Bon c'est la première fois que je teste les animations , je n'ai pas encore tout exploré.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Question idiote du jour :oops:
comment tu regarde dans un skeletton?
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

oh très simplement , je l'ai ouvert avec le bloc note en cliquant dessus .
c'est sûrement pas la meilleure solution , mais j'ai pu lire Slump , alors j'ai testé ,et ça marche ,c'est bien une animation :)

J'en ai pas vu d'autres pour l'instant ,faudra que je trouve une façon un peu plus académique de m'y prendre :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Nouvelle version :

Choix du niveau possible à partir du menu
Remplacement du jeton par le robot
Déplacement du robot
Déplacement des caisses , compteur caisse , compteur pas , changement
de niveau en fin de partie.

http://perso.wanadoo.fr/comtois/Sokoban ... DFORUM.htm
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Tricheur! Tu es passé directement de la version 2 à la 4! :lol:

Bon, bon, c'était ma réflexion pertinente du jour...
Je vais voir si j'arrive à trouver mieux demain :roll:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

dans la version 3 il n'y avait que le changement de niveau , d'où ma question sur le inputrequester() :)

Et si on faisait un premier bilan ?

Je liste ici ce qu'il reste à faire ( ça peut être complété ou modifé )
-Ajouter dans le menu Niveau > Recommence le niveau
-Ajouter dans le menu une partie Camera ( sélection d'une vue ? )
-Améliorer la camera , voire ajouter d'autres modes de gestion ?
-Sauvegarde d'une partie
-charge une partie
-Ajout d'une fonction UNDO illimitée .
-Enregistre une solution
-Charge une solution
-Joue une solution
-Enregistrement du meilleur score par niveau et le nom de son auteur
-Ajout d'un mode affichage en 2D avec pathfinding , voir comment le faire en 3D .
-Faire un éditeur de niveau ( il pourra servir à toutes sortes de jeux , autant le penser assez large dans les possibilités , exemple gestion de couches , même si ici ce n'est pas utile)
-Fichier Aide

Voila , si ça inspire quelqu'un qu'il ne se gêne pas :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Tangage de la caméra

Message par comtois »

Pour supprimer l'affreux tangage de la caméra quand on est trop près du robot , ou au dessus , voici la nouvelle fonction :

Dans le fichier fonctions3D

Code : Tout sélectionner

Procedure GestionCamera()
   
   ; Camera\AngleX + 180 => +180° pour placer la camera derrière le perso à la distance Camera\Distance
   PosXCamera.f = NewXValue(EntityX(0) , Camera\AngleX + 180 , Camera\Distance)
   ; on place la caméra légèrement au dessus du perso 
   PosYCamera.f = EntityY(0) + Camera\Hauteur 
   ; Camera\AngleX + 180 => +180° pour placer la camera derrière le perso à la distance Camera\Distance
   PosZCamera.f = NewZValue(EntityZ(0) , Camera\AngleX + 180 , Camera\Distance) 
   ;positionne la caméra 
   CameraLocate(0 , PosXCamera , PosYCamera , PosZCamera)
   ;oriente la caméra en direction du perso
   CameraLookAt(0 , EntityX(0) , EntityY(0) +Camera\AngleY, EntityZ(0))
   
EndProcedure
Dans le fichier Include

Code : Tout sélectionner

Structure Camera
   AngleX.l     ; angle de la camera 
   AngleY.l
   Distance.f ; distance entre la camera et le perso 
   Hauteur.f ; hauteur de la camera 
   ToucheHaut.l 
   ToucheBas.l
   ToucheAvance.l
   ToucheRecul.l
   ToucheAngleHaut.l
   ToucheAngleBas.l
EndStructure

Camera\Hauteur=160 
Camera\Distance=125 
Camera\ToucheHaut=#PB_Key_Pad5
Camera\ToucheBas=#PB_Key_Pad2
Camera\ToucheAvance=#PB_Key_Pad4 
Camera\ToucheRecul=#PB_Key_Pad1 
Camera\ToucheAngleHaut=#PB_Key_PageUp  
Camera\ToucheAngleBas=#PB_Key_PageDown 
tiens en voyant toutes ces touches, ça me fait penser qu'il faudrait prévoir la modification des touches ( configuration et sauvegarde des préférences )

et enfin dans le prog principal
dans la boucle

Code : Tout sélectionner

If ExamineKeyboard()

      If KeyboardPushed(Camera\ToucheHaut) 
         Camera\Hauteur+1 
      ElseIf KeyboardPushed(Camera\ToucheBas) And Camera\Hauteur>0 
         Camera\Hauteur-1 
      EndIf 
      
      If KeyboardPushed(Camera\ToucheAvance) And Camera\Distance>2 
         Camera\Distance-1 
      ElseIf KeyboardPushed(Camera\ToucheRecul) 
         Camera\Distance+1 
      EndIf 
      
      If KeyboardPushed(Camera\ToucheAngleHaut) And Camera\AngleY<180 
         Camera\AngleY+1 
      ElseIf KeyboardPushed(Camera\ToucheAngleBas) And Camera\AngleY>0 
         Camera\AngleY-1 
      EndIf 
Et pour que le robot touche le sol , il faut modifier sa position dans la procedure chargeniveau()

Code : Tout sélectionner

            Case "@"
               ;Ajoute un Sol à la position du joueur
               AddEntity(#TSol , #MeshPlain , X , Z , 0)
               ;Création du joueur
               EntityLocate(0 , X * #TailleEntity ,  0 , Z * #TailleEntity)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

punaise ! il est ou le génie qui a pondu ça ? GLOUPS !

TOTAL RESPECT !!!

suggestions :

- cacher le curseur de la souris
- ou le remplacer par un sprite
- cacher la barre de menu, la faire apparaitre lorsque la souris arrive dans ces environs ( style barre menu démarrer windows )
- utiliser le curseur de la souris pour indiquer des points de passage pour le robot

8O

Pat
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Bon moi par contre j'ai un problème avec Sokoban.

Quelque soit la version, j'ai bien les menu qui fonctionnent mais pour le reste tout est noir.

Carte vidéo Radeon9000, reso 1600x1200.

Je suis le seul ?

JL
Quand on me gonfle trop j'éclate, sinon ça va !
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Patrick88 a écrit : suggestions :

- cacher le curseur de la souris
- ou le remplacer par un sprite
- cacher la barre de menu, la faire apparaitre lorsque la souris arrive dans ces environs ( style barre menu démarrer windows )
- utiliser le curseur de la souris pour indiquer des points de passage pour le robot


Pat
comment on le cache ? en mode plein écran , il n'apparait pas ,donc là pas le choix , faut mettre un sprite, je n'ai pas testé en mettant un sprite si on voyait la souris ? Je suppose qu'il y a une API pour la masquer ?

Pour la barre de menu j'ai testé ,et j'ai un affichage assez curieux !!

Code : Tout sélectionner

   If WindowMouseX() < MenuHeight()
      HideMenu(0,0)
   Else
      HideMenu(0,1)
   EndIf  
Si quelqu'un a une solution , je suis preneur .

Utiliser la souris pour déplacer le robot ? oui j"y songe, mais mon problème c'est de faire la correspondance entre coordonnées 2D de la souris et coordonnées 3D du jeu en tenant compte des angles de la camera !. Sinon , quand il y aura l'affichage 2D , je pourrai le faire ,c'est plus simple :)

Sinon Nouvelle version :

Gestion des solutions ( avec la solution du premier niveau )
par la suite , on pourra s'échanger des fichiers de solutions et faire un tableau des meilleurs scores du forum !

http://perso.wanadoo.fr/comtois/Sokoban ... DFORUM.htm
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Pouaaa, en un Week end, vous avez fait plein de boulot !

Enfin je suis malade, je vais me plonger deds !

Bon je vais m'attaquer à un trruc pas trop dur : L'enregistrement des score et joueurs :p

On se fait sa dans unn fichier txt ou dans une Base de donnée ?

Puis l'éditeur de niveau, faut - il qu'il gère la 3D ? c'est à dire editeur graphique avec des glisser - copier ou juste un petit truc avec les #@ ... ?

Bref, ensuite pour le UNDO illimitéPerso je vois pas de solution !

Ensuite, pour pouvoir enregistrer sa partie, je pense qu'il faudra mettre en correlation le code de l'éditeur et le code de l'enregistrement , enfin ce son des détails ..

Le seul problème, c'est que je me sent inutile dans se projet .. J'ai encore rien fait .. :roll:
Répondre