2013-03-01 3 views
1

Я пишу игру tic tac toe с использованием html, css и JavaScript. Я создал кнопки для ввода функции markbox(cell) и функцию deres, называемую win_condition, которая проверяет условия, чтобы выиграть игру.tic tac toe с javascript

В моем коде это не проверка winning_condition правильно wats он сталкивается с проблемой ??

Вот мой код


<html> 
<head> 
    <title>TIC TAC TOE</title> 
    <script type="text/javascript"> 
    var cell; 
    var symbol = "X"; 
    function markbox(cell) 
    { 
     if (cell.value == "  ") 
     { 
     cell.value = symbol; 
     if (symbol == "X") 
     symbol = "O"; 
     else 
     symbol = "X"; 
     } 
     //else 
     //{ 
     //alert("This square is occupied"); 
     //} 
     if (winning_condition()) 
     { 
     alert ("You win!"); 
     return; 
     } 
     else if(!winning_condition()) 
     { 
     alert("You loose!"); 
     } 
     else 
     { 
     alert("Draw!") 
     } 
    } 
    function winning_condition() 
     { 
     if(document.f1.b00.value==symbol && document.f1.b01.value==symbol && document.f1.b02.value==symbol) 
     return true; 
     else if(document.f1.b10.value==symbol && document.f1.b11.value==symbol && document.f1.b12.value==symbol) 
     return true; 
     else if(document.f1.b20.value==symbol && document.f1.b21.value==symbol && document.f1.b22.value==symbol) 
     return true; 
     else if(document.f1.b00.value==symbol && document.f1.b10.value==symbol && document.f1.b20.value==symbol) 
     return true; 
     else if(document.f1.b01.value==symbol && document.f1.b11.value==symbol && document.f1.b21.value==symbol) 
     return true; 
     else if(document.f1.b02.value==symbol && document.f1.b12.value==symbol && document.f1.b22.value==symbol) 
     return true; 
     else if(document.f1.b00.value==symbol && document.f1.b11.value==symbol && document.f1.b22.value==symbol) 
     return true; 
     else if(document.f1.b02.value==symbol && document.f1.b11.value==symbol && document.f1.b20.value==symbol) 
     return true; 
     } 
    function clearBtn() 
    { 
     status = "X" 
     document.f1.b00.value=" "; 
     document.f1.b01.value=" "; 
     document.f1.b02.value=" "; 
     document.f1.b10.value=" "; 
     document.f1.b11.value=" "; 
     document.f1.b12.value=" "; 
     document.f1.b20.value=" "; 
     document.f1.b21.value=" "; 
     document.f1.b22.value=" "; 
    } 
    </script> 
</head> 
<body> 
    <div align="center"> 
    <h1>Tic Tac Toe</h1> 
    <form name="f1"> 
     <input type="button" name="b00" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b01" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b02" value="  " onclick="markbox(this)/></br> 
     <input type="button" name="b10" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b11" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b12" value="  " onclick="markbox(this)"/></br> 
     <input type="button" name="b20" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b21" value="  " onclick="markbox(this)"/> 
     <input type="button" name="b22" value="  " onclick="markbox(this)"/> 
     </br></br></br> 
     <input type="reset" value="RESET GAME" onclick="clearBtn()"> 
    </form>  
    </div> 
</body> 

+0

Я рекомендую вам узнать, как отлаживать код JavaScript. Например. http://odetocode.com/blogs/scott/archive/2012/03/15/debugging-javascript-with-chrome.aspx – Fdr

+0

Каким образом он не проверяет 'victory_condition()' правильно? С первого взгляда я не вижу никакого способа, чтобы 'victory_condition()' мог когда-либо возвращать что-либо, кроме true, но, может быть, я что-то упустил. – ElPedro

+0

воспроизвел ваш код на JSFiddle, если он кому-то помог: http://jsfiddle.net/samliew/J2pJ7/ –

ответ

0

Первое, что вы не правильно закрыть свой HTML:

onclick="markbox(this)/> 

должно быть:

onclick="markbox(this)" /> 

(обратите внимание на «в конце»).

Проблема заключается в том, что вы сбрасываете символ var в тот момент, когда вы нажимаете на одну из кнопок. Вы всегда будете проверять неправильный символ, чтобы выиграть. Сделайте var last_clicked и используйте это в своем win_condition.

Попробуйте этот код, чтобы работать на:

http://jsfiddle.net/wG9G5/1/

+0

thnx для ваших ans Теперь я редактировал приведенный выше код так: теперь, если я хочу, чтобы 2-й игрок должен быть компьютером, тогда какие изменения я должен внести в этот код. – user2060304

+0

Что вам нужно сделать, так это сделать такую ​​функцию, как computerMove(). В этой функции вы должны проверить, какие поля не нажимаются и случайно выбрать одно из этих полей. –