Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выводится один и тот же метод! (https://javascript.ru/forum/misc/74298-vyvoditsya-odin-i-tot-zhe-metod.html)

Norvus 29.06.2018 10:11

Выводится один и тот же метод!
 
При нажатии на кнопку с классом .ch1 выводится постоянно только:
alert("Ничья!"); alert("Ответ компьютера: Камень"); Все, же условие не выполняется!Пытался искать информацию в интернете,но по этой теме ничего не нашёл!Помогите,что надо сделать чтобы условие выполнялось и при этом еще и выводилось.
var first = document.querySelector('.ch1')
first.addEventListener("click",function MySearc(){
	let x = 1;
	let y = 2;
	let z = 3;
var computer = Math.floor(Math.random * 3);
if (computer == x && computer !== y || z){
	alert("Ничья!");
	alert("Ответ компьютера: Камень");}
 else if (computer == y && computer !== x || z) {
	alert("Вы проиграли!");
	alert("Ответ компьютера: Бумага");}
 else if(computer == z && computer !== x || y){
	alert("Вы победили!");
	alert("Ответ компьютера: Ножницы");}
 else{
console.log("Error:see on code again");
 } 
})

j0hnik 29.06.2018 10:20

Скрипт с кем играет у вас?

Alexandroppolus 29.06.2018 10:21

похоже, с игроком, который может выбрать только "камень" :)

Norvus 29.06.2018 10:22

К чему привязан?

Nexus 29.06.2018 10:23

Можете условие перевести на человеческий язык?

Norvus 29.06.2018 10:23

С компьютером

j0hnik 29.06.2018 10:24

Цитата:

Сообщение от Norvus
К чему привязан?

Похоже что к камню, и очень крепко привязан!

Nexus 29.06.2018 10:27

Еще Math.random - метод, не свойство, его нужно вызывать.
var computer = Math.floor(Math.random*!*()*/!* * 3);

j0hnik 29.06.2018 10:30

Цитата:

Сообщение от Norvus (Сообщение 488572)
С компьютером

Комп с компом?
или где ввод пользователя?

Norvus 29.06.2018 10:30

Цитата:

Сообщение от Nexus (Сообщение 488573)
Можете условие перевести на человеческий язык?

Всего есть 3 кнопки этот скрипт написан только для одной(Камень),но условное выражение в этом скрипте не выполняется.В чем проблема?

Nexus 29.06.2018 10:31

Norvus, я просил перевести условие на человеческий, не могу понять, что вы пытаетесь проверить.

Norvus 29.06.2018 10:34

Цитата:

Сообщение от j0hnik (Сообщение 488577)
Комп с компом?
или где ввод пользователя?

Нет,не ввод пользователя работа,есть 3 кнопки на странице: Камень, Ножницы, Бумага

Norvus 29.06.2018 10:36

Цитата:

Сообщение от Norvus (Сообщение 488581)
Нет,не ввод пользователя работа,есть 3 кнопки на странице: Камень, Ножницы, Бумага

Условно,камень это цифра 1, ножницы это 2 ,а бумага 3

j0hnik 29.06.2018 10:37

есть три кнопки а событие на одной?
Math.floor(Math.random() * 3); - выводит 0,1 или 2
у вас переменные 1,2,3

Norvus 29.06.2018 10:38

Цитата:

Сообщение от j0hnik (Сообщение 488583)
есть три кнопки а событие на одной?
Math.floor(Math.random() * 3); - выводит 0,1 или 2
у вас переменные 1,2,3

Да на одной,для каждой кнопки я предполагаю написать событие но пока что для остальных не написал

Dilettante_Pro 29.06.2018 10:42

<meta charset="utf-8">
<button class="ch1">Камень</button>
<script>
var first = document.querySelector('.ch1')
first.addEventListener("click",function MySearc(){
	let x = 1;
	let y = 2;
	let z = 3;
var computer = Math.floor(Math.random() * 3 + 1);
if (computer == x ){
	alert("Ничья!");
	alert("Ответ компьютера: Камень");}
 else if (computer == y ) {
	alert("Вы проиграли!");
	alert("Ответ компьютера: Бумага");}
 else if(computer == z ){
	alert("Вы победили!");
	alert("Ответ компьютера: Ножницы");}
 else{
console.log("Error:see on code again");
 } 
})
</script>

j0hnik 29.06.2018 10:42

if (computer !== x && computer !== y || z)

ваше условие будет выполняться всегда
if(false||3) alert('условие выполняется')

Nexus 29.06.2018 10:44

https://jsfiddle.net/v84pnatf/
<label>
<input type="radio" name="item" value="1"> Камень
</label>
<label>
<input type="radio" name="item" value="2"> Ножницы
</label>
<label>
<input type="radio" name="item" value="3"> Бумага
</label>
<input type="button" id="button" value="Button">
<div id="res"></div>
<style>label{display:block}</style>
<script>
button.onclick=function(){
    const user=+document.querySelector('[name="item"]:checked').value;
    const npc=Math.floor(Math.random()*3)+1;
    const userWin=npc===(user%3+1);
  
    res.innerHTML=(user===npc)?'Ничья':'Вы '+(userWin?'победили':'проиграли')
		+'<br/>'
    	+'Оппонент показал '+(npc===1?'камень':(npc===2?'ножницы':'бумагу'));
};
</script>

Norvus 29.06.2018 10:44

Цитата:

Сообщение от j0hnik (Сообщение 488583)
есть три кнопки а событие на одной?
Math.floor(Math.random() * 3); - выводит 0,1 или 2
у вас переменные 1,2,3

Переделал,Math.floor(Math.random() * (1 - 3) +1);

j0hnik 29.06.2018 10:46

Nexus,
Ничьей не хватает

j0hnik 29.06.2018 10:47

Цитата:

Сообщение от Norvus
Переделал,Math.floor(Math.random() * (1 - 3) +1);

еще лучше -1 или 0

Nexus 29.06.2018 10:48

j0hnik, точно)
Поправил.

j0hnik 29.06.2018 10:49

Math.floor(Math.random() * 3) + 1;

Norvus 29.06.2018 10:54

Math.floor(Math.random() * (3 - 1) +1);

Norvus 29.06.2018 10:59

Цитата:

Сообщение от Dilettante_Pro (Сообщение 488585)
<meta charset="utf-8">

<button class="ch1">Камень</button>
<script>
var first = document.querySelector('.ch1')
first.addEventListener("click",function MySearc(){
	let x = 1;
	let y = 2;
	let z = 3;
var computer = Math.floor(Math.random() * 3 + 1);
if (computer == x ){
	alert("Ничья!");
	alert("Ответ компьютера: Камень");}
 else if (computer == y ) {
	alert("Вы проиграли!");
	alert("Ответ компьютера: Бумага");}
 else if(computer == z ){
	alert("Вы победили!");
	alert("Ответ компьютера: Ножницы");}
 else{
console.log("Error:see on code again");
 } 
})
</script>

Ошибка все равно та же остается, при нажатии на кнопку "Камень"
выводится только:alert("Ничья!"); alert("Ответ компьютера: Камень");

Alexandroppolus 29.06.2018 11:00

http://jsfiddle.net/5wy6hecr/

Dilettante_Pro 29.06.2018 11:07

Цитата:

Сообщение от Norvus
Ошибка все равно та же остается, при нажатии на кнопку "Камень"
выводится только:alert("Ничья!"); alert("Ответ компьютера: Камень");

У меня выводятся разные ответы.

j0hnik 29.06.2018 11:09

Norvus,
Math.floor(Math.random() * 3) + 1;

Norvus 29.06.2018 11:11

Цитата:

Сообщение от Alexandroppolus (Сообщение 488597)

Переделал ваш код под свой и все получилось,спасибо!


Часовой пояс GMT +3, время: 00:35.