Forums Développement Multimédia

Aller au contenu

jeu 421

CODE TUTO

61 réponses à ce sujet

#46 hbilly

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 07 January 2015 - 13:05 PM

Bravo Didier, Génial ! super ton jeu de 421 je l'ai testé, bravo. Et aussi très belle présentation.
Bravooooo et merci pour le fichier .fla .

#47 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 07 January 2015 - 13:09 PM


Un petit exemple en guise de corrigé (sans prétention) pour ceux qui voudraient aller plus loin.
 

T'as le droit d'être prétentieux.
Tu es doué ou studieux !

Merci Didier.
Ca m'apprend plein de trucs. Compris une langue que je ne connaissais pas !

" S elae les s esas ! "

#48 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 07 January 2015 - 15:27 PM

Petit up : voilà la version simplifiée si besoin.
Pas d'animation, pas de langue, moins de messages, il ne reste que le cœur du principe.

Fichier(s) joint(s)

  • Fichier joint  dés.fla   671 Ko   9 téléchargement(s)


#49 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 07 January 2015 - 18:31 PM

Petite question Didier pour quand tu auras le temps....

Dans le premier exemple tu utilises la classe Object, dans le 2eme la classe Array.
Tu m'as également enseigné le Dictionnary.

Bref : Quelles sont les raisons qui nous feront choisir l'une ou l'autre des méthodes ?

Merci !

#50 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 07 January 2015 - 21:46 PM

Bonne question ! Je vais essayer d'y répondre de façon précise.

Regarde bien dans un premier temps : je n'utilise pas de type de variable différent. En fait, j'utilise un niveau d'abstraction supplémentaire pour le code qui gère le multi-langues.

Prenons le code simple :
J'utilise un Array pour stocker mes textes. Pourquoi un array ? Parce que j'ai choisis (on pourrait faire d'autres chois, je ne le redirai plus) d'avoir un texte différent par coup joué.
Les coups sont des valeurs numériques croisantes : 1, 2, 3… ça me semble tout indiqué pour un Array. En plus, un array commençant à 0, j'ai une première valeur libre et je peux m'en servir pour avoir un texte encore différent à l'ouverture de l'application. Pratique…
J'utilise donc un Array, qui me permet de retrouver le texte voulu au coup nº 1 avec titre[1], au coup nº 2 par titre[2], bref : au coup x par titre[x]. Première abstraction.
Si je voulais également modifier le label de mon bouton, je créerai une variable de type array nommée labels, qui me permettrait d'acceder au label voulu pour le coup x avec un labels[x].
Idem si je voulais des légendes.
Soit : titres, légendes, labels = trois variables de type array. Au coup x je peux accéder à l'indicie x du tableau pour chaque type de texte.

On peut maintenant passer au code le plus complexe. Pourquoi est-ce que j'utilise des objets ?
En fait, j'utilise des objets ET des tableaux. J'utilise des objets pour stocker mes trois tableaux ; titre, légendes et labels.
On le vois moins parce que les objets sont dynamiques. On peut créer une variable dans l'objet, à la volée, et sans donner son type.
En fait :
fr.titres=["A","B","C","D"]
devrait s'écrire :

fr.titres:Array=["A","B","C","D"]
mais ce n'est pas le cas. Et, pour tout dire, ce n'est pas très bien pour le compilateur qui doit s'attendre à tout (et parfois n'importe quoi). Là, utiliser une classe pluitôt qu'un objet permettrait d'avoir la même structure mais de soulager le compilateur en précisant les types de variables.


Je reviens à nos moutons.
Je crée donc un objet, contenant trois variables pour chacun des tableaux.
Je fais ça pour le français et pour l'anglais. Et seuls les valeurs des textes sont différents mais la structure (le nom et le type des variables) est identique.

Je peux donc remplacer la variable uk par la variable fr, quand j'accederai aux variables de type tableau, je m'aventurerai en terrai connnu : titres, légendes et labels. Seule la valeur retournée sera différente. C'est un second niveau d'abstraction.


J'espère qu'à ce niveau c'est clair : je n'utilises pas la classe Array dans un cas et la classe Object dans l'autre : j'utilise la classe Array dans un cas et la classe Object contenant des Array dans l'autre cas.

Maintenant, la différence avec les dictionary ?
Je t'ai bien dit que la solution des dictionary était une solution temporaire, en attendant que tu fasses des progrès, et que je te conseillais de l'oublier ensuite. dans mon code, k'ai pensé mon appli en commençant par le stockage des données. Je construit des objets polymorphes interchangeables, j'agis en amont.
Dans ton code, tu as déjà construit l'interface, tu as des données éparpillées, et tu voudrais stocker/retrouver des données en fonction des objets. Le dictionary sert à ça, parce que tu n'as pas anticipé.
avec un dictionary, tu es oblgé d'agir en 2 temps :
– stocker une donnée en l'associant à un objet
– récupérer une donnée en fournissant l'objet associé.

Quand on travaille avec des objets (encore mieux avec des classes), les données sont stockées par l'objet, en amont, et donc disponibles dès qu'on peut accéder à l'objet…
Si cette deuxième explication te semble plus floue, je ne pense pas que ce soit grave. Ça viendra avec le temps. Je suis graphiste de base et j'ai eu ce souci : je construisais l'apparence de mes programmes, puis je courrais après mes données.
Un bon programmeur ferait l'inverse : il commencerait par les données puis courrait après l'apparence.
Et un bon graphiste programmeur à un très gros avantage : il sait structurer l'apparence pour servir les données et structurer les données pour servir l'apparence…
;-)/>


En conclusion/résumé : ce qui nous fait choisir tel ou tel type de variable, c'est le temps que l'on investit dans la vision globale de son projet pour le structurer. Une difficulté pour les gens qui sont visuels et veulent (ont besoin) de commencer par donner une forme graphique.
Petit tips : quand je me lance dans un projet, je le commence dans photoshop. Je donne une forme, ce qui me rassure, me permet de visualiser et nommer tous les éléments dont j'aurai besoin.
En phase 2, je les "groupe" (abstraitement) par usage pour avoir ma structure de base. Puis je développe usage par usage.

En espérant que cela t'aide plus que cela ne t'embrume (n'abuse pas du quart de Chaume, ça n'aide pas).

#51 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 08 January 2015 - 12:03 PM

Merci Didier.

Non : j'bois pas. Peux pas. Trop cher et non compatible avec ma médication. :(

Grosso modo compris ! Surtout le coup de l'objet / Array. Ca va mieux...

Je travaille également sous photoshop puis très vite sous Flash.
Quand on a connu Flash MX dur dur de changer de méthodes.

Mais ma foi, ça avance plutôt bien !
( Gain de 20 % de codes avec les méthodes conjuguées de toi même et M. Spi )

See you !

#52 hbilly

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 10 January 2015 - 17:18 PM

http://www.aht.li/2557635/421f.fla

Petite question sur le poids 1.78 mo ???? Est ce les polices

#53 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 10 January 2015 - 17:59 PM

Coucou Billy.

Une police ne pèse pas lourd.
En revanche en enlevant les tapis tu ne passes plus qu'à quelques Ko.

Les bitmaps, ça c'est du lourd.
Je te conseille du jpeg si tu n'as pas besoin de transparence.

Voir dans ton cas du vectoriel.

A++

#54 hbilly

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 10 January 2015 - 18:22 PM

Ok super, merci archiroc j'ai mis un tapis en jpg je suis passé à 646 ko
A+

#55 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6955 messages

Posté 10 January 2015 - 18:32 PM

Le poids d'un FLA (fichier de travail) n'a aucune importance.
Ce qui compte c'est le poids du SWF (fichier de sortie) compilé.
Dans votre cas il fait 180 Ko.

Si vous voulez réduire le poids, l'IDE de Flash compresse automatiquement les images en Jpeg à 80% de qualité, vous pouvez passer sur chaque image de la bibliothèque, clic bouton droit et choisir "propriétés" puis compresser l'image à votre guise.
Le vectoriel est aussi une solution idéale pour réduire drastiquement le poids, mais attention, si le jeu doit déplacer un grand nombre de formes vectorielles il risque de ramer, il est plus compliqué de déplacer ou modifier une forme vectorielle (générée par des formules de Math) qu'un bitmap (tableau de pixels). Il faut donc préférer le vectoriel pour les objets fixes et le bitmap pour les objets animés (si ils sont nombreux), afin de conserver un ratio poids/puissance/efficacité correct.

Les polices de caractères différentes de celles de l'OS sont à éviter autant que possible, une police de caractère pèse lourd au final dans le SWF, il faut donc en limiter l'usage aux polices système qui n'ont pas besoin d'être embarquées, ou au nombre de glyphes (caractères) uniquement utiles dans le cas d'une police spéciale.

Enfin, il faut éviter de multiplier les images lorsque cela n'est pas utile, par exemple dans votre FLA vous avez une image pour le fond et une image pour les dés (avec chiffres) et une autre pour les dés (sans chiffre). Tout ceci peut très bien faire partie de la même image : le fond. Il suffit d'ajouter des clips vides au dessus de la représentation des dés pour faire vos boutons.

#56 hbilly

    Ceinture Jaune

  • Members
  • PipPip
  • 19 messages

Posté 11 January 2015 - 07:26 AM

Bonjour,
Ok merci, M Spi pour toutes ses précisions.

#57 dchristov

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 30 August 2016 - 09:55 AM

bonjour,
j'aurais aimer savoir ci on avait le droit d'utilisé cette source librement ou non ?
cordialement

#58 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 30 August 2016 - 10:27 AM

Bonjour dchristov.

Si tu parles de ma version, pas de souci. Tu peux t'en servir.

#59 dchristov

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 30 August 2016 - 15:08 PM

bonjour,

oui je parle bien de ta version merci beaucoup

j'ai plus ca me pencher sur les modif que je voudrait [car je connait pas trop AS3]

en tout cas merci

#60 dchristov

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 30 August 2016 - 15:15 PM

ps:
car je voudrait rajouter 1 calque ou image en début de partie pour expliquer la regle et un bouton jouer qui irait au calque suivant
et à la fin rajouter aussi un calque ou il y'aurais bravo vous avez fait XXX avec un bouton retour
pour que je puisse stocker le score dans une base de donné

ci y en as qui on des idée je suis preneur

Merci d'avance

#61 dchristov

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 30 August 2016 - 16:23 PM

apres avoir chercher un peux

j'ai reussi a fair mon avant et apres

seul truc j'arrive pas a recup la valeur des dés pour l'afficher sur l'image 3

#62 dchristov

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 30 August 2016 - 22:27 PM

bonsoir,
a la personne ailliant crée le script (dldler)
ci il pouvais essayer de m'eclairé
j'essaie de recupere les 3 dé pour l'afficher dans une autre image donc j'ai essayer plein de truc met je trouve pas mon dernier essaie

FONCTION VERIFIER COMPLETE

function vérifier ():void {
  var test:int=1;
  // Vérifier les valeurs des dés
  var somme:uint=0;
  var produit:uint=1;
 
  for each (varin dés) {
   dé.jouable=false;
   jeu.tapis.addChild();
   somme+=dé.currentFrame;
   produit*=dé.currentFrame;
   test=dé.currentFrame;
  }
  // En cas de défaite, laisser le nombre de coups à 3 (indice des messages perdants),
  // En cas de victoire, passer le nombre de coups à 4 (indice des messages gagnants)
  if (somme==7 && produit==8) coups++;
  var score:Array=[jeu.tapis.A,jeu.tapis.B,jeu.tapis.C];
  trace(score)

                 gotoAndPlay(2);/*on va a l'image de fin*/
}
 

dans la fonction vérifier j'ai rajouter

var score:Array=[jeu.tapis.A,jeu.tapis.B,jeu.tapis.C];
trace(score)
 

me donne comme resultat

[object D_4],[object D_4],[object D_4]

je seche la :(



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