Не добавляет очки игроку в функции
Доброго времени суток уважаемые Знатоки!
Помогите пожалуйста разобраться почему в функции VerificationEnsemble не добавляет очко игроку. <!DOCTYPE html> <html> <head> <script> var namePlayer = prompt("What is your name:","Player"); var timeFixe = 1000*prompt("Give the time for the tour(in secondes):","100"); var pointsPlayer = 0; var pointsComp = 0; </script> </head> <body> <script> var doCartes = function() { var element = ["A","B","C"]; var compteur = 0; for (var i=0; i<numValeur; i++) { for (var j=0; j<numValeur; j++) { for (var k=0; k<numValeur; k++) { for (var l=0; l<numValeur; l++) { cartes[compteur] = element[i]+element[j]+element[k]+element[l]; compteur++; } } } } }; var shuffleCartes = function(cartes)//эта функция перемешивает карты но почему то не работает { if (cartes && cartes.length) { for (var i=0; i<cartes.length; ++i) { var j = Math.floor(Math.random() * cartes.length); if (i !== j) swap(cartes,i,j); } } return cartes; }; var carteOnClick = function(cell) { tab = document.getElementById("ensemble"); if (cell.style.background == "") { // добавляют карту к сет for (var i = 0; i < 3; i++) { if (tab[i].value == "") { tab[i].value = cell.innerText; cell.style.background = "aqua"; break; } } } else if (cell.style.background == "aqua") { // уберают карту из сета cell.style.background = ""; for (var i = 0; i < 3; i++) { if (tab[i].value == cell.innerText) { for (var j=i+1; j<3; j++) tab[j-1].value = tab[j].value; break; } } tab[2].value = ""; } }; <!-- этот код генерирует таблицу с элементами то есть картами. --> function genererPlateauCartes() { // get the reference for the body var body = document.getElementsByTagName("body")[0]; // creates a <table> element and a <tbody> element var tbl = document.createElement("table"); var tblBody = document.createElement("tbody"); // creating all cells for (var i = 0; i < 4; i++) { // creates a table row var row = document.createElement("tr"); for (var j = 0; j < 3; j++) { // Create a <td> element and a text node, make the text // node the contents of the <td>, and put the <td> at // the end of the table row var cell = document.createElement("td"); var cellText = document.createTextNode(cartes[prochaineCarte++]); cell.onclick = function() { carteOnClick(this) }; cell.appendChild(cellText); row.appendChild(cell); } // add the row to the end of the table body tblBody.appendChild(row); } // put the <tbody> in the <table> tbl.appendChild(tblBody); // appends <table> into <body> body.appendChild(tbl); // sets the border attribute of tbl to 1; tbl.setAttribute("border", "3"); }; </script> <h1> Set! </h1> <h2 id="timer"> оставшиеся время</h2> <script> <!-- определяет таблицу карт. Имеются 81 карта. --> var numFacteur = 4; var numValeur = 3; var numCartes = Math.pow(3,4); var cartes = Array(numCartes); var prochaineCarte = 0; doCartes(); shuffleCartes(); genererPlateauCartes(); var od = Date.now()+timeFixe; var myVar = setInterval(function(){myTimer()},1000); var endOfRound = setInterval(function(){finTour()},timeFixe); var myTimer = function() { var d=Date.now(); // var t=d.toLocaleTimeString(); var timerSeconds = Math.round((od-d)/1000); if (timerSeconds >= 0) { document.getElementById("timer").innerHTML= "Time left for this tour: "+timerSeconds; } }; var tourOfComp = function() { /*Если это возможно то компьютер должен выбрать Сет (то есть карты которые * состовляют Сет) и добавить себе очко и выбрать карты из колоды что бы * заполнить недостающие в таблице * Если же это невозможно сделать то тогда выбрать карты наугад и * добавить карты из колоды и заменить избранные при этом очки компьютеру * не добавляются*/ }; var finTour = function() { // выполнить роль компьютера // возобновить время od = Date.now()+timeFixe; }; var verificationEnsemble = function() { var tab = document.getElementById("ensemble"); var mot0= tab.children[0].value; var mot1= tab.children[1].value; var mot2= tab.children[2].value; if ((mot0.charAt(0)==mot1.charAt(0)&& mot0.charAt(0)==mot2.charAt(0)|| mot0.charAt(0)!=mot1.charAt(0)&& mot0.charAt(0)!= mot2.charAt(0)&& mot1.charAt(0)!=mot2.charAt(0))&&(mot0.charAt(1)==mot1.charAt(1) && mot0.charAt(1)==mot2.charAt(1)||mot0.charAt(1)!=mot1.charAt(1) &&mot0.charAt(1)!=mot2.charAt(1)&&mot1.charAt(1)!=mot2.charAt(1)) &&(mot0.charAt(2)==mot1.charAt(2)&&mot0.charAt(2)==mot2.charAt(2) ||mot0.charAt(2)!=mot1.charAt(2)&&mot0.charAt(2)!=mot2.charAt(2) &&mot1.charAt(2)!=mot2.charAt(2))&&(mot0.charAt(3)==mot1.charAt(3) &&mot0.charAt(3)==mot2.charAt(3)||mot0.charAt(3)!=mot1.charAt(3) &&mot0.charAt(3)!=mot2.charAt(3)&&mot1.charAt(3)!=mot2.charAt(3))) //alert("Bravo!"); pointsPlayer++; else (pointsPlayer --); return (pointsPlayer); /* В этой функции нужно проверит есть ли Сет ну это я уже проверила Uncaught SyntaxError: Unexpected token ILLEGAL * Если Сет есть то нужно добавить очко игроку (но оно не добавляется * почему то) а также выбрать три другие карты из колоды что бы заменить * взятые карты * Затем если нету Сет то теперь компьютер выбирает карты }; </script> <br> <!-- Voici les cartes choisi pour l'ensemble --> <!-- ils sont accessibles par id "ensemble", voit le fonction carteOnClick -- -- pour un exemple comment utiliser --> <h4> Ensemble: </h4> <form id="ensemble"> <input type=text maxlength=4 size=4 readOnly=true /> <input type=text maxlength=4 size=4 readOnly=true /> <input type=text maxlength=4 size=4 readOnly=true /> <input type="button" value="Verifier!" onclick="verificationEnsemble()" /> </form> <br> <h2> Les Points </h2> <h3 id="points"> <script> document.write(namePlayer + ": " + pointsPlayer + "<br>") document.write("Computer: " + pointsComp) </script> </h3> </body> |
Кто ж будет копаться в таком коде то?? Хотя бы правила рассказали.. я вот запустил и что делать не знаю.
вот вы говорите, что очки не считаются. я так думаю дело в вашем длинном и непонятном условии: if ((mot0.charAt(0)==mot1.charAt(0)&& mot0.charAt(0)==mot2.charAt(0)|| mot0.charAt(0)!=mot1.charAt(0)&& mot0.charAt(0)!= mot2.charAt(0)&& mot1.charAt(0)!=mot2.charAt(0))&&(mot0.charAt(1)==mot1.charAt(1) && mot0.charAt(1)==mot2.charAt(1)||mot0.charAt(1)!=mot1.charAt(1) &&mot0.charAt(1)!=mot2.charAt(1)&&mot1.charAt(1)!=mot2.charAt(1)) &&(mot0.charAt(2)==mot1.charAt(2)&&mot0.charAt(2)==mot2.charAt(2) ||mot0.charAt(2)!=mot1.charAt(2)&&mot0.charAt(2)!=mot2.charAt(2) &&mot1.charAt(2)!=mot2.charAt(2))&&(mot0.charAt(3)==mot1.charAt(3) &&mot0.charAt(3)==mot2.charAt(3)||mot0.charAt(3)!=mot1.charAt(3) &&mot0.charAt(3)!=mot2.charAt(3)&&mot1.charAt(3)!=mot2.charAt(3))) попробуйте разбить его на части результат можно отслеживать в консоли console.log(parameter) |
Угумс,
у вас нет вывода результа на экран, у вас незакрыты коментарии и html, вы используите innerText - ff в пролёте.неизвестные правила но я думаю найти три почти однаковых слова 1 буква разная но на одном и томже месте. |
Цитата:
Уважаемый Рони, Не подскажите как реализовать вывод результат на экран? Если честно я просто не знаю как это сделать( |
document.getElementById(ид_эелемента).i nnerHTML = ответ;
|
например:
<div id="elem1"></div> document.getElementById('elem1').innerHTML = 'response'; |
для отладки лучше использовать console.log
|
Угумс,замените return --
document.getElementById('points').innerHTML =namePlayer + ": " + pointsPlayer + "<br>"+ "Computer: " + pointsComp; //return (pointsPlayer); |
Цитата:
Цитата:
|
Добрый вечер,
Вроде подправила, но все равно есть несколько моментов которые мне не даются(( Это строчки № 1. 29 2. 139 3. 148 4. 165 Помогите пожалуйста, после завтра уже сдавать... горю... <!DOCTYPE html> <html> <head> <script> var namePlayer = prompt("What is your name:","Player"); var timeFixe = 1000*prompt("Give the time for the tour(in secondes):","100"); var pointsPlayer = 0; var pointsComp = 0; </script> </head> <body> <script> var doCartes = function() { var element = ["A","B","C"]; var compteur = 0; for (var i=0; i<numValeur; i++) { for (var j=0; j<numValeur; j++) { for (var k=0; k<numValeur; k++) { for (var l=0; l<numValeur; l++) { cartes[compteur] = element[i]+element[j]+element[k]+element[l]; compteur++; } } } } }; var swap = function(cartes,from,to)// переделала но все равно не работает, не перемешивает карты в колоде { ++swap.calls; var temp = cartes[from]; cartes[from] = cartes[to]; cartes[to] = temp; }; var shuffleCartes = function(cartes) { if (cartes && cartes.length) { for (var i=0; i<cartes.length; ++i) { var j = Math.floor(Math.random() * cartes.length); if (i !== j) swap(cartes,i,j); } } return cartes; }; var carteOnClick = function(cell) { tab = document.getElementById("ensemble"); if (cell.style.background == "") { // добавляют карту к сет Uncaught TypeError: Cannot read property 'style' of undefined (repeated 4 times) for (var i = 0; i < 3; i++) { if (tab[i].value == "") { tab[i].value = cell.innerText; cell.style.background = "aqua"; break; } } } else if (cell.style.background == "aqua") { // уберают карту из сета cell.style.background = ""; for (var i = 0; i < 3; i++) { if (tab[i].value == cell.innerText) { for (var j=i+1; j<3; j++) tab[j-1].value = tab[j].value; break; } } tab[2].value = ""; } }; <!-- этот код генерирует таблицу с элементами то есть картами. --> function genererPlateauCartes() { // get the reference for the body var body = document.getElementsByTagName("body")[0]; // creates a <table> element and a <tbody> element var tbl = document.createElement("table"); var tblBody = document.createElement("tbody"); // creating all cells for (var i = 0; i < 4; i++) { // creates a table row var row = document.createElement("tr"); for (var j = 0; j < 3; j++) { // Create a <td> element and a text node, make the text // node the contents of the <td>, and put the <td> at // the end of the table row var cell = document.createElement("td"); var cellText = document.createTextNode(cartes[prochaineCarte++]); cell.onclick = function() { carteOnClick(this) }; cell.appendChild(cellText); row.appendChild(cell); } // add the row to the end of the table body tblBody.appendChild(row); } // put the <tbody> in the <table> tbl.appendChild(tblBody); // appends <table> into <body> body.appendChild(tbl); // sets the border attribute of tbl to 1; tbl.setAttribute("border", "3"); }; </script> <h1> Set! </h1> <h2 id="timer"> оставшиеся время</h2> <script> <!-- определяет таблицу карт. Имеются 81 карта. --> var numFacteur = 4; var numValeur = 3; var numCartes = Math.pow(3,4); var cartes = Array(numCartes); var prochaineCarte = 0; doCartes(); shuffleCartes(); genererPlateauCartes(); var od = Date.now()+timeFixe; var myVar = setInterval(function(){myTimer()},1000); var endOfRound = setInterval(function(){finTour()},timeFixe); var myTimer = function() { var d=Date.now(); // var t=d.toLocaleTimeString(); var timerSeconds = Math.round((od-d)/1000); if (timerSeconds >= 0) { document.getElementById("timer").innerHTML= "Time left for this tour: "+timerSeconds; } }; var tourOfComp = function() { //я бы хотела спросить: здесь роль компьютера выполняю я // искуственно, а возможно ли такое что бы компьютер сам выбрал нужные карты то есть //те которые состовляют сет или это очень сложный и долгий код и я не смогу его сделать? carteOnClick(); // помоему эта функция не вызывается, не знаю почему //здесь компьютер должен начать свою игру (ну я вместо него) то есть вызвать функция //для выбора карт в сет но при этом очки не добаляется а просто все стирается добавляются //новые карты и игра переходит к игроку снова, но у меня помоему цикл этот не получился не знаю почему // как сделать непрерывную игру пока не закончаться все карты? tab = document.getElementById("ensemble");// здесь я хочу стереть выбранные компьютером карты // но почему то нет перехода от вызова функции carteOnClick(); к этому коду for (var i = 0; i < 12; i++) { if (document.getElementsByTagName("td")[i].style.background=="aqua"){ document.getElementsByTagName("td")[i].innerHTML= cartes[prochaineCarte++]}} for (var j = 0; j < 12; j++) { if (document.getElementsByTagName("td")[j].style.background=="aqua") document.getElementsByTagName("td")[j].style.background="none"; } for (var k = 0; k < 3; k++) { tab[k].value = ""; } }; var finTour = function() { tourOfComp(); od = Date.now()+TimeFixe;// я здесь хотела установить время //что бы когда оно заканчивалось игра для игрока прерывалась и переходила к компьютеру //ну что то не могу сообразить как это можно сделать carteOnClick();//почему то эта функция не вызывается здесь }; var verificationEnsemble = function() { var tab = document.getElementById("ensemble"); var mot0= tab.children[0].value; var mot1= tab.children[1].value; var mot2= tab.children[2].value; if ((mot0.charAt(0)==mot1.charAt(0)&& mot0.charAt(0)==mot2.charAt(0)|| mot0.charAt(0)!=mot1.charAt(0)&& mot0.charAt(0)!= mot2.charAt(0)&& mot1.charAt(0)!=mot2.charAt(0))&&(mot0.charAt(1)==mot1.charAt(1) && mot0.charAt(1)==mot2.charAt(1)||mot0.charAt(1)!=mot1.charAt(1) &&mot0.charAt(1)!=mot2.charAt(1)&&mot1.charAt(1)!=mot2.charAt(1)) &&(mot0.charAt(2)==mot1.charAt(2)&&mot0.charAt(2)==mot2.charAt(2) ||mot0.charAt(2)!=mot1.charAt(2)&&mot0.charAt(2)!=mot2.charAt(2) &&mot1.charAt(2)!=mot2.charAt(2))&&(mot0.charAt(3)==mot1.charAt(3) &&mot0.charAt(3)==mot2.charAt(3)||mot0.charAt(3)!=mot1.charAt(3) &&mot0.charAt(3)!=mot2.charAt(3)&&mot1.charAt(3)!=mot2.charAt(3))) { pointsPlayer++; document.getElementById('points').innerHTML = namePlayer + ":"+" "+ pointsPlayer +"<br>"+ "Computer:"+" "+ pointsComp; deleteCartes();} else {finTour();} }; var deleteCartes = function(){// эта функция уберает выбранные карты и ложит еще //три из колоды в таблицу tab = document.getElementById("ensemble"); for (var i = 0; i < 12; i++) { if (document.getElementsByTagName("td")[i].style.background=="aqua"){ document.getElementsByTagName("td")[i].innerHTML= cartes[prochaineCarte++]}} for (var j = 0; j < 12; j++) { if (document.getElementsByTagName("td")[j].style.background=="aqua") document.getElementsByTagName("td")[j].style.background="none"; } for (var k = 0; k < 3; k++) { tab[k].value = ""; } finTour(); }; </script> <br> <h4> Ensemble: </h4> <form id="ensemble"> <input type=text maxlength=4 size=4 readOnly=true /> <input type=text maxlength=4 size=4 readOnly=true /> <input type=text maxlength=4 size=4 readOnly=true /> <input type="button" value="Verifier!" onclick="verificationEnsemble()" /> </form> <br> <h2> Les Points </h2> <h3 id="points"> <script> document.write(namePlayer + ": " + pointsPlayer + "<br>") document.write("Computer: " + pointsComp) </script> </h3> </body> </html> |
Часовой пояс GMT +3, время: 03:43. |