Page 5 sur 13
Publié : jeu. 04/mars/2004 22:42
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)
Publié : jeu. 04/mars/2004 22:43
par CORBASE
Sa y est j'ai trouver ou il ya l'Objet, reste plus qua mettre le robot !
Publié : jeu. 04/mars/2004 23:25
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
Publié : ven. 05/mars/2004 17:38
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
Publié : ven. 05/mars/2004 22:35
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é.
Publié : ven. 05/mars/2004 22:44
par filperj
Question idiote du jour
comment tu regarde dans un skeletton?
Publié : ven. 05/mars/2004 22:56
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

Publié : sam. 06/mars/2004 21:17
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
Publié : sam. 06/mars/2004 22:15
par filperj
Tricheur! Tu es passé directement de la version 2 à la 4!
Bon, bon, c'était ma réflexion pertinente du jour...
Je vais voir si j'arrive à trouver mieux demain

Publié : sam. 06/mars/2004 23:26
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

Tangage de la caméra
Publié : sam. 06/mars/2004 23:58
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)
Publié : dim. 07/mars/2004 14:30
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
Pat
Publié : dim. 07/mars/2004 18:52
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
Publié : dim. 07/mars/2004 18:57
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
Publié : dim. 07/mars/2004 19:00
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 ..
