2013-08-15 3 views
0

На данный момент я просто пытаюсь отобразить шахматную доску, давая мне возможность изменить настройку платы позднее. Код, который у меня есть, направлен на отображение шахматной доски (какой-либо) на веб-странице, однако, когда я вызываю функцию в html, я не могу получить код для отображения платы. Любая помощь с этим будет очень признательна, поскольку я все еще изучаю язык JavaScript.Требуется помощь в определении ошибки в шахматном коде JavaScript.

function displayBoard() { 
    //Initiating peice values for white 
    var wking = 10, wkingValue = "♕"; 
    var wqueen = 9, wqueenValue = "♔"; 
    var wrook = 5, wrookValue = "♖"; 
    var wbishop = 3.5, wbishopValue = "♗"; 
    var wknight = 3, wknightValue = "♘"; 
    var wpawn = 1, wpawnValue = "♙"; 
    //Initiating peice values for black 
    var bking = -wking, bkingValue = "♛"; 
    var bqueen = -wqueen, bqueenValue = "♚"; 
    var brook = -wrook, brookValue = "♜"; 
    var bbishop = -wbishop, bbishopValue = "♝"; 
    var bknight = -wknight, bknightValue = "♞"; 
    var bpawn = -wpawn, bpawnValue = "♟"; 
    //Initialising final string 
    var chessboardTable = ""; 
    //Initialising board array 
    var defaultBoardArray = [[brook, bknight, bbishop, bqueen, bking, bbishop, bknight, brook], 
          [bpawn, bpawn, bpawn, bpawn, bpawn, bpawn, bpawn, bpawn], 
          [0, 0, 0, 0, 0, 0, 0, 0], 
          [0, 0, 0, 0, 0, 0, 0, 0], 
          [0, 0, 0, 0, 0, 0, 0, 0], 
          [0, 0, 0, 0, 0, 0, 0, 0], 
          [wpawn, wpawn, wpawn, wpawn, wpawn, wpawn, wpawn, wpawn], 
          [wrook, wknight, wbishop, wqueen, wking, wbishop, wknight, wrook]]; 

    //Initialising search squares 
    var fLetter = "a"; 
    var fNumber = "1"; 
    var initialfillRank = false; 

    //Beginning main code functions 
    var peice = ""; 
    var defValue = ""; 
    var defClass = ""; 
    var rank = ""; 
    var file = ""; 

    //Entering Looping Functions 
    chessboardTable += "<table id='chess_board' cellpadding='0' cellspacing='0'>"; 
    chessboardTable += "<tr>"; 
    // i = rank; k = file; 
    for (i = 8; i <= 0; i--) { 
     for (k = 1; k <= 8; k++) { 
      //Finding grid coordinates 
      switch (k) { 
       case (1): 
        file === "a"; 
        break; 
       case (2): 
        file === "b"; 
        break; 
       case (3): 
        file === "c"; 
        break; 
       case (4): 
        file === "d"; 
        break; 
       case (5): 
        file === "e"; 
        break; 
       case (6): 
        file === "f"; 
        break; 
       case (7): 
        file === "g"; 
        break; 
       case (8): 
        file === "h"; 
        break; 
       default: 
        break; 
      } 
      switch (i) { 
       case (8): 
        rank === "8"; 
        initialfillRank = true; 
        break; 
       case (7): 
        rank === "7"; 
        initialfillRank = true; 
        break; 
       case (6): 
        rank === "6"; 
        break; 
       case (5): 
        rank === "5"; 
        break; 
       case (4): 
        rank === "4"; 
        break; 
       case (3): 
        rank === "3"; 
        break; 
       case (2): 
        rank === "2"; 
        initialfillRank = true; 
        break; 
       case (1): 
        rank === "1"; 
        initialfillRank = true; 
        break; 
       default: 
        break; 
      } 
      //Finding the class names 
      if (rank === 8) { 
       if (file === "a" || file === "h") { 
        defClass === "brook"; 
        defValue === brookValue; 
       } 
       else if (file === "b" || file === "g") { 
        defClass === "bknight"; 
        defValue === bknightValue; 
       } 
       else if (file === "c" || file === "f") { 
        defClass === "bbishop"; 
        defValue === bbishopValue; 
       } 
       else if (file === "d") { 
        defClass === "bqueen"; 
        defValue === bqueenValue; 
       } 
       else if (file === "e") { 
        defClass === "bking"; 
        defValue === bkingValue; 
       } 
      } 
      else if (rank === 7) { 
       defClass === "bpawn"; 
       defValue === bpawnValue; 
      } 
      else if (rank === 1) { 
       if (file === "a" || file === "h") { 
        defClass === "wrook"; 
        defValue === wrookValue; 
       } 
       else if (file === "b" || file === "g") { 
        defClass === "wknight"; 
        defValue === wknightValue; 
       } 
       else if (file === "c" || file === "f") { 
        defClass === "wbishop"; 
        defValue === wbishopValue; 
       } 
       else if (file === "d") { 
        defClass === "wqueen"; 
        defValue === wqueenValue; 
       } 
       else if (file === "e") { 
        defClass === "wking"; 
        defValue === wkingValue; 
       } 
      } 
      else if (rank === 2) { 
       defClass === "wpawn"; 
       defValue === wpawnValue; 
      } 
      //Printing the code 
      if (initialfillRank === true) { 
       chessboardTable += "<td id='"; 
       chessboardTable += file; 
       chessboardTable += rank; 
       chessboardTable += "'><a href='#' class='"; 
       chessboardTable += defClass; 
       chessboardTable += "'>"; 
       chessboardTable += defValue; 
       chessboardTable += "</a></td>"; 
      } 
      else if (initialfillRank === false) { 
       chessboardTable += "<td id='"; 
       chessboardTable += file; 
       chessboardTable += rank; 
       chessboardTable += "'></td>"; 

      } 
      if (file === "h" && rank !== 1) { 
       chessboardTable += "</tr>"; 
       chessboardTable += "<tr>"; 
      } 
     } 
    } 
    chessboardTable += "</table>"; 
    document.write(chessboardTable); 
} 
+2

Ваш первый цикл не выполняется из-за неправильного состояния. Он должен быть> = вместо <= 'для (i = 8; i> = 0; i--) {' –

ответ

0

Я сделал working fiddle. В первом цикле сохраняется проблема. Вы должны рассчитывать от 7 до 0, иначе вы получите 9 квадратов по оси Y.

for (i = 7; i >= 0; i--) { 

// EDIT

мне удалось получить pieces working. Нет необходимости использовать переменную rank.

+0

Это выглядит довольно круто, за исключением того, что в коде должны отображаться и собственно шахматные фигуры, поэтому у меня есть «& # 9819» в начале кода. Тем не менее, спасибо за исправление кода, поэтому он действительно запускается: D – Sev

+1

изменен: http://jsfiddle.net/jK3Kd/2/ 1) ранги и остаются целыми числами 2) сбросить 'defClass' и' defValue', так что вся доска не заполнено пешками. 3) немного сократил код, используя 1, чтобы избавиться от коммутатора и вычислил 'файл'. Если вам нужна дополнительная помощь, чтобы настроить автоматическое заполнение с помощью массива, просто напишите комментарий ... – thriqon

+0

Спасибо, heaps thriqon, Если мне нужна помощь, я прокомментирую. Но я думаю, что получил это отсюда. – Sev

0

Вы, кажется, используют === везде, даже там, где вы имеете в виду, чтобы назначить значения вместо сравнения их. Пройдите через код и изменить === к =, где вы назначаете значения, например .:

if (file === "a" || file === "h") { // comparison, === is ok 
    defClass = "brook";    // assignment, use single = instead 
    defValue = brookValue;   // --"-- 
} 

и так далее.

Следующая проблема заключается в том, что вы назначаете строковые значения, но строго по сравнению с числами, будет ложным каждый раз:

rank = "8"; 

// ..later: 
if (rank === 8) { 
+0

Спасибо, лучше исправьте это. Тем не менее, теперь, когда я его исправил, он все еще не запускается :( – Sev

+0

Поскольку Марио прокомментировал вопрос выше, условие цикла цикла неверно. – JJJ

+0

@ user2685137: Juhana is right. Замените «===» на «== «в условных выражениях, например (rank === 8), (ранг == 8).« == »проверяет только значение, тогда как« === »проверяет как значение, так и тип данных. –

Смежные вопросы