Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.07.2013, 09:17
Интересующийся
Отправить личное сообщение для Угумс Посмотреть профиль Найти все сообщения от Угумс
 
Регистрация: 15.07.2013
Сообщений: 14

Не добавляет очки игроку в функции
Доброго времени суток уважаемые Знатоки!

Помогите пожалуйста разобраться почему в функции 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>
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2013, 09:26
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Кто ж будет копаться в таком коде то?? Хотя бы правила рассказали.. я вот запустил и что делать не знаю.


вот вы говорите, что очки не считаются. я так думаю дело в вашем длинном и непонятном условии:
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)
Ответить с цитированием
  #3 (permalink)  
Старый 16.07.2013, 11:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Угумс,
у вас нет вывода результа на экран, у вас незакрыты коментарии и html, вы используите innerText - ff в пролёте.неизвестные правила но я думаю найти три почти однаковых слова 1 буква разная но на одном и томже месте.

Последний раз редактировалось рони, 16.07.2013 в 12:00.
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2013, 17:38
Интересующийся
Отправить личное сообщение для Угумс Посмотреть профиль Найти все сообщения от Угумс
 
Регистрация: 15.07.2013
Сообщений: 14

Сообщение от рони Посмотреть сообщение
Угумс,
у вас нет вывода результа на экран, у вас незакрыты коментарии и html, вы используите innerText - ff в пролёте.неизвестные правила но я думаю найти три почти однаковых слова 1 буква разная но на одном и томже месте.

Уважаемый Рони,

Не подскажите как реализовать вывод результат на экран? Если честно я просто не знаю как это сделать(
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2013, 17:42
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

document.getElementById(ид_эелемента).i nnerHTML = ответ;
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2013, 17:43
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

например:
<div id="elem1"></div>
document.getElementById('elem1').innerHTML = 'response';
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2013, 17:43
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

для отладки лучше использовать console.log
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2013, 17:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Угумс,замените return --
document.getElementById('points').innerHTML =namePlayer + ": " + pointsPlayer + "<br>"+
   "Computer: " + pointsComp;

   //return (pointsPlayer);
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2013, 19:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Угумс
var shuffleCartes = function(cartes)//эта функция перемешивает карты но почему то не работает
отсутствует функция swap
Сообщение от Угумс
swap(cartes,i,j);
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2013, 17:34
Интересующийся
Отправить личное сообщение для Угумс Посмотреть профиль Найти все сообщения от Угумс
 
Регистрация: 15.07.2013
Сообщений: 14

Добрый вечер,

Вроде подправила, но все равно есть несколько моментов которые мне не даются((

Это строчки №
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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03