Maison interface Web js tutoriel Création d'un enregistrement complet des batailles de chars avec les compétences javascript (2)_javascript

Création d'un enregistrement complet des batailles de chars avec les compétences javascript (2)_javascript

May 16, 2016 pm 04:30 PM
javascript 面向对象

2. Améliorer la carte

Notre carte comporte des obstacles tels que des espaces ouverts, des murs, de l'acier, de l'herbe, de l'eau et un quartier général. Nous pouvons concevoir tout cela comme des objets.

2.1 Créer un groupe d'objets obstacle

Le groupe d'objets stocke les objets sur diverses cartes. Nous utilisons les propriétés des objets pour déterminer si les objets peuvent être traversés ou attaqués.

Barrière.js :

Copier le code Le code est le suivant :

// Objet de classe de base d'obstacle, hérité de TankObject
Barrière = fonction () {
This.DefenVal = 1; // Puissance de défense
This.CanBeAttacked = true; // Peut-il être attaqué
>
Barrier.prototype = new TankObject();
// Mur
MurB = fonction () { }
WallB.prototype = new Barrier();
// Espace ouvert
VideB = fonction () {
This.CanAcross = true; // Peut être transmis
>
EmptyB.prototype = new Barrier();
// Rivière
RiverB = fonction () {
This.DefenVal = 0;
This.CanBeAttacked = false; // Les membres de l'objet sont pris en premier et ceux hérités de la classe parent seront écrasés.
>
RiverB.prototype = new Barrier();
// Acier
SteelB = fonction () {
This.DefenVal = 3;
>
SteelB.prototype = new Barrier();
// Objet herbe
TodB = fonction () {
This.CanBeAttacked = false;
This.DefenVal = 0;
This.CanAcross = true;
>
TodB.prototype = new Barrier();
//Siège social
PodiumB = fonction () {
This.DefenVal = 5;
>
PodiumB.prototype = new Barrier();

2.2 Données écrites sur la carte.

Ajoutez le code suivant dans Common.js :

Copier le code Le code est le suivant :

//Énumération du type d'élément de carte
/*
0 : Espace ouvert
1 : Mur
2 : Acier
3 : Les buissons
4:Rivière
5 : Quartier général
*/
var EnumMapCellType = {
Vide : "0"
, Mur : "1"
, Acier : "2"
, Tod : "3"
, Rivière : "4"
, Podium : "5"
};
//Le nom du style correspondant à chaque terrain
var ArrayCss = ['vide', 'mur', 'acier', 'tod', 'rivière', 'podium'];
// Carte des niveaux
/*Niveau*/
var str = '0000000000000';
str = ',0011100111010';
str = ',1000010000200';
str = ',1200333310101';
str = ',0000444400001';
str = ',3313300001011';
str = ',3011331022011';
str = ',3311031011011';
str = ',0101011102010';
str = ',0101011010010';
str = ',0100000000110';
str = ',0100012101101';
str = ',0010015100000';
//La carte des niveaux de stockage 0,1,2,3... sont respectivement 1-n...Niveau
var Top_MapLevel = [str];

2.3 Dessiner une carte

Maintenant que les préparatifs sont terminés, commençons à servir les plats et à dessiner la carte. Comme mentionné précédemment, notre carte est un tableau 13*13. Nous ajoutons donc des attributs de ligne et de colonne à l'objet de chargement du jeu, ainsi qu'une méthode de mappage d'initialisation.

Frame.js :

Copier le code Le code est le suivant :

// Objet de chargement du jeu L'objet principal de tout le jeu
GameLoader = fonction () {
This._mapContainer = document.getElementById("divMap"); // Le div
qui stocke la carte du jeu This._selfTank = null; // Réservoir du joueur
This._gameListener = null; // ID du minuteur de la boucle principale du jeu
/*Nouveaux attributs ajoutés dans la v2.0*/
Ce._level = 1;
This._rowCount = 13;
This._colCount = 13;
This._battleField = []; // Stocke le tableau bidimensionnel d'objets cartographiques
>
//Charger la méthode de la carte
Charger : fonction () {
                // Initialise la carte en fonction du niveau
        var map = Top_MapLevel[this._level - 1].split(",");
        var mapBorder = UtilityClass.CreateE("div", "", "mapBorder", this._mapContainer);
// Parcourez chaque cellule de la table cartographique
pour (var i = 0; i < this._rowCount; i ) {
                                   // Créez un div et la carte de chaque ligne est enregistrée dans ce div
            var divRow = UtilityClass.CreateE("div", "", "", mapBorder);
//Créer un autre tableau dans le tableau unidimensionnel
This._battleField[i] = [];
pour (var j = 0; j < this._colCount; j ) {
// Lire les données cartographiques, valeur par défaut : 0
              var v = (map[i] && map[i].charAt(j)) || 0;
// Insérer un élément span, un élément span est une unité cartographique
              var spanCol = UtilityClass.CreateE("span", "", "", divRow);
                      spanCol.className = ArrayCss[v];
                               // Placez l'objet cartographique dans un tableau bidimensionnel pour faciliter la détection de collision ultérieure.
              var à = null;
interrupteur (v) {
cas EnumMapCellType.Empty :
                               à = new EmptyB();
                              pause ;
cas EnumMapCellType.Wall:
                                 à = nouveau WallB();
                              pause ;
cas EnumMapCellType.Steel :
                                  à = new SteelB();
                              pause ;
cas EnumMapCellType.Tod :
                                 à = new TodB();
                              pause ;
cas EnumMapCellType.River :
                              à = new RiverB();
                              pause ;
cas EnumMapCellType.Podium :
                               à = nouveau PodiumB();
                              pause ;
                                                                                                                                                                                                                                                                  par défaut :
throw new Error("Le numéro de carte est hors limites!");
                              pause ;
                 }
                     to.UI = spanCol;
                         // j voici X, car la boucle intérieure est horizontale, x est l'abscisse
                          to.XPosition = j;
                        to.YPosition = i;
                                           // Stocke l'objet cartographique actuel dans un tableau bidimensionnel, obj est l'objet obstacle et l'occupant est l'objet occupant
This._battleField[i][j] = { obj : to, occupant : null, lock : false };
                                             //fin pour
                                   // fin pour
                                            // Mettre dans la variable globale de la fenêtre
            window.BattleField = this._battleField;
>

ok, notre carte est faite ici. Les commentaires ici sont très détaillés. Si vous ne comprenez toujours pas quelque chose, téléchargez le code source et déboguez-le vous-même.

Ici, nous chargeons principalement des données cartographiques et insérons chaque carte dans le document HTML en tant qu'élément span. Et stockez l'objet cartographique dans un tableau bidimensionnel. À l'avenir, lorsque nous effectuerons une détection de collision, nous pourrons obtenir directement l'objet tableau correspondant via les coordonnées de l'objet, ce qui est très pratique.

Ci-joint le code source : http://xiazai.jb51.net/201411/yuanma/jstankedazhan(jb51.net).rar

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Explorez la programmation orientée objet dans Go Explorez la programmation orientée objet dans Go Apr 04, 2024 am 10:39 AM

Le langage Go prend en charge la programmation orientée objet via la définition de type et l'association de méthodes. Il ne prend pas en charge l'héritage traditionnel, mais est mis en œuvre par composition. Les interfaces assurent la cohérence entre les types et permettent de définir des méthodes abstraites. Des cas pratiques montrent comment utiliser la POO pour gérer les informations client, notamment la création, l'obtention, la mise à jour et la suppression d'opérations client.

Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Fonctionnalités avancées PHP : meilleures pratiques en matière de programmation orientée objet Jun 05, 2024 pm 09:39 PM

Les meilleures pratiques de POO en PHP incluent les conventions de dénomination, les interfaces et les classes abstraites, l'héritage et le polymorphisme, ainsi que l'injection de dépendances. Les cas pratiques incluent : l'utilisation du mode entrepôt pour gérer les données et l'utilisation du mode stratégie pour mettre en œuvre le tri.

Analyse des fonctionnalités orientées objet du langage Go Analyse des fonctionnalités orientées objet du langage Go Apr 04, 2024 am 11:18 AM

Le langage Go prend en charge la programmation orientée objet, définissant des objets via des structures, définissant des méthodes à l'aide de récepteurs de pointeurs et implémentant le polymorphisme via des interfaces. Les fonctionnalités orientées objet assurent la réutilisation, la maintenabilité et l'encapsulation du code dans le langage Go, mais il existe également des limitations telles que le manque de concepts traditionnels de classes et d'héritage et de conversions de signatures de méthodes.

Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Existe-t-il des fonctionnalités orientées objet de type classe dans Golang ? Mar 19, 2024 pm 02:51 PM

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Compréhension approfondie de la programmation orientée objet PHP : techniques de débogage pour la programmation orientée objet Compréhension approfondie de la programmation orientée objet PHP : techniques de débogage pour la programmation orientée objet Jun 05, 2024 pm 08:50 PM

En maîtrisant le suivi de l'état des objets, la définition de points d'arrêt, le suivi des exceptions et l'utilisation de l'extension xdebug, vous pouvez déboguer efficacement le code de programmation orienté objet PHP. 1. Suivez l'état de l'objet : utilisez var_dump() et print_r() pour afficher les attributs de l'objet et les valeurs des méthodes. 2. Définir un point d'arrêt : définissez un point d'arrêt dans l'environnement de développement et le débogueur se mettra en pause lorsque l'exécution atteint le point d'arrêt, ce qui facilitera la vérification de l'état de l'objet. 3. Tracez les exceptions : utilisez les blocs try-catch et getTraceAsString() pour obtenir la trace de la pile et le message lorsque l'exception se produit. 4. Utilisez le débogueur : La fonction xdebug_var_dump() peut inspecter le contenu des variables pendant l'exécution du code.

JavaScript et WebSocket : créer un moteur de recherche en temps réel efficace JavaScript et WebSocket : créer un moteur de recherche en temps réel efficace Dec 17, 2023 pm 10:13 PM

JavaScript et WebSocket : Construire un moteur de recherche en temps réel efficace Introduction : Avec le développement d'Internet, les utilisateurs ont des exigences de plus en plus élevées en matière de moteurs de recherche en temps réel. Lors d'une recherche avec les moteurs de recherche traditionnels, les utilisateurs doivent cliquer sur le bouton de recherche pour obtenir des résultats. Cette méthode ne peut pas répondre aux besoins des utilisateurs en matière de résultats de recherche en temps réel. Par conséquent, l’utilisation des technologies JavaScript et WebSocket pour mettre en œuvre des moteurs de recherche en temps réel est devenue un sujet brûlant. Cet article présentera en détail l'utilisation de JavaScript

See all articles