
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>
|
|

16.07.2013, 09:26
|
Профессор
|
|
Регистрация: 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)
|
|

16.07.2013, 11:56
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,137
|
|
Угумс,
у вас нет вывода результа на экран, у вас незакрыты коментарии и html, вы используите innerText - ff в пролёте.неизвестные правила но я думаю найти три почти однаковых слова 1 буква разная но на одном и томже месте.
Последний раз редактировалось рони, 16.07.2013 в 12:00.
|
|

16.07.2013, 17:38
|
Интересующийся
|
|
Регистрация: 15.07.2013
Сообщений: 14
|
|
Сообщение от рони
|
Угумс,
у вас нет вывода результа на экран, у вас незакрыты коментарии и html, вы используите innerText - ff в пролёте.неизвестные правила но я думаю найти три почти однаковых слова 1 буква разная но на одном и томже месте.
|
Уважаемый Рони,
Не подскажите как реализовать вывод результат на экран? Если честно я просто не знаю как это сделать(
|
|

16.07.2013, 17:42
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
document.getElementById(ид_эелемента).i nnerHTML = ответ;
|
|

16.07.2013, 17:43
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
например:
<div id="elem1"></div>
document.getElementById('elem1').innerHTML = 'response';
|
|

16.07.2013, 17:43
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
для отладки лучше использовать console.log
|
|

16.07.2013, 17:59
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,137
|
|
Угумс,замените return --
document.getElementById('points').innerHTML =namePlayer + ": " + pointsPlayer + "<br>"+
"Computer: " + pointsComp;
//return (pointsPlayer);
|
|

16.07.2013, 19:59
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,137
|
|
Сообщение от Угумс
|
var shuffleCartes = function(cartes)//эта функция перемешивает карты но почему то не работает
|
отсутствует функция swap
Сообщение от Угумс
|
swap(cartes,i,j);
|
|
|

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>
|
|
|
|