Cet article décrit le code source Cosmic Fighter des mini-jeux JS et est partagé avec vous pour votre référence. L'introduction spécifique est la suivante:
1. Introduction du jeu:
Il s'agit d'un jeu de tir volant, vertical, avec un total de six niveaux.
2. Exigences de jeu:
1. Le combattant peut tirer des balles et les balles peuvent être améliorées en obtenant des accessoires.
2. Le combattant peut être placé dans des bombes et le nombre d'accessoires peut être obtenu peut être augmenté.
3. Les avions de chasse peuvent accumuler la puissance pour attaquer.
4. Il existe trois types de canaux, à savoir la mise à niveau des balles, augmenter le nombre de bombes et augmenter le nombre de jets de chasse.
5. Chaque niveau a une musique différente.
6. Le avion de chasse est abattu puis entre sur le champ de bataille, et est dans un état protégé.
7. Conception de l'IA ennemi des avions.
Le jeu fonctionne comme indiqué dans la figure ci-dessous:
Cliquez ici pour télécharger l'exemple complet du code .
3. Pièce de code source JavaScript:
/ ** Cosmic Fighter * Auteur: fdipzone * Date: 2013-02-12 * ver: 1.0 * / window.onLoad = function () {var gameImg = ['images / fighter.png', 'images / fighter_p.png', 'images / fighter_s.png', 'images / fight_s.png', 'images / fighter_s.png', 'images / fight_s.png', ' 'images / fighter_s.png', 'images / shot.png', 'images / destre.png', 'images / destren.png', 'images / ennemi.png', 'images / bullet.png', 'images / don.png']; var callback = function () {var gameplan = $ ('gameplane'); Fighter.init (); Fighter.BgMove (Gameplane); } img_preload (gameImg, rappel);}; / ** classe de chasse * / var Fighter = (function () {var hiscore = 10000; // le score le plus élevé var score = 0; // le score actuel var Fighter = 3; // le nombre de Fighter var bombnum = 3; // le nombre de bombes var ft = null; // l'objet Fighter Var est_ started var is_bombing = 0; // Is var is_lock = 1 in explosion; // Is var is_over = 0; // Is ended var is_clear = 0; // Is the screen clearing var is_pile = 0; // Is the power accumulation var is_protect = 0; // Is the status var pilenum = 0; // Is the power accumulation var ackey = {}; // Is the record key pressed var KeyPriority = {}; Input var échecs = 0; ? // l'avion ennemi qui apparaît var ennemi les données ennemies = []; // Le boss var curboss apparaît actuellement var curboss = null; // Données de niveau var map = [// Niveau 1 {'MS50': [[3, 680, 1, -50, 10, 10], [3, 680, 1, -50, 290, 10]], 'MS2500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 12, -23, 190, 10] 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10]], 'MS9500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10], ' «MS11500»: [[3, 800, 2, 200, 450, -10]], «MS13500»: [[3, 800, 2, 100, -50, 10]], «MS15500»: [[3, 800, 3, -50, 340, 10]], «MS20000». 800, 3, -50, 90, 10]], 'ms25000':[[1, 10, 4, 150, -50, 280, 10]], 'ms25000':[[1, 10, 4, 150, -50, 280, 10]], 'ms25000':[[1, 10, 4, 150, -50, 10],[1, 10, 4, 250, 400, -10],[1, 10, 4, 100, 400, -10]], 'MS30000': [[3, 800, 5, 692, 90, -10], [3, 800, 5, 692, 280, -10]], 'MS35000': [[3, 680, 1, -50, 70, 10], [3, 680, 1, -50, 220, 10], 'MS38000'. 11, -23, 10, 10]], 'MS40000': [[1, 10, 4, 100, 400, -10], [1, 10, 4, 300, -50, 10]], 'MS42500': [[3, 680, 1, -50, 70, 10], [3, 680, 1, -50, 220, 10]], ' 150, 450, -10]], 'MS49500': [[3, 800, 2, 50, -50, 10]], 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 50, -50, 10], 'MS51500': [[3, 800, 2, 150,, 'MS51500': [[3, 800, 2, 150,, 'MS51500': [[3, 800, 2, 150,, 'MS51500': [[3, 800, 2, 150,, 'MS51500': [[3, 800, 2, 150,, ' -10]], 'MS55500': [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50, 280, 10]], 'MS65000': [[3, 800, 3, -50, 30, 10]], 'MS65000': [[3, 800, 3, -50, 30, 10]], ' 400, -10], [1, 10, 4, 300, -50, 10]], 'MS68000': [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692, 260, -10]], 'MS71000': [1, 10, 13, -23, 220, 10]], ' 'ms50':[[3, 680, 1, -50, 10, 10],[3, 680, 1, -50, 290, 10]], 'ms2500':[[3, 680, 1, -50, 70, 10],[3, 680, 1, -50, 220, 10]], 'ms3500':[[1, 10, 12, -23, 190, 10]], 'MS5500': [[3, 800, 2, 100, -50, 10]], 'MS7500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10]], 'MS9500': [[3, 800, 100, -50, 10]], ' 450, -10]], 'ms13500':[[3, 800, 2, 100, -50, 10]], 'ms15500':[[3, 800, 3, -50, 30, 10],[3, 800, 3, -50, 340, 10]], 'ms20000':[[3, 800, 3, -50, 90, 10],[3, 800, 3, -50, 280, 10]], 'MS35000': [[1, 10, 4, 150, -50, 10], [1, 10, 4, 250, 400, -10]], 'MS30000': [[3, 800, 5, 692, 90, -10]], 'MS35000': [[3, 800, 5, 692, 90, -10]], 'MS35000'. 1, -50, 70, 10], [3, 680, 1, -50, 220, 10]], 'MS45500': [[1, 10, 11, -23, 10, 10]], 'ms45500': [[1, 10, 4, 100, 400, -10], [1, 10, 4, -50, 10]], ' -50, 70, 10], 'MS45500': [[3, 680, 1, -50, 70, 10]], 'MS45500': [[3, 800, 2, 50, -50, 10]], 'MS47500': [[3, 800, 2, 150, 450, -10], ' 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS55500': [[3, 800, 3, -50, 90, 10]], 'MS60000': [[3, 800, 3, 100, 400, -10], [1, [[1, 10, 4, 400, -10], [1, 4, 300,, 400, 100, -10], [1, 4, 300,, 400 10]], 'MS68000': [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692, 260, -10]], 'MS71000': [[1, 10, 13, -23, 220, 10]]], 'MS71000' 10], [3, 680, 1, -50, 10]], 'MS2500': [[3, 680, 1, -50, 70, 10], [3, 680, 1, -50, 220, 10]], 'MS3500': [[1, 10, 12, -23, 190, 10], ' 'MS7500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10]], 'MS9500': [[3, 800, 2, 100, -50, -10]], 'MS13500'. 100, -50, 10]], 'ms15500':[[3, 800, 3, -50, 30, 10]], 'ms20000':[[3, 800, 3, -50, 90, 10]], 'ms25000':[[1, 10, 4, 150, -50, 10],[1, 10, 4, 250, 400, -10],[1, 10, 4, 100, 400, -10]], 'MS30000': [[3, 800, 5, 692, 90, -10], [3, 800, 5, 692, 280, -10]], 'MS35000': [[3, 680, 1, -50, 70, 10], [3, 680, 1, -50, 220, 10],, ' 10]], «MS40000»: [[1, 10, 4, 100, 400, -10], [1, 10, 4, 300, -50, 10]], 'MS42500': [[3, 800, 2, 50, -50, 10]], 'MS42500': [[3, 800, 2, 150, 450, -10]], ' -50, 10]], 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS55500': [3, 800, 2, 150, 450, -10]], 'MS55500': [[3, 800, 2, 150, 450, -10], ' 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS55500': [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50, 280, 10]], 'MS60000': [[3, 800, 3, -50,, 10], ' -10], [1, 10, 4, 300, -50, 10]], 'MS68000': [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692, 260, -10]], 'MS71000': [1, 10, 13, -23, 220, 10]], 'MS76000': [], // 'ms50':[[3, 680, 1, -50, 10, 10],[3, 680, 1, -50, 290, 10]], 'ms2500':[[3, 680, 1, -50, 70, 10],[3, 680, 1, -50, 220, 10]], 'ms3500':[[1, 10, 12, -23, 190, 10]], 'MS5500': [[3, 800, 2, 100, -50, 10]], 'MS7500': [[3, 800, 2, 200, 450, -10]], 'MS13500': [[3, 800, 2, 100, -50, 10]], ' 2, 100, -50, 10]], «MS15500»: [[3, 800, 3, -50, 30, 10]], «MS11500»: [[3, 800, 3, -50, 340, 10]], «MS20000»: [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50, 280, 10], », [3, 800, 3, -50, 280, 10] 10, 4, 150, -50, 10], [1, 10, 4, 250, 400, -10], 'MS30000': [[3, 800, 5, 692, 90, -10]], 'MS35000': [[3, 800, 5, 692, 90, -10]], 'MS35000': [[[3, 680, 1, -50, 70,, [[[3, 680 680, 1, -50, 220, 10]], 'MS45500': [[1, 10, 11, -23, 10, 10]], 'MS40000': [[1, 10, 4, 100, 400, -10], [1, 10, 4, 300, -50, 10]], ' 'MS45500': [[3, 680, 1, -50, 220, 10]], 'MS45500': [[3, 800, 2, 50, -50, 10]], 'MS47500': [[3, 800, 2, 150, 450, -10]], ' 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS55500': [[3, 800, 3, -50, 90, 10]], 'MS6000000': [[3, 800, 3, -50, 30, 10], ' 4, 100, 400, -10], [1, 10, 4, 300, -50, 10]], 'MS68000': [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692, 260, -10]], 'MS71000': [[1, 10, 13, -23, 220, 10]], 'MS76000' '. {'MS50': [[3, 680, 1, -50, 10], [3, 680, 1, -50, 290, 10]], 'MS2500': [[3, 680, 1, -50, 70, 10], [3, 680, 1, -50, 220, 10]], 'MS3500': [[1, 10, 12, -23, 190], «MS3500»: [[1, 10, 12, -23, 190], «MS3500»: [[1, 10, 12, -23, 190] 'MS5500': [[3, 800, 2, 100, -50, 10]], 'MS7500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10]], 'MS9500': [[3, 800, 100, -50, 10]], ' 450, -10]], 'MS13500': [[3, 800, 2, 100, -50, 10]], 'MS15500': [[3, 800, 3, -50, 30, 10], [3, 800, 3, -50, 340, 10]], 'MS20000' 150, -50, 10], [1, 10, 4, 250, 400, -10], [1, 10, 4, 100, 400, -10]], 'MS30000': [[3, 800, 5, 692, 90, -10], [3, 800, 5, 692, 280, -10], ' 10], [3, 680, 1, -50, 220, 10]], 'MS38000': [[1, 10, 11, -23, 10, 10]], 'MS40000': [[1, 10, 4, 100, 400, -10], [1, 10, 4, 300, -50, 10], 'ms42500': [[[3, 680, 1, -50, `` MS42500 ': [[3, 680, 1, -50, 10,3 680, 1, -50, 220, 10]], 'MS45500': [[3, 800, 2, 50, -50, 10]], 'MS47500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 50, 15, 10], ' 450, -10]], «MS55500»: [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50, 280, 10]], «MS60000»: [3, 800, 3, -50, 30, 10], [3, 800, 3, -50, 340, 10], » -10], [1, 10, 4, 300, -50, 10]], 'MS68000': [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692, 260, -10]], 'MS71000': [1, 10, 13, -23, 220, 10]], 'MS76000': [], // 'ms50':[[3, 680, 1, -50, 10, 10],[3, 680, 1, -50, 290, 10]], 'ms7500':[[3, 680, 1, -50, 70, 10],[3, 680, 1, -50, 220, 10]], 'ms3500':[[1, 10, 12, -23, 190, 10]], 'MS5500': [[3, 800, 2, 100, -50, 10]], 'MS7500': [[3, 800, 2, 200, 450, -10]], 'MS8000': [[1, 10, 11, -23, 100, 10]], 'MS9500': [[3, 800, 100, -50, 10]], ' 450, -10]], 'ms13500':[[3, 800, 2, 100, -50, 10]], 'ms15500':[[3, 800, 3, -50, 30, 10]], 'ms20000':[[3, 800, 3, -50, 90, 10]], 'ms15500':[[3, 800, 3, -50, 30, 10]], 'MS20000': [[3, 800, 3, -50, 90, 10]], 'MS15500': [[3, 800, 3, -50, 30, 10]], 'MS20000': [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50,, 10]], 'MS35000' '. 10], [1, 10, 4, 250, 400, -10], [1, 10, 4, 100. 'MS42500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 150, 450, -10],, [[3, 800, 2, 150, 450, -10] 'MS49500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 150, 450, -10]], 'MS49500': [3, 800, 2, 150, 450, -10]], 'MS49500': [[3, 800, 2, 150, 450, -10],, [[3, 800, 2, 150, 450, -10] 'MS49500': [[3, 800, 2, 50, -50, 10]], 'MS51500': [[3, 800, 2, 150, 450, -10]], 'MS55500': [[3, 800, 3, -50, 90, 10], [3, 800, 3, -50,, 280, 10]], ' 30, 10]], «MS65000»: [[1, 10, 4, 100, 400, -10], [1, 10, 4, 300, -50, 10]], «MS68000»: [[3, 800, 5, 692, 110, -10], [3, 800, 5, 692,-260, -10], «MS71000»: [[1, 10, -23, 220,, «MS71000»: [[1, 10, - -23 10]], 'MS76000': []}]; // initialiser init = function () {ft = $ ('Fighter'); réinitialiser(); key_event (); } // Démarrer le jeu start = function () {is_clear = 0; is_protect = 0; disp (ft.id, «show»); reset_fighter (); reset_pile (); processus(); bgsound (niveau, vrai); bgchange (niveau); Fighter_Init (); } // Définir l'événement key_event = function () {document.onkeydown = function (e) {var e = e || window.event; var curkey = e.keycode || e. qui || e.charcode; if (is_start == 0) {if (cheatcode.length> 12) {cheatcode.shift (); } cheatcode.push (curkey); // Enregistrez l'entrée de la cheatcode par l'utilisateur} if (is_start == 1 && in_array (curkey, gamekey)) {if (ackey [curkey.tostring ()] == 0 || typeof (ackey [curkey.tostring ()]) == 'Undefined' ||! In_array, [Curkey, [83,65])) {// tir et bombarde ackey [curkey.toString ()] = 1; // Enregistrer Key Down Switch (Curkey) {Case 37: Case 39: KeyPriority.Left = Curkey; // Pause droite gauche; Cas 38: Cas 40: KeyPriority.top = Curkey; // Break de haut en bas; }} else {return false; }} if (curkey == 13 || is_start == 1 && is_lock == 0) {// jeu est start ou key = 13 switch (curkey) {case 13: // entre if (is_start == 0) {is_start = 1; disp ('op', 'cache'); msg_show (); setTimeOut (function () {msg_hide (); Cheat (); start ();}, 1500); } casser; Cas 83: // Shooting Shot (); casser; Cas 65: // bombe bombe (); casser; }}} document.onkeyup = function (e) {var e = e || window.event; var curkey = e.keycode || e. qui || e.charcode; if (is_start == 1 && in_array (curkey, gamekey)) {ackey [curkey.toString ()] = 0; // Libérez la clé if (curkey == 83) {// libérer l'attaque de puissance if (is_pile == 1) {Pile_shot (); } reset_pile (); }}}} // Action exécutée par Loop = function () {var moveStep = 5; // Move step size var et = setInterval(function(){ if(is_start==0 || is_lock==1){ clearInterval(et); } // Move if(ackey['37']==1 && (ackey['39']==0 || keypriority.left==37)){ // Priority judgment in conflict if (getPosition (ft, 'Left') <moveStep) {setPosition (ft, 'Left', 0); if (getPosition (ft, 'top') <moveStep) {setPosition (ft, 'top', 0); if (400- (getPosition (ft, 'Left') + 50) <MOVESTEP) {setPosition (ft, 'Left', 350); || keyPriority.top == 40)) {if (640- (getPosition (ft, 'top') + 50) <movestEp) {setPosition (ft, 'top', 590); }} // Attaque de charge if (ackey ['83 '] == 1) {if (PileNum <1000) {pipeline = pipelineum + 20; } else if (is_pile == 0) {is_pile = 1; if (is_protect == 1) {setClass (ft, 'fighter_s'); } else {setClass (ft, 'fighter_s'); }}}}}}}}}}}}, 20); } // Fight Shooting Shot = function () {// Create Bullet Var Bullet = Document.CreateElement ('Div'); var offsetx; commutateur (puissance) {cas 1: offsetx = 20; casser; Cas 2: Offsetx = 15; casser; Cas 3: Offsetx = 10; casser; Cas 4: Offsetx = 4; casser; } setClass (balle, 'shot' + puissance); // Définissez la position initiale de la SetPosition par balle (balle, «top», getPosition (ft, «top») - 30); setPosition (balle, 'gauche', getPosition (ft, 'gauche') + offsetx); ft.parentNode.ApendChild (Bullet); // Définit le mouvement de balle var et = setInterval (function () {if (getPosition (bullet, 'top') <= - 30 || is_lock == 1) {ClearInterval (et); ft.parentNode.removechild (Bullet); // Release Bullet} pour (var i = 0; i <EnepyData.Legthreng; i ++) {pour if (EnemyData [i]! = null) {if (Impact (Bullet, EnemyData [i])) {// Frappez le plan ennemi (ennemis); if (curboss! = null) {// Boss Battle if (Impact (Bullet, Curboss [OBJ ']) {// Hit the Boss Curboss [' Armor '] 'top') - 15);}, 30)} // provoquant un tir pile_shot = fonction () {var pileBullet = document.CreateElement ('div'); SetClass (PileBullet, «Pileshot»); // Définissez la position initiale de la SETPOSITION DE BULLET (PileBullet, «Top», GetPosition (Ft, «Top») - 30); setPosition (pilebullet, «gauche», getPosition (ft, «gauche»)); ft.parentNode.ApendChild (PileBullet); var et = setInterval (function () {if (getPosition (pileBullet, 'top') <= - 85 || is_lock == 1) {ClearInterval (et); ft.parentNode.remoVechild (pileBullet); // Libérez la balle} pour (var i = 0; i <EnemyData.Legth; i ++) {pour if (EnemyData [i]! = null) {if (Impact (pilebullet, ennemies [i]); Curboss [OBJ ']) {// Frappez le boss Curboss [' Armor '] = PARSEInt (Curboss [Armor']) - 100; ClearInterval (ET); } // release bomb bomb = function () {if (is_bombing == 0 && bombnum> 0) {// pas dans l'explosion et il y a le nombre de bombes is_bombing = 1; bombnum -; Sethtml ('Bombnum', Bombnum); // décrément par 1 var opacité = 100; setOpacity ($ ('bombe'), opacité); disp ('bombe', 'show'); // effacer tous les plans ennemis et les balles ennemies is_clear = 1; // Strike Boss if (curboss! = Null) {Curboss ['armour'] = parseInt (curboss ['armour']) - 300; } var Step = 0; var et = setInterval (function () {// Bombe Effect if (Step <11) {setBgPosition ($ ('bomb'), 0, étape * (- 280));} else {ClearInterval (et); Disp ('bomb', 'hide'); is_bombing = 0; is_clear = 0;} étape ++;}, 70); }} // Process process = function () {var niveaudata = map [niveau 1], traité = 0, étape = 10; var nevelstep = 0; // Clear 0 pour chaque niveau var et = setInterval (function () {if (is_lock == 0) {traited + = Step; if (attCount (niveaudata)> niveleStep) {// ce niveau n'a pas été terminé if (niveaudata ['ms' + traité]) {for (var i ++). NivedData [MS '+ traité] [I]; } / * Créer des éléments de niveau / * msdata: {num: le nombre d'occurrences Intervalle: intervalle: intervalle: type: type top: coordonnée supérieure d'origine gauche: var num gauche étape: distance de mouvement} * / création = fonction (msdata) {var num = msdata [0], interval = msdata [1], type = msdata [2], top = msdata [3], gauche = msdata [2], top = msdata [3] msdata [4], étape = msdata [5]; var et = setInterval (function () {if (num> 0) {var enft = document.CreateElement ('div'); setClass (enft, 'élément' + type); enft.type = type; setPosition (enft, 'top', top); setPosition (enft, 'gauche', gauche); ft.parentNode.APPENTCHILD (enfant); EnemyData.push (enft);} Route (enfant, type); } // élément motion track ited = function (enft, type, étape) {var et = null; switch (type) {cas 1: // Curve var count = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + math.abs (étape)); setposition (enft, 'gauche', getPosition (enft, 'Left') + Step); if (compter <5? Count ++: (count = 0, Step * = - 1); 'TOP')> 640 || casser; Cas 2: // Count Var horizontal = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'gauche', getPosition (enft, 'gauche') + étape); count <9? Count ++: (count = 0, attaque (enf && étape <0 || casser; Cas 3: // Vertical Var Count = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + étape); count <9? Count ++: (count = 0, attaquer (enft, 1,17,47)); if (getPosition (enft, 'top')> 640 || tris ClearInterval (ET); casser; Cas 4: // Mouvement de boucle gauche et droite Attaque var Count = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'gauche', getPosition (enft, 'gauche') + étape); count <10? Count ++: (count = 0, attaquer (enft, 4,17,31)); if (getPosition (enft, 'gauche')> = 350 && étape> 0 | getPosition (enff && Step <0) {Step * = - 1;} if (is_over == 1 || IS_CHEAR == 1) {ClearInterval (ET); casser; Cas 5: // Attaque de derrière Var Count = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + étape); count <9? Count ++: (count = 0, attaque (enft, 1,17, -17)); if (getPosition (enft, 'top') <- 32 || the ClearInterval (ET); casser; Cas 11: // Count Var Gift Var = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + math.abs (étape)); setposition (enft, 'gauche', getPosition (enft, 'Left') + Step); if (compter <5? Count ++: (count = 0, Step * = - 1); 'TOP')> 640 || ClearInterval (ET);}}, 80); casser; Cas 12: // Bomb Count Var Count = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + math.abs (étape)); setposition (enft, 'gauche', getPosition (enft, 'Left') + Step); if (compter <5? Count ++: (count = 0, Step * = - 1); 'TOP')> 640 || ClearInterval (ET);}}, 80); casser; Cas 13: // Count Var Gift Var = 0; et = setInterval (function () {if (node_exist (enft)) {setPosition (enft, 'top', getPosition (enft, 'top') + math.abs (étape)); setposition (enft, 'gauche', getPosition (enft, 'Left') + Step); if (compter <5? Count ++: (count = 0, Step * = - 1); 'TOP')> 640 || ClearInterval (ET);}}, 80); casser; }} // destroy destren = function (dobj) {// dobj: l'objet détruit var dest = document.createElement ('div'); setClass (dest, «détruire»); setPosition (dest, «top», getPosition (dobj, «top»)); setPosition (dest, «gauche», getPosition (dobj, «gauche»)); ft.parentNode.ApendChild (dest); if (dobj.id == 'Fighter') {// Le combattant a été hit disp (dobj.id, 'hide'); puissance = 1; bombnum = 3; Fightnum--; Sethtml («Fighttern», Fightnum); Sethtml ('Bombnum', Bombnum); is_lock = 1; } else {dobj.parentNode.removechild (dobj); } var Step = 0; var et = setInterval (function () {if (Step <11) {setBgPosition (dest, Step * (- 48), 0); Step ++;} else {if (dobj.id == 'Fighter') {settimeout (function () {if (Fightternum> 0) {laveLontinue ();} else {if (curboss! = null) {obj) Curboss [OBJ ']; obj.parentNode.reMovechild (OBJ);} GameOver (); } // boss war bosswar = function () {var boss = bossdata [niveau 1]; var bossft = document.CreateElement ('div'); setClass (bossft, 'boss' + niveau); setPosition (bossft, «gauche», boss [«gauche»]); setPosition (bossft, 'top', boss ['top']); ft.parentNode.ApendChild (Bossft); curboss = {"armor": boss ['armour'], "obj": bossft}; Switch (Level) {cas 1: // Boss 1 Cas 2: // Boss 2 Cas 3: // Boss 3 Case 4: // Boss 4 Cas 5: // Boss 5 Cas 6: // Boss 6 var Step = -3; Var Count = 0; var et = setInterval (function () {if (getPosition (bossft, 'top') <50) {// boss entrent setPosition (bossft, 'top', getPosition (bossft, 'top') + 5);} else {if (curboss ['armor'] <= 0) {// boss over clairement (et); if (getPosition (bossft, 'Left')> 10) {setPosition (bossft, 'Left', getPosition (bossft, 'Left') + étape);} else {Step * = - 1; } else {Step * = - 1;}} if (count> = 35 && count% 35 == 0). Count% 100 == 0) {Attack (Bossft, 3, 60, 92);} Count <8400? casser; }} / * attaque * OBJ Aircraft ennemi * Type d'attaque Type * gauche Bullet Initial gauche * Top Bullet Top initial * / Attack = fonction (obj, type, gauche, haut) {if (is_lock == 1) {return false; // Si verrouillé, ne tirez pas} var oleft = getPosition (obj, 'gauche') + gauche; var top = getPosition (obj, 'top') + top; switch (type) {cas 1: // Attaquez au combattant // la position initiale de la balle et de la position du combattant var oppoint = {x: oleft + 7, y: otop + 7}; var dpoint = {x: getPosition (ft, 'gauche') + 25, y: getPosition (ft, 'top') + 25}; var p = vector (opoint, dpoint, 8); enftBullet ('Bullet', oleft, top, p [0], p [1], 35); casser; cas 2: // attaque droite var num = 3; var st = setInterval (function () {if (num> 0) {enftbullet ('bullet', oleft, top, 0, 8, 35); num -;} else {ClearInterval (st);}}, 150); casser; Cas 3: // Attaque de dispersion var num = 3; var st = setInterval (function () {if (num> 0) {switch (num) {case 1: enftbullet ('sbullet', oleft, top, 0, 8, 35); break; cas 8, 35); casser; Cas 4: // petite attaque de diffusion var num = 3; var st = setInterval (function () {if (num> 0) {switch (num) {case 1: enftbullet ('bullet', oleft, topop, 0, 8, 35); break; case 2: enftbullet ('bullet', oleft, top, 3, 8, 35); casse; case 3: enftbullet ('Bullet', ooleft, -3, 3: enftbullet ('Bullet', ooleft, -3, 3: Enftbullet ('Bullet', ooleft, -3, 3, 35); Break; casser; }} / * Enft Bullet * Type Bullet Type * oleft, Top Bullet Position * gauche, Bullet supérieur * Speed * / enftBullet = fonction (type, oleft, top, gauche, haut, vitesse) {var bullet = document.CreateElement ('div'); setClass (balle, type); setPosition (balle, «gauche», oleft); setPosition (balle, «haut», haut); ft.parentNode.ApendChild (Bullet); var et = setInterval (function () {setPosition (bullet, 'top', getPosition (bullet, 'top') + top); setPosition (bullet, 'gauche', getPosition (bullet, 'gauche') + gauche); if (getPosition (Bullet, 'Left')> 400 || getPosition (Bullet, 'gauche') <- 30 || getPosition (Bullet, ') getPosition (Bullet, 'top')> 640 || } // boss sur boss = function () {obj = curboss ['obj']; obj.parentnode.removechild (obj); ScoreUp (6); // Score de boss var dest = document.CreateElement ('div'); setClass (dest, «destreboss»); setPosition (dest, «top», getPosition (obj, «top»)); setPosition (dest, «gauche», getPosition (obj, «gauche»)); ft.parentNode.ApendChild (dest); var étape = 0; var et = setInterval (function () {if (Step <21) {setBgPosition (dest, Step * (- 150), 0);} else if (Step == 21) {dest.parentNode.reMoveChild (dest);} else if (Step == 50) {ClearInterval (et); Liep ();} Step ++;}, 50); } // Continuer LevelContinue = function () {reset_fighter (); disp (ft.id, «show»); setProtect (); Fighter_Init (); } // Pass Level Level = function () {KeyPriority = {}; EnemyData = []; Curboss = null; niveau ++; bgsound ('pass', false); var traité = 0; var et = setInterval (function () {is_lock = 1; traited = proced + 15; if (getPosition (ft, 'top')> - 50) {setPosition (ft, 'top', getPosition (ft, 'top') - 15);} if (processEd> = 2500) {ClearInterval (et); trans (ft.id, 'hide'); bgchange (0); } // Update scoreUp = function (type) {if (typeof (scoretag [type])! = 'undefined') {score = score + scoretag [type] * niveau; sethtml ('score', score); if (score> hiscore) {hiscore = score; Sethtml («Hiscore», Hiscore); }}} // PowerUp de mise à niveau des balles = fonction () {Power = Power + 1> 4? 4: puissance + 1; } // bomb augment bombop = function () {bombnum ++; Sethtml ('Bombnum', Bombnum); } // Fighter augmente Fighter Up = function () {FighternUm ++; Sethtml («Fighttern», Fighternum); } // Status de protection setProtect = function () {is_protect = 1; if (is_pile == 1) {setClass (ft, 'fighter_sp'); } else {setClass (ft, 'fighter_p'); } setTimeout (function () {is_protect = 0; if (is_pile == 1) {setClass (ft, 'Fighter_S');} else {setClass (ft, 'Fighter');}}, 3000)} // Collision Process IS_LOCK == 0) {// Collision générée if (is_protect == 0) {destrust (ft); ClearInterval (ET); ft.parentnode.removechild (obj); }}} // All Clearance GameClear = function () {is_over = 1; Disp ('GameClear', 'Show'); sethtml ('clearcon', 'jeu clear' + '<br>' + 'score:' + score); bgsound ('clear', false); bgchange ('clear'); setTimeout (function () {bgSound (); init ();}, 16000); } // fin du jeu gameover = function () {is_over = 1; Disp ('Gameover', 'Show'); sethtml ('overcon', 'niveau:' + niveau + '<br>' + 'score:' + score); bgsound («over», false); bgchange («over»); Échec ++; setTimeout (function () {if (failTimes == 3) {alert ('Entrée ↑ ↑ ↓ ← → ← → asas, recommencez le jeu, et il y aura des surprises ^ _ ^');} bgSound (); init ();}, 8000); } // Afficher le message msg_show = function () {sethtml ('niveau', 'niveau -' + niveau); disp («niveau», «show»); is_lock = 1; } // masquer le message msg_hide = function () {disp ('niveau', 'masquer'); } // reset reset = function () {is_start = 0; is_bombing = 0; is_lock = 1; is_over = 0; is_clear = 0; is_protect = 0; niveau = 1; puissance = 1; ackey = {}; KeyPriority = {}; EnemyData = []; score = 0; Fightnenum = 3; bombnum = 3; Sethtml («Hiscore», Hiscore); sethtml ('score', score); Sethtml («Fighttern», Fightenum); Sethtml ('Bombnum', Bombnum); reset_fighter (); reset_pile (); disp ('op', 'show'); Disp ('Gameover', 'Hide'); disp («gameClear», «cache»); bgchange (0); } // Réinitialiser la position du combattant reset_fighter = function () {setPosition (ft, 'top', 640); setPosition (ft, «gauche», 175); setClass (ft, «combattant»); } // réinitialiser la charge reset_pile = function () {is_pile = 0; Pilénum = 0; if (is_protect == 1) {setClass (ft, 'fighter_p'); } else {setClass (ft, 'Fighter'); }} // Fighter Initialisation Fighter_Init = function () {var et = setInterval (function () {if (getPosition (ft, 'top')> 400) {setPosition (ft, 'top', getPosition (ft, 'top') - 12);} else {ClearInterval (et); is_lock = 0; Action (););}}, 30); } // Secret Skill 30 Life Cheat = function () {if (cheatcode.join (',') == '38,38,40,40,37,39,37,39,65,83,65,83,13') {luttenum = 30; Sethtml («Fighternum», Fightnum); } Cheatcode = []; } // Contrôle d'arrière-plan bgmove = fonction (obj) {var Step = 1; var et = setInterval (function () {var bgPos = getBGPOSITION (obj); if (bgPos ['top'] == 640) {setBgPosition (obj, 0, 0); // réinitialiser} else {setBgPosition (obj, bgpos ['gauche'], bgpos ['Top'] + Step); } // commutation d'arrière-plan bgchange = function (file) {var obj = $ ('GamePlane'); setClass (obj, «fichier de balle de jeu» +); } // Music Control bgSound = function (file, loop) {var id = 'AudioPlayer'; if (typeof (file)! = 'undefined') {if (typeof (loop) == 'undefined') {loop = false; } var audiofile = []; AudioFile ['mp3'] = 'music /' + file + '.mp3'; AudioFile ['ogg'] = 'music /' + file + '.ogg'; AudioPlayer (id, audiofile, boucle); } else {AudioPlayer (id); }} renvoie ceci;}) ();相信本文所述对大家javascript游戏设计有一定的借鉴价值。