Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   нужен совет! (https://javascript.ru/forum/misc/13505-nuzhen-sovet.html)

severmsk 01.12.2010 10:15

нужен совет!
 
я только начал изучать ява скрипт, поэтому обращаюсь к вам как опытным специалистам. вопрос:
1. есть здание - написать скрипт игры "угадай число". я написал своими мозгами,но
2. по условию задания скрипт работает один раз, я же решил его модернизировать и заставить работать дважды. вот что получилось, но он не работает!!! Поэтому не стал лопатить литературы потому, как объяснения живых людей лучше усваиваю :). В Aptana если в значении CASE 3 вместо break поставить stop (не знаю откуда я взял этот оператор:blink: просто влез в голову) работает нормально, но стоит загрузить файл в Мозилу - полная каша!
Подскажите все мои ошибки! И если ли варианты упростить код до минимума?
<html>
<body>

<script language="JavaScript" type="text/javascript">//<![CDATA [

var secretNumber = prompt("Угадай число от 1 до 5 с двух попыток:", "");
secretNumber = parseInt(secretNumber);

switch (secretNumber) {
case 1:
case 2:
case 4:
case 5:
alert("Не угадал!");
alert("Попробуй еще!");
break;

default:
alert("Слишком большое значение!");
alert("Попробуй еще!");
break;
case 3:
alert("Молодец угадал!");
break;

}
var Number = prompt("Введи число", "");
Number = parseInt(secretNumber);

switch (Number)
{
case 1:
case 2:
case 4:
case 5:
alert("Не угадал!");
alert("закончилось число попыток!");
break;
case 3:
alert("Молодец угадал!");
break;

}

alert("перезагрузи страничку и попробуй снова!");
//]]>
</script>
</body>
</html>

P.S. Прошу прощения за мою полную безграмотность, я только начал изучать язык, дошел до SWITCH теперь его и обсасываю. Если в моем вопросе используются другие методы, значит я еще рано далеко смотрю
:), но просто интереско - КАК ЭТО РАБОТАЕТ!!!

ksa 01.12.2010 10:22

Цитата:

Сообщение от severmsk
по условию задания скрипт работает один раз, я же решил его модернизировать и заставить работать дважды.

Это смелое решение! :D
Цитата:

Сообщение от severmsk
но он не работает

Если решишь его повторить трижды - будет вообще фигня! :)

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

Вот такое потом можно будет повторять сколь угодно раз... ;)

severmsk 01.12.2010 10:33

а код можно посмотреть?

severmsk 01.12.2010 10:37

..и еще.. вот вбилось в голову именно два раза! вводит пользователь число, если угадал с первого раза, код должен остановиться и все! но не получается! а ответ должен задаваться именно мной, а не случайным числом

ksa 01.12.2010 10:37

Цитата:

Сообщение от severmsk
а код можно посмотреть?

Так ты вроде у нас JS решил изучать... Не я. Знать тебе его и пиать :D

ksa 01.12.2010 10:39

Цитата:

Сообщение от severmsk
ответ должен задаваться именно мной

Тогда сделай запрос числа... И только после этого дай пользователю его отгадывать.

В противном случае всегда придётся править код программки, если захочется отгадывать какое-то другое число...

severmsk 01.12.2010 10:46

а как это сделать?

severmsk 01.12.2010 10:47

и самое главное - в Aptana он работает, но в браузере нет!

severmsk 01.12.2010 10:51

только надо в CASE 3 BREAK надо поменять на STOP (почему?)

monolithed 01.12.2010 12:52

Цитата:

Сообщение от severmsk
только надо в CASE 3 BREAK надо поменять на STOP (почему?)

Что за бред вы пишете? Прочтите как работает оператор

severmsk 01.12.2010 13:29

вот и я о том же :) этот оператор написал от балды, но в аптане он почему то работает, странно, но его же даже не существует помоему?
смысл в том, что при правильном ответе первый раз - программа останавливается, а если стоит BREAK, то код выполняется дальше и просит ввод снова. Вот как это все победить?

DooMer 01.12.2010 14:26

<html>
<body>
<script language="JavaScript" type="text/javascript">
function ugaday_chislo(){
	var num = ((Math.random() * 5)+1)>>0;
	var i = 2;
	var secretNumber = 0;
	while(i>0){
		if(prompt("Угадай число от 1 до 5 с двух попыток:(осталось "+ i +" попыток)")==num){
			alert("Молодец угадал!");
			return true;
		}else{
			alert("Не угадал!");
			alert("Попробуй еще!");
		}
		i--;
	}
	return false;
}
for(var i =  0;i<2;i++){
	if(!ugaday_chislo() && i==0)alert("пичаль, пробуй второй раз");
}
</script>
</body>
</html>

monolithed 01.12.2010 14:27

Помимо условных операторов есть еще операторы return, continue, дерзайте

ksa 01.12.2010 14:48

Ну и мой вариант до кучи...

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type='text/css'>
</style>
<script type="text/javascript">
function Go() { 
	var n=3
	var max=2
	var message="Угадай число от 1 до 5 с двух попыток. Попытка "
	var step=1
	while (true) {
		var secretNumber = prompt(message+step, "");
		if (secretNumber=='') {
			break
		}
		secretNumber = parseInt(secretNumber);
		if (secretNumber<1||secretNumber>5) {
			alert("Твоё число за пределами диапазона...");
			continue
		}
		if (secretNumber==n) {
			alert("Молодец угадал!");
			return
		}
		if (secretNumber<n) {
			alert("Не угадал. Загаданое число больше твоего...\nПопробуй еще.");
		}
		if (secretNumber>n) {
			alert("Не угадал. Загаданое число меньше твоего...\nПопробуй еще.");
		}
		if (max!=0&&max<++step) {
			alert("Количество попыток исчерпано.");
			break
		}
	}
	alert("Можно перезагрузить страничку и попробовать снова!");
}
</script>
</head>
<body onload='Go()'>
</body>
</html>


DooMer, для этой задачки ты выбрал не ту конструкцию...

ksa 01.12.2010 14:54

Цитата:

Сообщение от ksa
DooMer, для этой задачки ты выбрал не ту конструкцию...

Не тому написал... :) Это адресовано автору...

severmsk 01.12.2010 17:26

спасибо ребята! есть чему учиться и над чем поработать! думаю вопросами еще не раз закидаю :)

severmsk 01.12.2010 17:32

а вот от меня :)
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
	</head>
	<body>
<script language = "JavaScript">

document.write("<p><p>");
random();
document.write("<center><p>Угадай число за ПЯТЬ попыток<p></center>");
function clue() {
clue1 = num-clue3;
clue2 = num+clue4;
alert("Число находится между " + clue1 + " и " + clue2);
}
function random()  {
        g=0;
        today = new Date();
        clue3=today.getTime();
        clue3=Math.round(Math.abs (Math.sin (clue3)*5));
        clue4=today.getTime();
        clue4=Math.round(Math.abs (Math.sin (clue4)*19));
        num = today.getTime();
        num = Math.round(Math.abs (Math.sin (num)*100));
return num;
return clue3;
return clue4;
}
function guess() {
var no=document.game.number.value;
g=g+1;
if (g == 5 ) {
alert("Это была последняя попытка!");
alert("Теперь отгадайте другое число!");
document.game.number.value = "";        
random();
}
if (no > num ) {
alert("Загаданное число меньше!");
alert("Это  " + g + " попытка!");
}
if (no < num ) {
alert("Загаданное число больше!");
alert("Это  " + g + " попытка!");
}
if (no == num) {
alert("Победа!");
alert("Вы угадали за " + g + " попыток.");
document.game.number.value = "";        
random();
}
}
//document.write("Это число "+num);
</script>
<center>
<form name = game>
<input type=text name=number size=8>
<input type=button value = " !!!Подсказка!!! " onClick="clue()">
<P>
<input type=button value=" Угадать " onClick="guess()">
<P>
<input type=button value= " Новая игра " onClick="random()">

</form>
</center>
	</body>
</html>

Я все правильно сделал?


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