


Detaillierte Erklärung des Quellcodes von Schach und dunklem Schach in JS mini-game_javascript skills
Das Beispiel in diesem Artikel beschreibt den Chess Dark Chess-Quellcode des JS-Minispiels und wird als Referenz mit allen geteilt. Die Details lauten wie folgt:
Nachdem das Spiel läuft, sieht es wie folgt aus:
Javascript-Teil:
/** chinese chess * Author: fdipzone * Date: 2012-06-24 * Ver: 1.0 */ var gameimg = ['images/a1.gif','images/a2.gif','images/a3.gif','images/a4.gif','images/a5.gif','images/a6.gif','images/a7.gif','images/b1.gif','images/b2.gif','images/b3.gif','images/b4.gif','images/b5.gif','images/b6.gif','images/b7.gif','images/bg.gif','images/bg_over.gif','images/bg_sel.gif']; var chess_obj = new ChessClass(); window.onload = function(){ $('init_btn').onclick = function(){ chess_obj.init(); } var callback = function(){ chess_obj.init(); } img_preload(gameimg, callback); } // chess class function ChessClass(){ this.chess = []; this.boardrows = 4; this.boardcols = 8; this.area = 82; this.player = 1; // 1:red 2:green this.selected = null; // selected chess this.chesstype = ['', 'a', 'b']; this.isover = 0; } // init ChessClass.prototype.init = function(){ this.reset_grade(); this.create_board(); this.create_chess(); this.create_event(); this.player = 1; this.selected = null; this.isover = 0; disp('init_div','hide'); } // create board ChessClass.prototype.create_board = function(){ var board = ''; for(var i=0; i<this.boardrows; i++){ for(var j=0; j<this.boardcols; j++){ board = board + '<div id="' + i + '_' + j + '"><img src="images/chessbg.gif" /></div>'; } } $('board').innerHTML = board; $('board').style.width = this.boardcols * (this.area + 2) + 'px'; $('board').style.height = this.boardrows * (this.area + 2) + 'px'; } // create random chess ChessClass.prototype.create_chess = function(){ // 32 chesses var chesses = ['a1','b7','a2','b7','a2','b7','a3','b7','a3','b7','a4','b6','a4','b6','a5','b5', 'a5','b5','a6','b4','a6','b4','a7','b3','a7','b3','a7','b2','a7','b2','a7','b1']; this.chess = []; while(chesses.length>0){ var rnd = Math.floor(Math.random()*chesses.length); var tmpchess = chesses.splice(rnd, 1).toString(); this.chess.push({'chess':tmpchess, 'type':tmpchess.substr(0,1), 'val':tmpchess.substr(1,1), 'status':0}); } } // create event ChessClass.prototype.create_event = function(){ var self = this; var chess_area = $_tag('div', 'board'); for(var i=0; i<chess_area.length; i++){ chess_area[i].onmouseover = function(){ // mouseover if(this.className!='onsel'){ this.className = 'on'; } } chess_area[i].onmouseout = function(){ // mouseout if(this.className!='onsel'){ this.className = ''; } } chess_area[i].onclick = function(){ // onclick self.action(this); } } } // id change index ChessClass.prototype.getindex = function(id){ var tid = id.split('_'); return parseInt(tid[0])*this.boardcols + parseInt(tid[1]); } // index change id ChessClass.prototype.getid = function(index){ return parseInt(index/this.boardcols) + '_' + parseInt(index%this.boardcols); } // action ChessClass.prototype.action = function(o){ if(this.isover==1){ // game over return false; } var index = this.getindex(o.id); if(this.selected == null){ // 未选过棋子 if(this.chess[index]['status'] == 0){ // not opened this.show(index); }else if(this.chess[index]['status'] == 1){ // opened if(this.chess[index]['type'] == this.chesstype[this.player]){ this.select(index); } } }else{ // 已选过棋子 if(index != this.selected['index']){ // 與selected不是同一位置 if(this.chess[index]['status'] == 0){ // 未打开的棋子 this.show(index); }else if(this.chess[index]['status'] == -1){ // 點空白位置 this.move(index); }else{ // 點其他棋子 if(this.chess[index]['type']==this.chesstype[this.player]){ this.select(index); }else{ this.kill(index); } } } } } // show chess ChessClass.prototype.show = function(index){ $(this.getid(index)).innerHTML = '<img src="images/' + this.chess[index]['chess'] + '.gif" />'; this.chess[index]['status'] = 1; // opened if(this.selected!=null){ // 清空選中 $(this.getid(this.selected.index)).className = ''; this.selected = null; } this.change_player(); this.gameover(); } // select chess ChessClass.prototype.select = function(index){ if(this.selected!=null){ $(this.getid(this.selected['index'])).className = ''; } this.selected = {'index':index, 'chess':this.chess[index]}; $(this.getid(index)).className = 'onsel'; } // move chess ChessClass.prototype.move = function(index){ if(this.beside(index)){ this.chess[index] = {'chess':this.selected['chess']['chess'], 'type':this.selected['chess']['type'], 'val':this.selected['chess']['val'], 'status':this.selected['chess']['status']}; this.remove(this.selected['index']); this.show(index); } } // kill chess ChessClass.prototype.kill = function(index){ if(this.beside(index)==true && this.can_kill(index)==true){ this.chess[index] = {'chess':this.selected['chess']['chess'], 'type':this.selected['chess']['type'], 'val':this.selected['chess']['val'], 'status':this.selected['chess']['status']}; this.remove(this.selected['index']); var killed = this.player==1? 2 : 1; $('grade_num' + killed).innerHTML = parseInt($('grade_num' + killed).innerHTML)-1; this.show(index); } } // remove chess ChessClass.prototype.remove = function(index){ this.chess[index]['status'] = -1; // empty $(this.getid(index)).innerHTML = ''; $(this.getid(index)).className = ''; } /* check is beside * @param index 目標棋子index * @param selindex 执行的棋子index,可为空, 为空则读取选中的棋子 */ ChessClass.prototype.beside = function(index,selindex){ if(typeof(selindex)=='undefined'){ if(this.selected!=null){ selindex = this.selected['index']; }else{ return false; } } if(typeof(this.chess[index])=='undefined'){ return false; } var from_info = this.getid(selindex).split('_'); var to_info = this.getid(index).split('_'); var fw = parseInt(from_info[0]); var fc = parseInt(from_info[1]); var tw = parseInt(to_info[0]); var tc = parseInt(to_info[1]); if(fw==tw && Math.abs(fc-tc)==1 || fc==tc && Math.abs(fw-tw)==1){ // row or colunm is same and interval=1 return true; }else{ return false; } } /* check can kill * @param index 被消灭的棋子index * @param selindex 执行消灭的棋子index,可为空, 为空则读取选中的棋子 */ ChessClass.prototype.can_kill = function(index,selindex){ if(typeof(selindex)=='undefined'){ // 没有指定执行消灭的棋子 if(this.selected!=null){ // 有选中的棋子 selindex = this.selected['index']; }else{ return false; } } if(this.chess[index]['type']!=this.chesstype[this.player]){ if(parseInt(this.chess[selindex]['val'])==7 && parseInt(this.chess[index]['val'])==1){ // 7 can kill 1 return true; }else if(parseInt(this.chess[selindex]['val'])==1 && parseInt(this.chess[index]['val'])==7){ // 1 can't kill 7 return false; }else if(parseInt(this.chess[selindex]['val']) <= parseInt(this.chess[index]['val'])){ // small kill big return true; } } return false; } // change player ChessClass.prototype.change_player = function(){ if(this.player == 1){ this.player = 2; // to green $('grade_img2').className = 'img_on'; $('grade_img1').className = 'img'; }else{ this.player = 1; // to red $('grade_img1').className = 'img_on'; $('grade_img2').className = 'img'; } } // reset grade ChessClass.prototype.reset_grade = function(){ $('grade_img1').className = 'img_on'; $('grade_img2').className = 'img'; $('grade_num1').innerHTML = $('grade_num2').innerHTML = 16; $('grade_res1').className = $('grade_res2').className = 'none'; $('grade_res1').innerHTML = $('grade_res2').innerHTML = ''; } // game over ChessClass.prototype.gameover = function(){ if($('grade_num1').innerHTML==0 || $('grade_num2').innerHTML==0){ // 任一方棋子为0 this.isover = 1; this.show_grade(); disp('init_div','show'); }else{ if(this.can_action()==false){ this.isover = 1; this.show_grade(); disp('init_div','show'); } } } // show grade ChessClass.prototype.show_grade = function(){ var num1 = parseInt($('grade_num1').innerHTML); var num2 = parseInt($('grade_num2').innerHTML); if(num1>num2){ // 红方胜 $('grade_res2').innerHTML = 'LOSS'; $('grade_res2').className = 'loss'; $('grade_res1').innerHTML = 'WIN'; $('grade_res1').className = 'win'; }else if(num1<num2){ // 黑方胜 $('grade_res1').innerHTML = 'LOSS'; $('grade_res1').className = 'loss'; $('grade_res2').innerHTML = 'WIN'; $('grade_res2').className = 'win'; }else{ // 平局 $('grade_res1').innerHTML = $('grade_res2').innerHTML = 'DRAW'; $('grade_res1').className = $('grade_res2').className = 'draw'; } } // check chess can action ChessClass.prototype.can_action = function(){ var chess = this.chess; for(var i=0,max=chess.length; i<max; i++){ if(chess[i].status==0){ // 有未翻开的棋子 return true; }else{ if(chess[i].status==1 && chess[i].type==this.chesstype[this.player]){ // 己方已翻开的棋子 if(this.beside(i-this.boardcols, i) && (chess[i-this.boardcols].status==-1 || this.can_kill(i-this.boardcols,i) )){ // 上 return true; } if(this.beside(i+this.boardcols, i) && (chess[i+this.boardcols].status==-1 || this.can_kill(i+this.boardcols,i) )){ // 下 return true; } if(this.beside(i-1, i) && (chess[i-1].status==-1 || this.can_kill(i-1,i) )){ // 左 return true; } if(this.beside(i+1, i) && (chess[i+1].status==-1 || this.can_kill(i+1,i) )){ // 右 return true; } } } } return false; } /** common function */ // get document.getElementBy(id) function $(id){ this.id = id; return document.getElementById(id); } // get document.getElementsByTagName function $_tag(name, id){ if(typeof(id)!='undefined'){ return $(id).getElementsByTagName(name); }else{ return document.getElementsByTagName(name); } } /* div show and hide * @param id dom id * @param handle show or hide */ function disp(id, handle){ if(handle=='show'){ $(id).style.display = 'block'; }else{ $(id).style.display = 'none'; } } /* img preload * @param img 要加载的图片数组 * @param callback 图片加载成功后回调方法 */ function img_preload(img, callback){ var onload_img = 0; var tmp_img = []; for(var i=0,imgnum=img.length; i<imgnum; i++){ tmp_img[i] = new Image(); tmp_img[i].src = img[i]; if(tmp_img[i].complete){ onload_img ++; }else{ tmp_img[i].onload = function(){ onload_img ++; } } } var et = setInterval( function(){ if(onload_img==img.length){ // 定时器,判断图片完全加载后调用callback clearInterval(et); callback(); } },200); }
Klicken Sie hier für den vollständigen BeispielcodeDownload von dieser Website.
Ich glaube, dass das, was in diesem Artikel beschrieben wird, einen gewissen Referenzwert für das Erlernen des Javascript-Spieledesigns für jeden hat.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Als Programmiersprache auf hohem Niveau ist Python leicht zu erlernen, leicht zu lesen und zu schreiben und wird häufig in der Softwareentwicklung eingesetzt. Aufgrund des Open-Source-Charakters von Python ist der Quellcode jedoch für andere leicht zugänglich, was einige Herausforderungen für den Schutz des Software-Quellcodes mit sich bringt. Daher müssen wir in praktischen Anwendungen häufig einige Methoden anwenden, um den Python-Quellcode zu schützen und seine Sicherheit zu gewährleisten. Beim Schutz des Software-Quellcodes stehen für Python verschiedene Anwendungspraktiken zur Auswahl. Nachfolgend sind einige häufige aufgeführt

Wie kann der Quellcode von PHP-Code im Browser angezeigt werden, ohne dass er interpretiert und ausgeführt wird? PHP ist eine serverseitige Skriptsprache, die häufig zur Entwicklung dynamischer Webseiten verwendet wird. Wenn eine PHP-Datei auf dem Server angefordert wird, interpretiert und führt der Server den darin enthaltenen PHP-Code aus und sendet den endgültigen HTML-Inhalt zur Anzeige an den Browser. Manchmal möchten wir jedoch den Quellcode der PHP-Datei direkt im Browser anzeigen, anstatt ihn auszuführen. In diesem Artikel wird erläutert, wie der Quellcode von PHP-Code im Browser angezeigt wird, ohne dass er interpretiert und ausgeführt wird. In PHP können Sie verwenden

Sie können die Entwicklertools des Browsers verwenden, um den Quellcode der Website anzuzeigen. Im Google Chrome-Browser: 1. Öffnen Sie den Chrome-Browser und besuchen Sie die Website, auf der Sie den Quellcode anzeigen möchten Seite und wählen Sie „Inspizieren“ oder drücken Sie die Tastenkombination Strg + Umschalt + I, um die Entwicklertools zu öffnen. 3. Wählen Sie in der oberen Menüleiste der Entwicklertools die Registerkarte „Elemente“ aus. 4. Sehen Sie sich einfach den HTML- und CSS-Code an der Website.

Schritte zum Anzeigen des Tomcat-Quellcodes in IDEA: 2. Tomcat-Quellcode in IDEA importieren; 4. Das Funktionsprinzip von Tomcat verstehen; Aktualisieren 7. Verwenden Sie Tools und Plug-Ins. 8. Nehmen Sie an der Community teil und leisten Sie einen Beitrag. Detaillierte Einführung: 1. Laden Sie den Tomcat-Quellcode herunter. Sie können das Quellcodepaket von der offiziellen Website von Apache Tomcat herunterladen. Normalerweise liegen diese Quellcodepakete im ZIP- oder TAR-Format vor.

Vue kann den Quellcode in Vue anzeigen: 1. Holen Sie sich Vue über „git clone https://github.com/vuejs/vue.git“ 2. Installieren Sie Abhängigkeiten über „npm i“; 3. Über „npm i -g rollup“ 4. Ändern Sie das Entwicklungsskript. 5. Debuggen Sie den Quellcode.

PHP-Quellcodefehler: Um das Indexfehlerproblem zu lösen, sind spezifische Codebeispiele erforderlich. Aufgrund der rasanten Entwicklung des Internets stoßen Entwickler beim Schreiben von Websites und Anwendungen häufig auf verschiedene Probleme. Unter diesen ist PHP eine beliebte serverseitige Skriptsprache, und ihre Quellcodefehler sind eines der Probleme, auf die Entwickler häufig stoßen. Wenn wir versuchen, die Indexseite einer Website zu öffnen, werden manchmal verschiedene Fehlermeldungen angezeigt, z. B. „InternalServerError“, „Unde

Durch das Verständnis des Quellcodes des Golang-Frameworks können Entwickler die Essenz der Sprache beherrschen und die Funktionen des Frameworks erweitern. Besorgen Sie sich zunächst den Quellcode und machen Sie sich mit seiner Verzeichnisstruktur vertraut. Zweitens lesen Sie den Code, verfolgen Sie den Ausführungsfluss und verstehen Sie die Abhängigkeiten. Praxisbeispiele zeigen, wie Sie dieses Wissen anwenden: Erstellen Sie benutzerdefinierte Middleware und erweitern Sie das Routing-System. Zu den Best Practices gehören das schrittweise Lernen, das Vermeiden von sinnlosem Kopieren und Einfügen, die Verwendung von Tools und der Verweis auf Online-Ressourcen.

In diesem Artikel wird die Quellcode-Analyse und -Optimierung des Go-Frameworks untersucht. Die Quellcodestruktur umfasst vier Hauptpakete, die die Kern-Framework-Logik, den Anforderungskontext, die Datenbindung und das Antwort-Rendering umfassen. Zu den Optimierungstechniken gehören: 1. Verwenden Sie Routing-Bäume, um die Routenverarbeitung zu optimieren und die Geschwindigkeit der Routensuche deutlich zu erhöhen. 2. Verwenden Sie Middleware für Caching und Komprimierung, um die Serverlast und Antwortzeit zu reduzieren. 3. Vermeiden Sie zeitaufwändige Vorgänge bei Rückrufen, um eine hohe Reaktionsfähigkeit aufrechtzuerhalten. 4. Aktivieren Sie die Protokollierung und analysieren Sie langsame Anfragen, um Leistungsengpässe zu identifizieren. 5. Aktualisieren Sie die Framework-Versionen regelmäßig, um von den neuesten Leistungsverbesserungen zu profitieren.
