ActionScript 3.0 pour les débutants: leçon n ° 2

Comme promis voici la deuxième leçon dans ActionScript 3.0! Aujourd'hui, nous commençons l'analyse d'un projet simple qui reproduit le jeu ou le Tic Tac Toe Tic Tac Toe. J'ai essayé d'inclure des caractéristiques particulières dans cet exemple, ActionScript 3.0, en essayant de donner un espace à la compréhension et non pas sur le style. Il s'ensuit que si je devais écrire le "jeu" vraiment, je serais probablement structurés très différemment, mais dans ce cas j'ai essayé de servir d'intermédiaire entre un programme classique avec un compact, hermétique plus compréhensible pour les débutants. J'ai créé une classe de document unique, la procédure n'est pas nécessaire mais utile de garder en ligne avec le cours précédent .

Tic Tac Toe

Chargement Flash ...

La source

En plus du fichier ActionScript (. As) la classe du document, qui va commencer à analyser en détail ici, le projet est équipée d'un film standard de Flash (. Fla) qui fournit l'interface du jeu. Tous les fichiers nécessaires pour suivre les commentaires du code sont disponible ici .

Schéma du jeu

Dans cette version du jeu je n'ai pas mis l'ordinateur comme un adversaire, les activités que vous pouvez faire si vous vous sentez comme vous lecteurs. La question, donc, deux joueurs remplaçants, tout comme nous jouons sur un tableau noir ou sur une feuille de papier. Le schéma logique qui va suivre est la suivante:

Schéma de Tic Tac Toe

Une vision globale

e il suo interno: Avant de commencer l'analyse proprement dite du code est bon de voir les contours d'une classe générique, composée de l' package , class , et son intérieur:

Schéma de Tic Tac Toe

Constructeur de classe de document

Comme nous l'avions prévu la dernière fois , quand nous avons un lien vers un document Flash - un film - une classe de document, ce dernier étant un objet réel pour être instancié, le système démarrera le fabricant.

1
2
3
4
5
6
7
8
9
/ **
* Constructeur de la classe
* /
TicTacToe ( ) : void { TicTacToe la fonction publique (): void {
Mode / / Set et escaliers stage stage d'aligner
scaleMode = StageScaleMode . NO_SCALE stages. scaleMode = StageScaleMode . NO_SCALE
align = StageAlign . TOP_LEFT ; stages align =. StageAlign TOP_LEFT.;
Event . ADDED_TO_STAGE , init ) ; addEventListener ( Event . ADDED_TO_STAGE, init);
}

quando la nostra classe documento è aggiunta allo stage , cioè quando sarà visualizzata! Le fabricant établit dans ce cas l' stage , qui est le conteneur dans un navigateur et d'ajouter l'appel de la méthode de la fonction / init() lorsque le document est ajouté à notre classe stage , c'est à dire quand il est affiché! C'est une procédure standard que j'adopte souvent. Dans certains cas, il est totalement inutile, mais si vous faites usage de composants, qui est, ces objets visuels dans l'interface de l'éclair (comme TextArea, TreeView, etc ...), ils ne seront pas disponibles (en tant que pointeurs) jusqu'à ce que l'événement ADDED_TO_STAGE n'a pas été libéré! Alors pour être sûr, il est toujours bon de suivre cette voie, en prévision de toute les nouvelles versions.

Pour ceux qui possèdent une programmation objet orientée sèche, je recommande la lecture à tout le moins classes, objets et instances !

: La fonction ou une méthode, init() a été appelée privé (voir ActionScript 3.0: public, protégé, privé, interne et ) par le mot clé private :

1
2
3
4
5
6
7
8
9
10
/ **
* Méthode appelée lorsque le MovieClip est ajouté à la scène
*
* @ Param {even} e = passé de addEventListener (). Peut être null
* @ Return void
* @ Privé
* /
init ( e : Event = null ) : void { privés fonction init (e: Event = null): void {
initCell ();
}

Pour l'instant, comme vous pouvez le voir, cette fonction ne soit appeler un autre, initCell() . Souvent dans la méthode init() sont insérées toutes les fonctions d'initialisation, en évitant d'entrer directement le code ouvert. Cela peut être utile au cas ré-initialiser certains paramètres. Comme il s'agit d'un exemple d'un jeu relativement simple, il peut paraître étrange d'avoir cette double saut presque inutile, mais dans d'autres cas, la méthode init() peut être beaucoup plus large, en appelant une série de fonctions d'initialisation comme:

1
2
3
4
5
6
7
8
9
init ( e : Event = null ) : void { privés fonction init (e: Event = null): void {
initBackground ();
initIntro ();
initPlayers ();
initScore ();
initEnemy ();
initSound ();
; start ();
}

. La méthode init() est invoqué (soit disant) lorsque le système libère l'événement ADDED_TO_STAGE . Pour cette raison il a été ajouté le paramètre e:Event .

Note astuces: souvent, il peut arriver d'avoir des méthodes (telles que init() ) qui sont invoqués par les deux événements, tant dans le code. C'est précisément pour cette raison que le paramètre de cette méthode a été fixé à e:Event = null . (a meno di “simularlo” con un notevole spreco di energie). De cette façon, en fait, devrait-il jamais besoin, nous pouvons appeler init() sans passer tous les paramètres, car nous ne sommes pas un événement, puis nous ne pouvions pas passer le paramètre e:Event (sauf si vous "c'est faux" avec des pertes considérables d'énergie ). Pour plus de détails sur la gestion des paramètres d'ActionScript 3.0, voir aussi: Sujets et variables par défaut en Javascript, Actionscript et PHP et Actionscript 3.0 les variables sujets ,

Initialisation du jeu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/ **
* Initialiser une matrice linéaire qui va représenter notre grille.
* Cette "grille" est par défaut à zéro (0), qui précise qu'aucune
* Symbole (o / x) a été fait.
* Le joueur 1 (ou) sera attribué à la valeur un (1). Alors que le joueur 2 (x)
* Associée à la valeur de dix (10). Avec cette astuce lorsque ces
* Somme des valeurs de la rangée 1 est égale à 3, nous saurons qui a gagné le joueur 1.
* Si la somme, au lieu de la colonne 1 est de 30, puis a gagné le joueur 2 ... et ainsi de suite.
*
* 0 | 0 | 0
* --+---+---
* 0 | 0 | 0
* --+---+---
* 0 | 0 | 0
*
Void * @ Param
* @ Return void
* @ Privé
* /
initCell ( ) : void { initCell fonction privée (): void {
/ / Tableau de pré-configurer le jeu à zéro
, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ; __cell = [0, 0, 0, 0, 0, 0, 0, 0, 0];
/ / Commence toujours par le joueur (le joueur) # 1
__player = 1;
/ / Dessine la grille sur l'écran
createGrid ();
/ / Afficher l'écran du joueur son tour (dans ce cas 1)
= 'PLAYER ' + __player ; . turno_txt text = 'player' + __player;
/ / Cette variable est utilisée pour mettre le jeu en pause si elle est vraie
/ / Commencer le jeu-
__stop = false;
}

Cette méthode initCell() se charge d'initialiser toutes les variables et créer tous les objets dans le jeu.

Notes Astuces: presque tous les programmeurs de jeux vidéo sont parfaitement familiarisés avec la technique de la cartographie de la zone de jeu dans un tableau avec une ou plusieurs dimensions. Cette technique, utilisée dans ce qu'on appelle jeu Tile vous permet d'exécuter une série de contrôles dans une logique libéré de graphiques pour la vidéo. Dans ce cas précis j'ai utilisé un simple tableau à une dimension composé de 9 éléments représentant les 9 cases de la partie. Le fait que les éléments du tableau sont séquentiels, par rapport à grille 3 x 3, n'est pas un problème comme nous le verrons, mais seulement une question de point de vue!
Pour ceux qui veulent approfondir le sujet intéressant, je recommande la lecture Jeux Tile Basé

Toutes les variables à usage interne, au niveau mondial classe, indiquer l'utilisation du double trait de soulignement en face. indicano rispettivamente il giocatore attivo e lo stato del gioco. Ceux-ci, en fait, lors de la première ébauche d'une classe peut alors devenir propriété publique, en utilisant leur propre encapsulation programmation OO (voir écrire de bonnes code OO dans Adobe Flash ). __player et __stop désigner le joueur actif et l'état du jeu.

Pour l'instant je vais m'arrêter là! La prochaine fois que nous allons analyser la méthode createGrid() et le reste du jeu, si vous avez des questions ou des commentaires sur cette partie.

4 commentaires à "Actionscript 3.0 pour les débutants: leçon n ° 2"

  1. 28 septembre 2008 Actionscript 3.0 pour les débutants: leçon n ° 3 | Undolog.com :

    [...] L'analyse de l'exemple du jeu Tic Tac Toe, a présenté en Actionscript 3.0 pour les débutants: leçon n ° 2. Nous sommes arrivés à la fonction qui crée la grille de jeu: Texte brut [...]

  2. 4 novembre 2008 billigflüge :

    Même si je n'aime pas tic tac toe, parce que le joueur en premier gagne toujours, si il fait ses marques sur au bon endroit, votre Tut est grand! Il ya quelques points obscurs pour moi encore, mais j'espère que vous traduire le site fastly. Cordialement

  3. 11 novembre 2008 Actionscript 3.0 pour les débutants: leçon n ° 4 | Undolog.com :

    [...] Nos échantillons de code pour le TicTacToe (qui se trouve dans son intégralité sur Google Code) et de commencer à analyser en [...]

  4. 28 novembre 2008 dosa85:

    ontinuo ne comprends pas comment insérer le code .... je copier et coller d'erreur mais le plus souvent dans le fichier AS ... .... Bha!

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL