Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   Помогите с практикой!!!! (https://javascript.ru/forum/job/75810-pomogite-s-praktikojj.html)

XamMax 08.11.2018 08:17

Помогите с практикой!!!!
 
Все привет! Ребят, прошу вашей помощи, помогите сделать 6 небольших заданий. Помогите кому не сложно) Сегодня вечером должен уже сдать эти задания

1. Генерация массива и запись в таблицу.
Разработать скрипт, позволяющий генерировать массив случайных чисел от
начального до конечного значения. Элементы сгенерированного массива
подставляются в таблицу.
Начальное и конечное значение диапазона записываются в поля и берутся
оттуда при нажатии на кнопку «Сгенерировать».

2. Простой калькулятор.
Разработать скрипт для калькулятора. Форму калькулятора взять из
предыдущей лабораторной.
Что должен делать калькулятор?
1. Ввод значений только при нажатии на кнопки.
2. Выдавать сообщение об ошибке при делении на 0.
3. Нельзя:
- вводить операцию до ввода числа;
- вводить первым числом 0 (функционал можно дополнить работой с
десятичными числами, но сейчас это не так важно);
- вводить 2 операции подряд.
4. По нажатию на кнопку «С» осуществляется сброс всего введённого и
рассчитанного.
5. Может выполняться только 1 операция. Т.е. конструкции типа 2+2+2 и более
сложные можно не реализовывать.


3. Перемещение блока в указанную область.
Разместить на странице блок div с цветной рамкой.
При нажатии на любую область рабочего пространства этот блок должен
перемещаться туда.
Подсказка: почитать про функцию addEventListener.
Получать блок div можно с помощью функции getElementById.

4. Игра «Крестики – нолики».
Внешний вид примерно такой:

Под игровым полем должна быть кнопка «Очистить», а также указание того,
кто сейчас должен сходить.
Например, игрок «Х» сделал ход, значит ходит игрок «0».
В игре должна отлавливаться победа какого – либо из игроков. После победы
выдаётся соответствующее сообщение.

5. Оповещение при прокрутке.
Вы наверняка не раз видели, что на некоторых сайтах при долгой прокрутке
появляется стрелка, при нажатии на которую вас перебрасывает в верхушку
страницы. Мы сделаем что-то подобное, но вместо стрелки при прокрутке на
определённое число пикселей будет появляться окошечко с каким – нибудь
сообщением.
Сообщение должно появляться при прокрутке на 1000 пикселей.

6. Таймер.
Реализовать таймер на js.
Должны быть следующие функции:
- Запуск таймера по кнопке;
- Приостановка таймера по кнопке. При этом нажатие на кнопку запуска после
нажатия на кнопку приостановки должно запустить продолжение работы
таймера.
Усложнять таймер не будем – в коде будет «зашито» кол-во секунд, после
истечения которых должно на экране должен появиться блок <div> с текстом
«Хватит!».
К стилю требований нет. Можно обойтись без них.
Подсказка: setTimeout()

j0hnik 08.11.2018 13:03

5-е задание
<body style="height:2000px;">
	<div id="mes" style="display:none; position: fixed; border:1px solid red; padding: 20px">Какое-то сообщение
		<button id="cls">X</button>
	</div>
	<script>
		var fl = 1;
window.onscroll = e => {
	if(window.scrollY >= 1000 && fl) {
		mes.style.display = 'block';
		fl = 0;
	}
};
cls.onclick = e => mes.style.display = 'none';
	</script>

Nexus 08.11.2018 13:26

Цитата:

1. Генерация массива и запись в таблицу.
Разработать скрипт, позволяющий генерировать массив случайных чисел от
начального до конечного значения. Элементы сгенерированного массива
подставляются в таблицу.
Начальное и конечное значение диапазона записываются в поля и берутся
оттуда при нажатии на кнопку «Сгенерировать».
Сколько раз не перечитываю, все никак не могу понять что нужно.
Вроде как дано минимальное и максимальное значения для значения элемента массива, нужно собрать массив случайных чисел в этом диапазоне.
Для решения задачи недостает, как минимум, длины итогового массива, в противном случае решение задачи займет бесконечно много времени.
Если дано начало диапазона и его конец и нужно найти все значения этого диапазона, то недостает значения шага. И вообще в этом случае ни о каком массиве случайных чисел речи быть не может.

В общем вот, я увидел 2 варианта задачи и для каждого из них недостает данных.

SuperZen 08.11.2018 13:40

3-е задание

<html>

<head>
  <style>
    html,
    body {
      width: 100%;
      height: 100%;
    }

    .block {
      position: absolute;
      width: 100px;
      height: 100px;
      background-color: antiquewhite;
      border: 1px solid rebeccapurple;
      top: 0;
      left: 0;
      transition: all 0.5s;
    }
  </style>
  <script>
    document.addEventListener('DOMContentLoaded', function () {
      var block = document.getElementById('block')
      document.addEventListener('click', function (e) {
        block.style.top = e.y + 'px'
        block.style.left = e.x + 'px'
      })
    })
  </script>
</head>

<body>
  <div id="block" class="block"></div>
</body>

</html>

SuperZen 08.11.2018 13:42

Цитата:

Сообщение от Nexus (Сообщение 498143)
Сколько раз не перечитываю, все никак не могу понять что нужно.
Вроде как дано минимальное и максимальное значения для значения элемента массива, нужно собрать массив случайных чисел в этом диапазоне.
Для решения задачи недостает, как минимум, длины итогового массива, в противном случае решение задачи займет бесконечно много времени.
Если дано начало диапазона и его конец и нужно найти все значения этого диапазона, то недостает значения шага. И вообще в этом случае ни о каком массиве случайных чисел речи быть не может.

В общем вот, я увидел 2 варианта задачи и для каждого из них недостает данных.

есть два поля x-y и кнопка
генерируется таблица размера x-y в каждой ячейке рандомное число ,)
я как-то так понял...

Nexus 08.11.2018 13:45

Цитата:

Сообщение от SuperZen
я как-то так понял

Если вы правильно поняли, то диапазон тут явно лишний, его легко заменить самой длиной массива...

SuperZen 08.11.2018 13:47

Сорри, не туда куда-то смотрел...
тогда таблица будет размером 1 строка на X колонок

Nexus 08.11.2018 13:51

Задание №1, пост №5:
<div>
	<div>Диапазон</div>
	<input type="number" id="from">
	<input type="number" id="to">
	<div>
		<input type="button" id="generate" value="Генерировать"/>
	</div>
</div>
<table id="table"></table>
<script>
const table=document.getElementById('table');
document.getElementById('generate').addEventListener('click',function(){
	const arrayLength=Math.abs(
		(document.getElementById('from').value||0)-
		(document.getElementById('to').value||0)
	);
	const result=[];

	while(result.length<arrayLength)
		result.push(Math.random());

	const row=document.createElement('tr');
	row.innerHTML=result.map(function(val){
		return '<td>'+val+'</td>';
	}).join('');

	table.appendChild(row);
});
</script>

j0hnik 08.11.2018 13:52

4-e задание
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>

body{text-align: center;}

div{
	width: 310px;
	height: 100px;
	position: relative;
	margin: auto;
	font-size: 60px;
}
div>div{
	width: 100px;
	height: 100px;
	outline: 1px solid black;
	border: 1px solid black;
	display: block;
	float: left;
}
p{
	font-size: 40px;
	height: 10px;
}
</style>
</head>
<body>
<div><div></div><div></div><div></div></div>
<div><div></div><div></div><div></div></div>
<div><div></div><div></div><div></div></div>
<p>Ходит: X</p>
<button>ИГРАТЬ ЗАНОВО</button>

<p><span>0</span>-Побед X</p>
<p><span>0</span>-Побед O</p>
<p><span>0</span> - Ничья</p>

</body>
<script>
var i = 0, x = 1, 
pol = document.querySelectorAll('div>div'),
res = document.querySelector('p'),
span = document.querySelectorAll('span'),
combo = [[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]];

document.querySelector('button').onclick=e=>{
	pol.forEach(el=>{
		el.textContent = '';
		el.style.backgroundColor = 'white';
	});
	i=0; x=1; res.textContent='Ходит: X';
};

function start(e){
	if(x){
		if(e.target.textContent == "") e.target.textContent = i++%2?'O':'X';
		var arrX=[], arrO=[], arrA=[], arrC=[];
		pol.forEach((el,n)=>{
			el.textContent !== ''&& (el.textContent == 'X'?arrX.push(n):arrO.push(n));
			el.textContent !== '' && arrA.push(n);
			el.textContent == '' && arrC.push(n);
		});

		res.textContent = i%2?i==9?'Ничья':'Ходит: O':'Ходит: X';

		if(win(arrX)) {
			res.textContent =  'Победил: X';
			span[0].textContent++; x=0;
			pol.forEach((el,i)=>{
				if(win(arrX).includes(i)) el.style.backgroundColor = 'red';
			});
		}
		else if(win(arrO)) {
			res.textContent =  'Победил: O';
			span[1].textContent++; x=0;
			pol.forEach((el,i)=>{
				if(win(arrO).includes(i)) el.style.backgroundColor = 'green';
			});
		}
		else if(i==9) span[2].textContent++;
	}
}

pol.forEach(el=>el.onclick = start);
var win=(a)=>combo.find(el=>el.every((el)=>a.includes(el)));

</script>
</html>

могу бота дописать если надо.


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