Forums Développement Multimédia

Aller au contenu

Deplacement avec la souris

CODE Actionscript

64 réponses à ce sujet

#1 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 13:16 PM

Bonjour à tous,
Depuis ce matin je cherche un tutoriel permettant de créer un système de déplacement avec la souris.
Je m'explique : Il faudrait que, quand je clique a un endroit sur ma carte, le personnage se déplace à cet endroit.

Pour la carte, faut'il que je la créer avec des tuiles ? ou autre ?

Pouvez-vous me donnez des information et/ou des tutoriels ?

Merci

#2 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 21 September 2008 - 16:53 PM

Bonjour et bienvenue chez nous,

Une piste un peu bourrin :

Action Script

this.onLoad = function() {
_global.lx = 0;
_global.ly = O;
_global.vitesse = 15;
};
this.onEnterFrame = function() {
if (lesprite._x>lx) {
lesprite._x -= vitesse;
}
if (lesprite._x<lx) {
lesprite._x += vitesse;
}
if (lesprite._y>ly) {
lesprite._y -= vitesse;
}
if (lesprite._y<ly) {
lesprite._y += vitesse;
}
};
this.onMouseDown = function() {
ly = _ymouse;
lx = _xmouse;
};
this est le niveau _root dans cet exemple...
lesprite est le nom d'un clip (un rond dans l'exemple joint).
Après, c'est à améliorer si on veut se déplacer en ligne droite...

PH

Fichier(s) joint(s)


Modifié par phn, 21 September 2008 - 16:54 PM.


#3 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 21 September 2008 - 17:30 PM

salut et bienvenue sur mediabox

phn: oui un peu bourrin comme script icon_wink.gif

Maxime44: ca depend unpeu de ta carte et de ce que tu cherche a faire
vue de dessus, 3D iso, collection avec des murs, pathfinding...

decris un peu plus ce que tu veux faire icon_wink.gif

a+

#4 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 17:44 PM

Merci de vos réponse,
Enfaite je n'ai pas encore conçu ma carte, je sais comment sa marche mais je cherche un tuto pour la créer.
Sinon j'ai cherche un peu dans différent MMorpg pour vous montrer un peu ce que je veux faire.
Alors ce serais dans ce style la : Lien
Donc depuis peu j'apprends l'ActionScript et je commence à contrôlé Flash 8 car je regarde de nombreux Tutoriel.

Bref dans un premier temps j'aurais aimer créer sur une carte a fond blanc, un point qui servira de personnage, que quand on clique quelque part sur une des tuile de ma carte, qu'il s'y déplace dessus : pas en se téléportant directement mais en "marchant".

Donc voilo si vous avez besoin de plus d'information n'hésitez pas smile.gif Merci

#5 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 21 September 2008 - 17:52 PM

oki, donc tu t'attaque as du lourd, si tu debute en flash ET en programmmation tu vas ramer et y passer pas mal de temps icon_wink.gif

un bon debut pour les tiles based game
http://www.tonypa.pri.ee/tbw/

une fois que tu aura assimilier tout ca tu pourra deja faire un debut de truc

apres faudra aussi gerer le pathfinding (un perso peux pas traverser un mur)

si en plus tu veux gerer le multi jouer faudra te mettre a php ou au xmlSocket (je crois), ou autre chose qui te permet de faire communiquer un serveur avec des swf sur les post client

bref tu va t'amuser icon_wink.gif

je t'encourage a te mettre au classe et à la prog objet
et a télécharger un vrai environnement de dev pour creer tes classes (flashdevelop, eclipse....)

a+

#6 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 18:00 PM

Merci,
donc ok je vais apprendre, de toute facon c'est ce qu'il faut faire, et y'a que ca a faire smile.gif

Pour le PHP, je connais très bien car je fais deja de la programmation de site (xhtml/css/php/très peu javascript)

Citation
je t'encourage a te mettre au classe et à la prog objet
et a télécharger un vrai environnement de dev pour creer tes classes (flashdevelop, eclipse....)


Euuh ?

Je comprend pas icon_rolleyes.gif

#7 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 21 September 2008 - 18:32 PM

Citation
Euuh ?

Je comprend pas


ba tu vas apprendre icon_wink.gif mais pas tout de suite

tu peux tres faire ton projet sans classes, mais ca vas etre vite galere
tu va soit avoir du code sur un seul frame qui gere tout (donc environ 10000 lignes de codes)
soit avoir du code repartie sur plein de clip
dans es 2 cas ca va etre galere a gerer

si tu debute vraiment en flash commence par apprendre les bases de flash, par regarder comment ca marche
regarde comment on gere les clips, comment on gere le ciblage, les fonctions, .....

commence par des truc simples qui prennent 3 minutes

par exemple
tu dessine carre sur ta scene et tu le met dans un clip
tu essai de le faire touner en continue

une fois que tu y arrive, tu essai de passer la vitesse de rotation en parametre, afin que tu puisse la changer avec un textField ou la position de la souris pendant l'animation

apres tu peux t'amsuer a faire rebondir un clip sur les bord de la scene

apres tu peux te compliquer la vie en imbriquant des clips les un dans les autres et en essayant de les faire interargirs


par exemple tu met ta prog de rotation dans un clip, dans un clip dans cli dans clip....
tu te fait un autre clip dans clip dans clip
et dans ce dernier clip tu essai de gerer la vitesse de rotation de ton carre

une fois que tu gerera ca "finger in the noise", tu aurra compris le principal: le ciblage

le principal qui va te permettre de pouvoir entrevoir realiser ton pojet

comme je te les dis tu t'attaque a gros, perso ce que tu montre je sais pas faire


a+

#8 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 18:36 PM

Merci beaucoup !
Bon bah il me reste plus qu'a apprendre toutes les bases de l'actionscript, et a savoir faire des animations dans Flash 8.

Si tu as des tuto, des exercices, ou des cours, je veux bien, car tout les cours bien que je trouve sont en anglais et donc je met plus de temps a lire !

#9 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 21 September 2008 - 18:53 PM

re

http://www.flash-france.com/sections.php?o...les&secid=6

en premier les tutos
" Le guide du débutant en flash...."
ensuite
"Faire ... avec un minimum de code...."

ce sera deja un bon truc
icon_wink.gif

apres y'a aussi les tuto mediabox mais qui demande des fois de connaitre deja un peu flash
http://wiki.mediabox.fr/tutoriaux/flash

a+

#10 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 18:55 PM

Meerci beaucoup je me met au travail !

#11 paodao

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 7081 messages

Posté 21 September 2008 - 19:49 PM

j'ai hate de voir le resultat icon_wink.gif

hesite pas a poster tes avancés ou tes questions icon_wink.gif

et si tu le sent y'a un forum ou on peux poster les jeux en cour de dev
http://flash.mediabox.fr/index.php?showforum=103

si tu a un debut de quelque chose hesite pas icon_wink.gif

a+

#12 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 21 September 2008 - 20:49 PM

Premièrement je vais essayer de créer une carte en tuile et essayé de deplacer un point dedans avec les touche du clavier.

Ensuite j'essayerai de faire un système que le personnage puisse être deplacer avec un clique de souris, puis la je serais déjà content.

Après sa j'essayerais d'intègré un peu de design dans mes tuile voir comment sa se passe, puis de faire aussi un vrai personnage dessiné.

Et la ça sera TIP TOP smile.gif

Puis bien sur apres passer a l'algoritme pour essayer d'eviter les obstacle et ainsi de suite sa commencera a ressemblé a quelque chose de bien smile.gif

Bon vu que j'ai appris toute la journée je m'arrête la pour ce soir, je continuerai demain, je vous tien au courant de mes avancés !

MERCI pour votre aide précieuse

Modifié par Maxime44, 21 September 2008 - 20:51 PM.


#13 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 08:49 AM

Donc voilà j'ai reussis a faire quelque chose de pas mal, on peux deplacer le pion a l'aide de la souris.

Sauf qu'il n'évite rien et que de toute façon il peu sortir de la carte.


PS : Je pense lié ce topic a un nouveau que je vais faire dans Jeux Flash: Développement en commun


Merci a plsu tard

Fichier(s) joint(s)


Modifié par Maxime44, 22 September 2008 - 08:49 AM.


#14 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 22 September 2008 - 09:55 AM

Salut,

Les déplacements ressemblent un peu à ma méthode "bourrin" icon_confused.gif
Il y a un petit écart entre la 3D isométrique de ton premier exemple et cette "grille de mots croisés".
Utilises-tu un array pour gérer la nature de tes cases ?
Moi c'est ce que je ferais. Ensuite je ferais un algo de déplacement de case à case (sur 4 directions ou sur 8, au choix).
Puis un algo de déplacement entre deux cases non concomitantes en utilisant le précédent (à enrichir avec contournement d'obstacle et gestion d'événements).
Ces déplacements devraient être des déplacements "logiques" (dans le array).
Il reste ensuite à faire un moteur d'affichage pour identifier la case cliquée et faire le déplacement visuel (à plat, en 3D et autre).

PH

#15 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 16:37 PM

C'est en effet ta méthode bourrin smile.gif

Ma carte je l'ai faites comme ca :

Action Script

maCarte = [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] ];

persoPos = [1,2];

tuileL = 16;
tuileH = 16;

function constructionCarte (carte) {
var largeurCarte = carte[0].length;
var hauteurCarte = carte.length;
for (var i = 0,d=0; i<hauteurCarte; ++i) {
for (var j = 0; j<largeurCarte; ++j) {
this.attachMovie("tuile", "t_"+i+"_"+j, ++d);
this["t_"+i+"_"+j]._x = (j*tuileL);
this["t_"+i+"_"+j]._y = (i*tuileH);
this["t_"+i+"_"+j].gotoAndStop(carte[i][j]+1);


Pour pour l'algorithme j'en ai entendu parlez, j'ai trouvez une explication mais pas de tutoriel très convaincant.

Pour la 3D isométrique je vais lire un tuto sur le site du zéro, http://www.siteduzero.com/tutoriel-3-719-l...e-a-a-zero.html ca a l'air d'être ca donc c'est vrai que c'est mieu smile.gif Bon je retourne m'instruire !

Modifié par Maxime44, 22 September 2008 - 16:41 PM.


#16 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 22 September 2008 - 16:57 PM

Salut,

Le bourrin est de retour avec un petit swf... A toi de le refaire en mieux ?

PH

Fichier(s) joint(s)



#17 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 17:36 PM

Bon j'ai reussis facilement mon damier 3D isométrique.
Maintenant si j'ai bien compris faut que je fasse un moteur de déplacement avec un algorithme*

Bon... surtout que j'ne trouve pas de tuto :/

J'vais bien trouver et reussir !

Fichier(s) joint(s)



#18 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 22 September 2008 - 17:48 PM

Re,

Un algorithme, c'est un gros mot pour quelque chose de très simple icon_wink.gif
Un exemple : Il était une fois une chaine de production d'où sortaient des cartons. On avait embauché l'idiot du village pour vérifier si on avait un nombre pair ou impair de carton.
Mais cette personne était totalement imperméable au concept de parité. Il fallu alors la "programmer" :
"Tu tends la main avec le pouce en l'air, quand le premier carton passe devant toi, tu tournes ton pouce vers le bas. Puis à chaque carton, tu bascules ton pouce de haut en bas et de bas en haut. A chaque pause, tu nous dis si ton pouce est en bas ou en haut."
Avec cet algorithme, à chaque pause, on savait si on avait un nombre pair ou impair de cartons...

Et comme les ordinateurs sont plus faciles à programmer que les idiots du village, l'algorithmique, c'est facile !
En gros, c'est une suite logique d'instructions élémentaires.
Une bonne façon de programmer, c'est d'écrire en langage simple et naturel chaque opération élémentaire, puis de transformer tout ça en lignes de commentaires, puis de coder entre les lignes.
Comme ça on produit un code déjà commenté...

PH

Modifié par phn, 22 September 2008 - 17:49 PM.


#19 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 17:54 PM


icon_eek.gif gourou.gif
Merci de m'avoir expliquer comment faire, mais les codes ?
Faut que j'utilise quoi comme balise/fonctions?

#20 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 19:07 PM

J'ai chercher longtemps aucun tuto en français est très complet icon_cry.gif

#21 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 20:51 PM

J'attend votre aide car je suis bloqué, j'ai beau faire une multitudes de recherches... rien e bien concluant .

#22 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 22:46 PM

Bon j'ai trouvez un script sur internet qui n'était pas en 3D isométrique mais qui contenais un script de Pathfinder.
Alors j'ai changer pas mal de truc, notamment les dessins et le Actionscript.

Sauf que, comme vous pouvez le constatez, les cases en blanches ne sont pas actives ( d'ailleurs aucun de mes dessins sont des case blanche, c'est des endroit de vide sad.gif

Si vous pouviez regarder ou me dire ce qui ne va pas smile.gif

J'ai beaucoup travaillé mais la je sèche smile.gif


Lien de téléchargement du dossier du jeu (il contient plusieurs fichiers)



Merci bandit.gif




#23 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 22 September 2008 - 23:52 PM

Comme tu as beaucoup travaillé... je te donne du travail en plus icon_razz.gif
Voici un peu de code à digérer (mais il est commenté, c'est pourquoi il comporte beaucoup de lignes).

Ce code fonctionne si tu le places dans la première image clé d'une animation vide.
Ensuite, à toi de l'adapter...

Action Script

this.onLoad = function() {
// créer 4 clips : losange = dessin du damier. lacible = but pour lesprite. pointeur = sous la souris
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
this.createEmptyMovieClip("lacible", this.getNextHighestDepth());
this.createEmptyMovieClip("pointeur", this.getNextHighestDepth());
this.createEmptyMovieClip("lesprite", this.getNextHighestDepth());
// origx et origy = coin supérieur gauche du damier
origx = 20;
origy = 20;
// larg et haut = largeur et hauteur d'une case
larg = 50;
haut = 50;
// decalh = décalage horizontal de la base d'une case : transforme le carré en losange
decalh = 30;
// appelle fonction dessine_case pour dessiner la cible, le pointeur et le sprite
dessine_case("lacible", 0, 0, larg, haut, decalh, 0xFFFF00);
dessine_case("pointeur", 0, 0, larg, haut, decalh, 0x00FF00);
dessine_case("lesprite", 0, 0, larg, haut, decalh, 0xFF0000);
// place lesprite et lacible à l'origine du damier
lesprite._x = origx;
lesprite._y = origy;
lacible._x = origx;
lacible._y = origy;
// rends le pointeur transparent à 20%
pointeur._alpha = 20;
// deux boucles for imbriquées : dessine les cases du damier 15 x 7 cases (i et j)
for (i=1; i<15; i++) {
// dessine une ligne de cases
dessine_case("losange", origx+(i*larg), origy, larg, haut, decalh, 0xFFFFFF);
for (j=1; j<7; j++) {
// dessine une colonne
dessine_case("losange", origx+(i*larg)-(decalh*j), origy+(j*haut), larg, haut, decalh, 0xFFFFFF);
}
}
// crée un interval de temps (ici 200 millisecondes et appelle une fonction à chaque intervale
intervalId = setInterval(this, "executeCallback", 100);
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, decalh, couleur) {
// choix couleur de remplissage
this[nom].beginFill(couleur, 100);
// choix couleur de contour
this[nom].lineStyle(1, 0x000000, 100);
// se placer dans le coin supérieur gauche
this[nom].moveTo(origx, origy);
// tirer une ligne sur chaque angle pluis retour
this[nom].lineTo(origx+larg, origy);
this[nom].lineTo(origx+larg-decalh, origy+haut);
this[nom].lineTo(origx-decalh, origy+haut);
this[nom].lineTo(origx, origy);
this[nom].endFill();
}
//
// quand évènement mouse down sur this, ç-à-d sur le swf
//
this.onMouseDown = function() {
// déplacer la cible sous le pointeur
lacible._x = pointeur._x;
lacible._y = pointeur._y;
};
//
// quand évènement déplacement de mouse sur this, ç-à-d sur le swf
//
this.onMouseMove = function() {
// trouve la case, depuis la case 0,0 (coin sup gauche) vers case 14,6 (15e colonne, 7e ligne)
lacasey = Math.floor((_ymouse-origy)/haut);
// prendre en compte le décalage en X selon le nombre de lignes en Y
lacasex = Math.floor((_xmouse-origx+(decalh*lacasey))/larg)-1;
// placer le pointeur sur la bonne case
pointeur._x = origx+((lacasex+1)*larg)-(decalh*lacasey);
pointeur._y = (origy+(lacasey*haut));
// en testant, on voit un bug : la case pointée n'est pas forcément pile sous la souris
};
//
// fonction qui s'éxécute à chaque interval du setInterval
//
function executeCallback() {
// si lesprite est à gauche de la cible
if (lacible._x>lesprite._x) {
lesprite._x += larg;
// si lesprite est à droite
} else if (lacible._x<lesprite._x) {
lesprite._x -= larg;
}
// si lesprite est au dessus
if (lacible._y>lesprite._y) {
lesprite._y += larg;
// gère le décalage, ç-à-d l'italisation de la case
lesprite._x -= decalh;
// si lesprite est en dessous de la cible
} else if (lacible._y<lesprite._y) {
lesprite._y -= larg;
lesprite._x += decalh;
}
}

PH

Modifié par phn, 22 September 2008 - 23:55 PM.


#24 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 22 September 2008 - 23:57 PM

Euh je la met en plus et je l'adapte ou bien, sa va servir a remplacer quelque chose icon_question.gif
Merci smile.gif gourou.gif gourou.gif gourou.gif

#25 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 23 September 2008 - 00:03 AM

Je me relis et je vois un bug qui m'avait échappé icon_redface.gif

A la fin du code, je gère les déplacements en hauteur avec... larg

Action Script

lesprite._y -= larg;
serait certainement mieux avec

Action Script

lesprite._y -= haut;

Comme j'ai testé avec larg=haut, ça ne bug pas, mais ce n'est pas une raison pour ne pas le corriger... le ver est dans le fruit !

PH

#26 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 23 September 2008 - 09:18 AM

Coucou,

Cette nuit, j'ai eu une autre idée pour gérer l'italisation des cases.
Voilà ce que ça donne...

PH

Fichier(s) joint(s)



#27 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 23 September 2008 - 17:10 PM

Voilà c'est ca l'orientation qu'il me faut avec plus de case mais plus petite !

Peut-tu m'envoyer le code source de ton dernier SWF stp ?

#28 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 24 September 2008 - 05:57 AM

Hello,

Action Script

//
// initialisations
//
this.onLoad = function() {
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
losange.createEmptyMovieClip("lacible", losange.getNextHighestDepth());
losange.createEmptyMovieClip("pointeur", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lesprite", losange.getNextHighestDepth());
origx = 20;
origy = -200;
larg = 20;
haut = 20;
for (i=1; i<35; i++) {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
for (j=1; j<27; j++) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
}
}
dessine_case(losange.lacible, 0, 0, larg, haut, 0xFFFF00);
dessine_case(losange.lesprite, 0, 0, larg, haut, 0x00FF00);
dessine_case(losange.pointeur, 0, 0, larg, haut, 0xFF0000);
intervalId = setInterval(this, "deplace_sprite", 50);
// tourne et incline le damier
var my_matrix:Object = losange.transform.matrix;
my_matrix.c = -0.5;
my_matrix.rotate(0.5);
losange.transform.matrix = my_matrix;
this.createTextField("my_txt", 1, 10, 10, 300, 100);
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, couleur) {
nom.beginFill(couleur, 100);
nom.lineStyle(1, 0xAAAAAA, 100);
nom.moveTo(origx, origy);
nom.lineTo(origx+larg, origy);
nom.lineTo(origx+larg, origy+haut);
nom.lineTo(origx, origy+haut);
nom.lineTo(origx, origy);
nom.endFill();
}
//
// quand on bouge la souris
//
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "case "+(lacasex-2)+","+(lacasey+2);
};
//
// quand on clique
//
this.onMouseDown = function() {
losange.lacible._x = losange.pointeur._x;
losange.lacible._y = losange.pointeur._y;
};
//
// bouge le sprite à la vitesse de l'intervale
//
function deplace_sprite() {
if (losange.lacible._x>losange.lesprite._x) {
losange.lesprite._x += larg;
} else if (losange.lacible._x<losange.lesprite._x) {
losange.lesprite._x -= larg;
}
if (losange.lacible._y>losange.lesprite._y) {
losange.lesprite._y += haut;
} else if (losange.lacible._y<losange.lesprite._y) {
losange.lesprite._y -= haut;
}
}

PH

#29 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 24 September 2008 - 18:36 PM

Coucou icon_biggrin.gif

Bon j'ai bien étudié ton code et j'ai bien compris comment ça marchais et grâce à tes commentaire,
je sais que tel bout de code sert à tel truc gourou.gif



Par contre je savais changer les images des tuiles avec les symboles mais maintenant que c'est entièrement en ActionScript,
je sais juste changer la couleur mais je ne sais pas comment mettre une image à la place de la couleur
Aussi, avant j'avais une variable

maCarte = [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] ];



qui me permettait de placer tel type de tuiles ici ou là.
J'ai plus ça donc je sais pas comment les placer une fois que je saurais changer les dessins.





Enfin, j'aimerais savoir si c'était possible de faire une sorte de paramètre qui dit de faire une animation de maximum 800x600 et pas plus car la j'ai beau modifier la taille de l'animation, le joueur peux allez n'importe ou et sortir des tuiles.

La fenêtre pourrait s'ouvrir à fond mais que l'animation se centre au milieu de l'écran en 800x600 mais un truc aussi, la ça fais un parallélépipède, j'aimerais que sa fasse un rectangle du genre (pièce jointe).


Merci beaucoup de te pencher sur mon sujet, il y a 3 jours je ne savais rien faire et grâce à toi j'apprends très vite !
Merci encore de ton aide si précieuse, je sais pas ce que j'aurais fais sans toi oO

Fichier(s) joint(s)

  • Fichier joint  test.png   185.16 Ko   20 téléchargement(s)


#30 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 24 September 2008 - 20:45 PM

Salut,

Voici la livraison du soir :

Action Script

//
// initialisations
//
this.onLoad = function() {
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
losange.createEmptyMovieClip("lacible", losange.getNextHighestDepth());
losange.createEmptyMovieClip("pointeur", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lesprite", losange.getNextHighestDepth());
origx = 20;
origy = -200;
larg = 20;
haut = 20;
for (i=1; i<35; i++) {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
for (j=1; j<27; j++) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
}
}
dessine_case(losange.lacible, 0, 0, larg, haut, 0xFFFF00);
dessine_case(losange.lesprite, 0, 0, larg, haut, 0x00FF00);
dessine_case(losange.pointeur, 0, 0, larg, haut, 0xFF0000);
intervalId = setInterval(this, "deplace_sprite", 50);
// tourne et incline le damier
var my_matrix:Object = losange.transform.matrix;
my_matrix.c = -0.5;
my_matrix.rotate(0.5);
losange.transform.matrix = my_matrix;
this.createTextField("my_txt", 1, 10, 10, 300, 100);
// les trois lignes suivantes masquent le clip "losange"
this.createEmptyMovieClip("lemasque", this.getNextHighestDepth());
dessine_case(lemasque,50,50,550-100,400-100,0x999999);
losange.setMask("lemasque");
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, couleur) {
nom.beginFill(couleur, 100);
nom.lineStyle(1, 0xAAAAAA, 100);
nom.moveTo(origx, origy);
nom.lineTo(origx+larg, origy);
nom.lineTo(origx+larg, origy+haut);
nom.lineTo(origx, origy+haut);
nom.lineTo(origx, origy);
nom.endFill();
}
//
// quand on bouge la souris
//
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "case "+(lacasex-2)+","+(lacasey+2);
};
//
// quand on clique
//
this.onMouseDown = function() {
losange.lacible._x = losange.pointeur._x;
losange.lacible._y = losange.pointeur._y;
};
//
// bouge le sprite à la vitesse de l'intervale
//
function deplace_sprite() {
if (losange.lacible._x>losange.lesprite._x) {
losange.lesprite._x += larg;
} else if (losange.lacible._x<losange.lesprite._x) {
losange.lesprite._x -= larg;
}
if (losange.lacible._y>losange.lesprite._y) {
losange.lesprite._y += haut;
} else if (losange.lacible._y<losange.lesprite._y) {
losange.lesprite._y -= haut;
}
}
Trois lignes de rajoutées pour résoudre ton problème de rectangle...
C'est le secret de l'instruction setMask !
Au passage, je pervertis ma fonction dessine_case et m'en sers pour dessiner le fameux rectangle.

Plus dur, réussir à empêcher ton sprite de sortir du champ...
Une façon (un peu bourrin) serait de tester si la case a un attribut 0 dans ton array maCarte lors de chaque déplacement (fonction deplace_sprite).
Pour cela, il faut faire une fonction qui traduit les coordonnées du sprite en couple de coordonnées "case".
(c'est un peu ce qui se passe sur le mouseMove !)
Ensuite on teste si la case sur laquelle est arrivé le sprite est libre (O ou 1 dans maCarte).
Si elle est libre : RAS, si elle ne l'est pas, on récupère les coordonnée _x et _y du sprite avant le déplacement (donc on commence par le mémoriser avant de bouger, bien sûr !) et on remet lesprite et lacible sur cette case précédente.
Donc le mouvement s'arrête...
Rassure-toi, c'est presque aussi facile à coder qu'à penser !

Placer une image à la place de la couleur ? Imagine que tu mettes l'_alpha de "losange" à 0, tout disparait ! Mais les coordonnées restent ! Donc il suffit de déplacer n'importe quel beau dessin au même endroit que "lesprite" pour customiser tout ça...

Hum... Ça fait beaucoup tout ça ! Vas-y en douceur, étape par étape, et on verra ton projet se batir pour notre plus grand plaisir.
Au passage, je ne te cache pas que tout ce que je code pour toi ici, je le réutiliserai peut-être bientôt pour un jeu de programmation de déplacement (du genre : programmer des actions simples pour envoyer un "robot" vers un but sur une carte). Donc pas de scrupule : tous les appels à l'aide ne sont pas des abus dans ce forum. Ce sont des profits que tous partagent...
(note pour Jano : celle la, je m'en vais me la placer en signature icon_wink.gif car elle résume bien la façon dont je vis ce forum, et plus particulièrement celle que m'inspire ses contributions)

PH

Fichier(s) joint(s)


Modifié par phn, 24 September 2008 - 20:46 PM.


#31 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 24 September 2008 - 21:26 PM

Merci beaucoup :')

Bon alors, étapes 1,

Citation
Plus dur, réussir à empêcher ton sprite de sortir du champ...
Une façon (un peu bourrin) serait de tester si la case a un attribut 0 dans ton array maCarte lors de chaque déplacement (fonction deplace_sprite).
Pour cela, il faut faire une fonction qui traduit les coordonnées du sprite en couple de coordonnées "case".
(c'est un peu ce qui se passe sur le mouseMove !)
Ensuite on teste si la case sur laquelle est arrivé le sprite est libre (O ou 1 dans maCarte).
Si elle est libre : RAS, si elle ne l'est pas, on récupère les coordonnée _x et _y du sprite avant le déplacement (donc on commence par le mémoriser avant de bouger, bien sûr !) et on remet lesprite et lacible sur cette case précédente.
Donc le mouvement s'arrête...
Rassure-toi, c'est presque aussi facile à coder qu'à penser !


Bon a vu d'œil, je ne vois vraiment pas comment faire, mais je vais tester, essayer, espérer ...
Et c'est en se trompant qu'on apprend smile.gif


Citation
tous les appels à l'aide ne sont pas des abus dans ce forum. Ce sont des profits que tous partagent...
gourou.gif

#32 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 24 September 2008 - 22:15 PM

Bon j'arrive pas a faire de code qui marche donc je vais exposer le truc.

C'est un peu comme

Action Script

 
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "Position "+(lacasex-2)+","+(lacasey+2);
};

C'est vrai car si j'ai bien compris ce code, c'est lui qui trouve les coordonnées des case grâce au coordonnées de la souris.

Bon alors, ce qu'on veut faire c'est de transformer les coordonnée de la souris en coordonnées de la case ( donc on peut même dire que c'est la même chose a quelques choses près)

A partir de la je sais pas pas comment faire, car j'ai pas la syntaxe enfaite, c'est ça qui me manque.

J'ai beau chercher, même sur internet et dans le code qui existe, il me manque de sérieux éléments.

En plus, je comprend pas puisque j'ai pas de array, je l'avais avant quand mes tuile étais des Symbole.

Je dois être sacrément nul, mais j'ai vraiment envi de savoir, mais y'a un gros blocage, c'est plus dur que mes faible connaissances sad.gif icon_redface.gif

Pour toi sa doit être relativement simple et je rêverai d'avoir la même simplicité que toi à trouver cette maudite fonction.


Pour le dessin, enfaite se serai pas un dessin par tuile et a la fin sa forme la carte c'est carrément le dessin de la map, et par dessus y'a les tuiles, transparente. C'est bien ca ?


En tout cas merci smile.gif

Modifié par Maxime44, 24 September 2008 - 22:18 PM.


#33 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 25 September 2008 - 07:46 AM

Salut,

Tu es plus proche de la solution que tu ne le penses...
Citation
Pour le dessin, enfaite se serai pas un dessin par tuile et a la fin sa forme la carte c'est carrément le dessin de la map, et par dessus y'a les tuiles, transparente. C'est bien ca ?

Tout à fait exact !

Action Script

      lacasey = Math.floor(losange._ymouse/haut);  
lacasex = Math.floor(losange._xmouse/larg);
_ymouse est la position de la souris.
losange._ymouse est la position de la souris en prenant comme origine le point 0,0 de "losange"

lacasey et lacasex permettent de trouver les indices des cases dans le tableau.
Il y a des ajustements à faire puisque la matrice de case n'est pas carrée, 3D isométrique oblige.
Une solution, c'est d'avoir un Array plus grand que ce qui est visible...

Donc pour résumer :
- faire un Array plus grand
- créer un système de déplacement basé sur des cases autorisées ou interdites

Ensuite peaufiner l'habillage de l'ensemble :
- rendre invisible les clips "mécanique"
- placer un joli fond
- choisir un habillage pour le sprite et pour les cases évènement...

PH


#34 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 25 September 2008 - 18:07 PM

icon_cry.gif
Désolé je n'arrive pas à finaliser le truc, je m'embrouille, je sais pas comment faire, je sais comment faire en parlant français mais pas en parlant AS ^^

C'est bête, j'essaye depuis 2H je tente plein de truc(qui ne tente rien n'a rien).

Mais bon, p'tet que j'ai plus de mal que d'autre a débuter mais bon, c'est pas très grave parce que j'ai l'envie icon_razz.gif





#35 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 25 September 2008 - 21:21 PM

Salut,

Réponse du soir... espoir ! Et chose amusante, ce thread en était à son 33 post pour sa 333e lecture icon_wink.gif
Finiras-tu ton projet en 3 coups ? J'en doute, mais l'essentiel est de progresser à chaque nouvelle étape.

Si tu sais comment faire ton programme en parlant français, il n'y a aucun problème pour le faire en AS !
Applique le deuxième principe du discours de la méthode du vieux René (Descartes) :
"Le second, de diviser chacune des difficultés que j'examinerais, en autant de parcelles qu'il se pourrait, et qu'il serait requis pour les mieux résoudre."
René aurait pu breveter la notion d'instruction élémentaire !

Souvent, ce qui bloque dans la conception d'un programme, c'est de se reposer sur une formulation qui s'appuie sur de la logique floue. Par exemple : "transformer les coordonnée de la souris en coordonnées de la case".
Je t'ai donné les principes pour y arriver, mais il faut décomposer assez finement ("diviser chacune des difficultés").

Voila mon code modifié pour transformer les coordonnées du sprite en coordonnées de l'Array (lignes 70-71) et un exemple d'immobilisation du sprite face à un obstacle (lignes 83-85). Ici, j'ai pris le pointeur comme obstacle. Si tu fais venir le sprite vers la case jaune, tu peux le bloquer en chemin avec le pointeur rouge.

Action Script

//
// initialisations
//
this.onLoad = function() {
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
losange.createEmptyMovieClip("lacible", losange.getNextHighestDepth());
losange.createEmptyMovieClip("pointeur", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lesprite", losange.getNextHighestDepth());
origx = 20;
origy = -200;
larg = 20;
haut = 20;
for (i=1; i<35; i++) {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
for (j=1; j<27; j++) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
}
}
dessine_case(losange.lacible, 0, 0, larg, haut, 0xFFFF00);
dessine_case(losange.lesprite, 0, 0, larg, haut, 0x00FF00);
dessine_case(losange.pointeur, 0, 0, larg, haut, 0xFF0000);
intervalId = setInterval(this, "deplace_sprite", 200);
// tourne et incline le damier
var my_matrix:Object = losange.transform.matrix;
my_matrix.c = -0.5;
my_matrix.rotate(0.5);
losange.transform.matrix = my_matrix;
this.createTextField("my_txt", 1, 10, 10, 300, 100);
// les trois lignes suivantes masquent le clip "losange"
this.createEmptyMovieClip("lemasque", this.getNextHighestDepth());
dessine_case(lemasque, 50, 50, 550-100, 400-100, 0x999999);
losange.setMask("lemasque");
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, couleur) {
nom.beginFill(couleur, 100);
nom.lineStyle(1, 0xAAAAAA, 100);
nom.moveTo(origx, origy);
nom.lineTo(origx+larg, origy);
nom.lineTo(origx+larg, origy+haut);
nom.lineTo(origx, origy+haut);
nom.lineTo(origx, origy);
nom.endFill();
}
//
// quand on bouge la souris
//
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "case "+(lacasex-2)+", "+(lacasey+2);
};
//
// quand on clique
//
this.onMouseDown = function() {
losange.lacible._x = losange.pointeur._x;
losange.lacible._y = losange.pointeur._y;
};
//
// bouge le sprite à la vitesse de l´intervale
//
function deplace_sprite() {
// trouve la case actuelle du sprite
lacasey = Math.floor(losange.lesprite._y/haut);
lacasex = Math.floor(losange.lesprite._x/larg);
// mémorise cette case
if (losange.lacible._x>losange.lesprite._x) {
losange.lesprite._x += larg;
} else if (losange.lacible._x<losange.lesprite._x) {
losange.lesprite._x -= larg;
}
if (losange.lacible._y>losange.lesprite._y) {
losange.lesprite._y += haut;
} else if (losange.lacible._y<losange.lesprite._y) {
losange.lesprite._y -= haut;
}
// s'arrete si bute sur le pointeur (pour test)
if ((losange.lesprite._x == losange.pointeur._x) and (losange.lesprite._y == losange.pointeur._y)) {
losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;
}
}

Ca fait 5 lignes de codes à découvrir...

Bon courage.

PH

Modifié par phn, 25 September 2008 - 21:22 PM.


#36 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 25 September 2008 - 21:44 PM

Est ce que c'est possible de le faire arrêté en butant le masque ?
Ou alors faut t'il que j'arrive à localisé les cases autour ?

#37 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 25 September 2008 - 22:08 PM

Action Script

if ((losange.lesprite._x == losange.setMask("lemasque")._x) and (losange.lesprite._y == losange.setMask("lemasque")._y))
{

losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;

Action Script

if ((losange.lesprite._x == losange.lemasque._x) and (losange.lesprite._y == losange.lemasque._y))
{

losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;



J'aurai essayé mais sa ne marche pas ^^

#38 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 25 September 2008 - 23:01 PM

Action Script

  for (i=1; i<35; i++) { 
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
dessine_case(losange.obstacle, origx+(i*larg), origy, larg, haut, 0x000000);
for (j=1; j<27; j++) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
dessine_case(losange.obstacle, origx, origy+(j*haut), larg, haut, 0x000000);


Bon j'ai créer un nouveau clip losange.obstacle j'ai réussis a le mettre autour pour faire une limitation, mais enfaite j'ai seulement réussis a couvrir la moitié du périmètre (voir cases noire fichier join) :/

J'ai enlever le cache pour voir les case noir wink.gif mais je vais le remettre




Bon ensuite j'ai voulu dire au sprite que les cases losange.obstacle sont des obstacle justement donc j'ai mis :

Action Script

if (
(losange.lesprite._x == losange.obstacle._x) and (losange.lesprite._y == losange.obstacle._y))
{
losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;
}


Mais sa ne marche pas :/ comment sa se fais ?



Code complet :

Action Script

 // 
// initialisations
//
this.onLoad = function() {
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
losange.createEmptyMovieClip("obstacle", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lacible", losange.getNextHighestDepth());
losange.createEmptyMovieClip("pointeur", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lesprite", losange.getNextHighestDepth());

origx = 20;
origy = -200;
larg = 20;
haut = 20;
for (i=1; i<35; i++) {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
dessine_case(losange.obstacle, origx+(i*larg), origy, larg, haut, 0x000000);
for (j=1; j<27; j++) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
dessine_case(losange.obstacle, origx, origy+(j*haut), larg, haut, 0x000000);
}
}
dessine_case(losange.lacible, 0, 0, larg, haut, 0xFFFF00);
dessine_case(losange.lesprite, 0, 0, larg, haut, 0x000000);
dessine_case(losange.pointeur, 0, 0, larg, haut, 0xFF0000);


intervalId = setInterval(this, "deplace_sprite", 250);
// tourne et incline le damier
var my_matrix:Object = losange.transform.matrix;
my_matrix.c = -0.5;
my_matrix.rotate(0.5);
losange.transform.matrix = my_matrix;
this.createTextField("my_txt", 1, 10, 10, 300, 100);
// les trois lignes suivantes masquent le clip "losange"

dessine_case(lemasque, 50, 50, 550-100, 400-100, 0x999999);
losange.setMask("lemasque");
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, couleur) {
nom.beginFill(couleur, 100);
nom.lineStyle(1, 0xAAAAAA, 100);
nom.moveTo(origx, origy);
nom.lineTo(origx+larg, origy);
nom.lineTo(origx+larg, origy+haut);
nom.lineTo(origx, origy+haut);
nom.lineTo(origx, origy);
nom.endFill();
}
//
// quand on bouge la souris
//
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "case "+(lacasex-2)+", "+(lacasey+2);
};
//
// quand on clique
//
this.onMouseDown = function() {
losange.lacible._x = losange.pointeur._x;
losange.lacible._y = losange.pointeur._y;
};
//
// bouge le sprite à la vitesse de l´intervale
//
function deplace_sprite() {
// trouve la case actuelle du sprite
lacasey = Math.floor(losange.lesprite._y/haut);
lacasex = Math.floor(losange.lesprite._x/larg);
// mémorise cette case
if (losange.lacible._x>losange.lesprite._x) {
losange.lesprite._x += larg;
} else if (losange.lacible._x<losange.lesprite._x) {
losange.lesprite._x -= larg;
}
if (losange.lacible._y>losange.lesprite._y) {
losange.lesprite._y += haut;
} else if (losange.lacible._y<losange.lesprite._y) {
losange.lesprite._y -= haut;
}
// s´arrete si bute sur le pointeur (pour test)
if ((losange.lesprite._x == losange.pointeur._x) and (losange.lesprite._y == losange.pointeur._y)) {
losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;



}
if (
(losange.lesprite._x == losange.obstacle._x) and (losange.lesprite._y == losange.obstacle._y))
{
losange.lacible._x = lacasex*larg;
losange.lacible._y = lacasey*haut;
}
}

Fichier(s) joint(s)


Modifié par Maxime44, 25 September 2008 - 23:03 PM.


#39 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 26 September 2008 - 05:54 AM

Salut,

Je crois qu'il va falloir mettre un peu d'ordre dans tout ça icon_wink.gif

Premier conseil : réutilise ton array en l'adaptant.

Ça :
11111111111111111111
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
10000000000000000001
11111111111111111111
ça va bien tant que ton damier n'est pas déformé par la 3D isométrique.

Ça :
11111111111111111111
11111110000001111111
11110000000000001111
10000000000000000001
11110000000000001111
11111110000001111111
11111111111111111111
c'est une bonne piste à affiner en fonction de ton affichage

Pour vérifier si ton Array correspond bien à ce que tu affiches, tu pourras dessiner en noir les cases obstacles
comme tu l'as fait dans ton dernier code, mais avec un if(my_array[i][j]==1){//...} avant.

Ensuite, pour les déplacements, ce sera un if(my_array[lacasex][lacasey]==1){//...} qui te permettra de bloquer ton sprite.

Ta première mission : remettre un array dans l'initialisation, et s'en servir pour tracer les obstacles.
Attention, il y a un décalage dans les lacasex et lacasey, le coin supérieur gauche est en +2,-8, donc il faut se recaler avant d'utiliser lacasex et y...

PH

#40 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 26 September 2008 - 20:55 PM

Ok j'ai compris,

La tuile je la créer avec flash ou alors je la fat avec la fonction dessine_case ?

Merci

#41 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 26 September 2008 - 23:13 PM

Bon ben j'ai essayer en la créer sans action script mais en faisant le dessin avec flash car j'arrivais pas a créer de symbole avec actionscript, pourtant je faisait la même démarche qu'avec les autre symbole mais c'est bizarre.

Donc j'ai pas beaucoup mieux réussis en créer le dessin, je suis déçu de moi.

Action Script

this.onLoad = function() { 
this.createEmptyMovieClip("tuile", this.getNextHighestDepth());
}


maCarte = [[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1] ];


tuileL = 27;
tuileH = 27;



function constructionCarte (carte) {
var largeurCarte = carte[0].length;
var hauteurCarte = carte.length;
for (var i = 0,d=0; i<hauteurCarte; ++i) {
for (var j = 0; j<largeurCarte; ++j) {
this.attachMovie("tuile", "t_"+i+"_"+j, ++d);
this["t_"+i+"_"+j]._x = (j*tuileL);
this["t_"+i+"_"+j]._y = (i*tuileH);
this["t_"+i+"_"+j].gotoAndStop(carte[i][j]+1);
}}}
constructionCarte (maCarte);




Car c'est impossible de créer exactement la même case que les symboles déjà présent.

Donc la piece jointe c'est une page apart mon programme car je savais pas trop ce que je faisant, les losange blancs recouvrais ceux de ce code, alors j'ai séparé pour le moment pour voir comment faire.

Bref après j'ai essayer de créer les case noir avec la fonction dessine_case, en créant un symbole obstacle.

Action Script

losange.createEmptyMovieClip("obstacle", losange.getNextHighestDepth());

Puis :

Action Script

dessine_case(losange.obstacle, 0, 0, larg, haut, 0x000000); 


Aucun losange noir ne s'affiche :/

Malgres le array :

Action Script

maCarte = 
[[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1] ];


obstacleL = 20;
obstacleH = 20;

function constructionCarte (carte) {
var largeurCarte = carte[0].length;
var hauteurCarte = carte.length;
for (var i = 0,d=0; i<hauteurCarte; ++i) {
for (var j = 0; j<largeurCarte; ++j) {
losange.attachMovie("obstacle", "t_"+i+"_"+j, ++d);
losange["t_"+i+"_"+j]._x = (j*obstacleL);
losange["t_"+i+"_"+j]._y = (i*obstacleH);
losange["t_"+i+"_"+j].gotoAndStop(carte[i][j]+1);
}}}
constructionCarte (maCarte);


Bon ben, j'trouve ça assez étrange quand même :/
Surtout que bon j'ai essayer plusieurs chose (remplacer losange. par this., et plein de truc)
Ben j'ai encore travaillé 3 heures dessus sans avancé ^^'

Mais bon je suis pas a 3 heures près heureusement, et je pense quand même en tirer profit de tout ça !
Même si j'arrive a pas grand chose (pour ne pas dire à rien), ben peut-être que je m'améliore, et je l'espère !
Encore une mission échouée :/



Merci, et bonne nuit smile.gif grace mat' demain smile.gif

#42 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 26 September 2008 - 23:37 PM

Coucou, un fois n'est pas coutume j'ai lamentablement échoué icon_sad.gif

Comme je ne savais pas si il fallait que j'utilise la fonction dessine_case ou si il fallait que je fasse moi-même le dessin,
J'ai essayé les deux smile.gif mais j'ai réussis avec aucun icon_confused.gif

Donc j'ai juste essayé de créer et de placer les cases, sans en faire des obstacles pour le moment.

1/En créant le symbole via flash

J'ai essayé de créer un symbole d'un losange. Afin de pouvoir le placer dans mon aray (car je sais comment faire).
Je créer mon petit losange noir et commence à coder :

Action Script

this.onLoad = function() { 
this.createEmptyMovieClip("tuile", this.getNextHighestDepth());
}


maCarte = [[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1] ];


tuileL = 27;
tuileH = 27;



function constructionCarte (carte) {
var largeurCarte = carte[0].length;
var hauteurCarte = carte.length;
for (var i = 0,d=0; i<hauteurCarte; ++i) {
for (var j = 0; j<largeurCarte; ++j) {
this.attachMovie("tuile", "t_"+i+"_"+j, ++d);
this["t_"+i+"_"+j]._x = (j*tuileL);
this["t_"+i+"_"+j]._y = (i*tuileH);
this["t_"+i+"_"+j].gotoAndStop(carte[j]+1);
}}}
constructionCarte (maCarte);




J'ai vite remarqué que c'était quasiment impossible, de placer ceux-ci exactement comme les losanges fait avec dessine_case.
D'une, mes losange n'était pas droit et de deux, mal formés icon_cry.gif J'ai donc essayé avec la deuxième solution, qui me semblait plus juste icon_biggrin.gif



[i]2/ Avec la fonction dessine_case


Je créer un symbole "obstacle"

Action Script

losange.createEmptyMovieClip("obstacle", losange.getNextHighestDepth());


J'utilise un array, ainsi que la fonction constructionCarte pour afficher le symbole "Obstacle"

Action Script

maCarte = 
[[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1],
[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1],
[1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1] ];


obstacleL = 20;
obstacleH = 20;

function constructionCarte (carte) {
var largeurCarte = carte[0].length;
var hauteurCarte = carte.length;
for (var i = 0,d=0; i<hauteurCarte; ++i) {
for (var j = 0; j<largeurCarte; ++j) {
losange.attachMovie("obstacle", "t_"+i+"_"+j, ++d);
losange["t_"+i+"_"+j]._x = (j*obstacleL);
losange["t_"+i+"_"+j]._y = (i*obstacleH);
losange["t_"+i+"_"+j].gotoAndStop(carte[j]+1);
}}}
constructionCarte (maCarte);



[i]3/ Résultat

Action Script

Ca ne marche pas !

Bon ben, j'trouve ça assez étrange quand même :/
Surtout que bon j'ai essayer plusieurs chose (remplacer losange. par this., et plein de truc)
Ben j'ai encore travaillé 3 heures dessus sans avancé ^^'

Mais bon je suis pas a 3 heures près heureusement, et je pense quand même en tirer profit de tout ça !
Même si j'arrive a pas grand chose (pour ne pas dire à rien), ben peut-être que je m'améliore, et je l'espère !
Encore une mission échouée :/
A demain pour de nouvelles aventures icon_eek.gif


Merci, j'vais continuer à y réfléchir un peu, dans mon lit, bonne nuit et à bientôt (le plus tôt possible;-))





PS: Si un admin pouvais supprimer mon premier post de ce message : merci j'ai pas eut le temps d'éditer que je pouvais plus le faire !

#43 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 27 September 2008 - 07:01 AM

Salut,

Je me suis amusé à colorier quelques cases avec un Array...

Action Script

//
// initialisations
//
this.onLoad = function() {
_global.larray = new Array(
new Array([1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [0], [0], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([0], [0], [0], [0], [1], [1], [1], [1], [0], [0], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [0], [0], [0], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [0], [1], [0], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [0], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [0], [1], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [0], [1], [1], [1], [0], [1], [1], [1]),
new Array([1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [0], [1], [1]),
new Array([0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1], [1], [1], [1], [0], [1]),
new Array([0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [0]),
new Array([0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1]),
new Array([0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1]),
new Array([0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1]),
new Array([0], [0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1]),
new Array([1], [1], [0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [0], [0], [1], [1], [1], [1], [1], [1], [1], [0], [1], [1], [1], [1]),
new Array([1], [1], [1], [1], [1], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [1], [1], [1], [1]));
this.createEmptyMovieClip("losange", this.getNextHighestDepth());
losange.createEmptyMovieClip("lacible", losange.getNextHighestDepth());
losange.createEmptyMovieClip("pointeur", losange.getNextHighestDepth());
losange.createEmptyMovieClip("lesprite", losange.getNextHighestDepth());
origx = 20;
origy = -200;
larg = 20;
haut = 20;
j = 0;
for (i=1; i<35; i++) {
if (String(larray[i][j]) != String(0)) {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0xFFFFFF);
} else {
dessine_case(losange, origx+(i*larg), origy, larg, haut, 0x999999);
}
for (j=1; j<27; j++) {
if (String(larray[i][j]) != String(0)) {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0xFFFFFF);
} else {
dessine_case(losange, origx+(i*larg), origy+(j*haut), larg, haut, 0x999999);
}
}
}

dessine_case(losange.lacible, 0, 0, larg, haut, 0xFFFF00);
dessine_case(losange.lesprite, 0, 0, larg, haut, 0x00FF00);
dessine_case(losange.pointeur, 0, 0, larg, haut, 0xFF0000);
intervalId = setInterval(this, "deplace_sprite", 50);
// tourne et incline le damier
var my_matrix:Object = losange.transform.matrix;
my_matrix.c = -0.5;
my_matrix.rotate(0.5);
losange.transform.matrix = my_matrix;
this.createTextField("my_txt", 1, 10, 10, 300, 100);
// les trois lignes suivantes masquent le clip "losange"
this.createEmptyMovieClip("lemasque", this.getNextHighestDepth());
dessine_case(lemasque, 50, 50, 550-100, 400-100, 0x999999);
losange.setMask("lemasque");
};
//
// fonction dessine une case avec paramètres nom, origine x et y, dimensions et couleur
//
function dessine_case(nom, origx, origy, larg, haut, couleur) {
nom.beginFill(couleur, 100);
nom.lineStyle(1, 0xAAAAAA, 100);
nom.moveTo(origx, origy);
nom.lineTo(origx+larg, origy);
nom.lineTo(origx+larg, origy+haut);
nom.lineTo(origx, origy+haut);
nom.lineTo(origx, origy);
nom.endFill();
}
//
// quand on bouge la souris
//
this.onMouseMove = function() {
lacasey = Math.floor(losange._ymouse/haut);
lacasex = Math.floor(losange._xmouse/larg);
losange.pointeur._x = lacasex*larg;
losange.pointeur._y = lacasey*haut;
// attention, il y a un décalage de numérotation des cases selon la rotation
my_txt.text = "case "+(lacasex)+","+(lacasey);
};
//
// quand on clique
//
this.onMouseDown = function() {
losange.lacible._x = losange.pointeur._x;
losange.lacible._y = losange.pointeur._y;
};
//
// bouge le sprite à la vitesse de l'intervale
//
function deplace_sprite() {
if (losange.lacible._x>losange.lesprite._x) {
losange.lesprite._x += larg;
} else if (losange.lacible._x<losange.lesprite._x) {
losange.lesprite._x -= larg;
}
if (losange.lacible._y>losange.lesprite._y) {
losange.lesprite._y += haut;
} else if (losange.lacible._y<losange.lesprite._y) {
losange.lesprite._y -= haut;
}
}

Je pense qu'il faudrait transposer mon array et inverser [i][j] en [j][i]...
Je le ferai peut-être icon_redface.gif

A+

Fichier(s) joint(s)



#44 wolfkiwi

    Ceinture Orange

  • Members
  • PipPipPip
  • 33 messages

Posté 27 September 2008 - 20:32 PM

Bon ben j'y arrive pas, j'y est passer encore quelques heures mais je vais y arriver un jour.
Tu vas pas tout me faire même si c'est super sympa, faut que j'arrive de mes propre moyen, si tu pouvais me passez quelques indices et explications ce serais bien.

Merci pour tout smile.gif

#45 Phn

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1648 messages

Posté 28 September 2008 - 08:29 AM

Salut,

Avec un bon esprit comme ça, tu ne peux que y arriver icon_cool.gif
Je veux bien te passer indices et explications, mais il va falloir que l'on identifie bien là où ça coince...
T'es tu approprié le code de mon dernier exemple ? Celui-ci présente-t-il des zones d'ombres, des trucs dont tu n'aurais pas compris le pourquoi du comment ?

Je pense que le but, c'est de comprendre ce code, l'arranger car la gestion de l'array est plutôt nulle, et ajouter ensuite des fonctionnalités pour en faire une bonne base pour ton jeu.


PH



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP