
colorfullCollision
Presentation
•
Computers
•
1st Grade
•
Practice Problem
•
Medium
Edukoht Edukohter
Used 10+ times
FREE Resource
53 Slides • 6 Questions
1
colorfullCollision
2
Создай новый проект
Зайди на сайт https://repl.it/ и создай новый проект.
3
Начинаем разработку с HTML
4
Привычные действия
Добавляем тег «canvas» в элемент «body».
5
6
В этот раз мы пропускаем CSS
7
Зато начинаем плотную работу в JS
8
Привычные действия
Создай переменную «canv» и присвой ей выбранный элемент «canvas». Сделай так, чтобы элемент «canvas» занимал весь экран редактора. Создай переменную «c» и присвой ей элемент «canvas» с методом «getContext("2d")».
9
10
Multiple Choice
Вспомни с каким типом данных ты познакомилась(лся) на прошлом уроке?
список
цикл
объект
hash-map
11
Привычные действия
Создай конструктор объектов с именем «sqares». Передай в конструктор вот такие параметры: x, y, w, h, speedX, speedY, color.
12
13
Привычные действия
Внутри конструктора создай локальные переменные для объектов. Для этого воспользуйся ключевым словом this.
Пример: this.x = x
14
15
Привычные действия
Создаем метод «update».
16
17
Привычные действия
Создаем в этом методе if-блок. Указываем if-блоку вот такое условие: this.x + this.w > canv.width || this.x - this.w < 0
Если условие выдает значение «true», то выполняем вот такую команду:
this.speedX = -this.speedX;
18
19
Multiple Choice
Для чего нужно условие: this.x + this.w > canv.width || this.x - this.w < 0 ?
Чтобы прямоугольник не улетал за канвас вправо и влево
Чтобы прямоугольник двигался
Чтобы прямоугольник сталкивались друг с другом
Чтобы прямоугольник не улетал за канвас вверх или вниз
20
Привычные действия
Выходим из if-блока и создаем в этом методе еще один if-блок. Указываем if-блоку вот такое условие: this.y + this.h > canv.height || this.y - this.h < 0
Если условие выдает значение «true», то выполняем вот такую команду:
this.speedY = -this.speedY;
21
22
Multiple Choice
Для чего нужно условие: this.y + this.h > canv.height || this.y - this.h < 0 ?
Чтобы вовремя менять цвет прямоугольника
Чтобы прямоугольник не улетал за канвас вверх и вниз
Чтобы проверить прямоугольники на столкновение
Чтобы добавить пафоса коду
23
Привычные действия
Выходим из if-блока. Внутри метода указываем вот такие команды: this.x += this.speedX
this.y += this.speedY
this.draw()
24
25
Multiple Choice
Что делает команда: this.x += this.speedX?
Увеличивает скорость движения прямоугольника
Двигает прямоугольник по горизонтали
Двигает прямоугольник по вертикали
Меняет цвет прямоугольника
26
Multiple Choice
Что делает команда: this.y += this.speedY?
Проверяет прямоугольники на столкновения друг с другом
Создает множество прямоугольников
Служит запуском программы
Двигает прямоугольник по вертикали
27
Привычные действия
Создаем метод «draw».
28
29
Привычные действия
Пишем в данные метод вот такие команды:
c.fillStyle = this.color
c.fill()
c.beginPath()
c.rect(this.x,this.y,this.w,this.h)
c.stroke()
30
31
Multiple Choice
Что делает метод «rect»?
Создаёт линию
Создает круг
Создает прямоугольник
Создает закрещенный прямоугольник
32
Привычные действия
Создаем список с именем «sqaresArr».
33
34
Привычные действия
Создаем функции: randomY и randomX. Добавляем ей конструкцию: return Math.floor(Math.random() * canv.height) и return Math.floor(Math.random() * canv.width)
35
36
Привычные действия
Создаем функции: randomHeight и randomWidth. Добавляем им вот такую конструкцию:
return Math.floor(Math.random() * 20) + 10
PS: вы можете поэкспериментировать с циферками ;)37
38
Привычные действия
Создаем функции: randomSpeedY и randomSpeedX. Указываем им вот такую конструкцию:
return Math.floor(Math.random() * 1) + 1
39
40
Что-то новенькое
Создаем функцию с именем «collision» и указываем у нее вот такие параметры: x1, y1, w1, h1, x2, y2, w2, h2
Внутри функции создаем if-блок и указываем у него вот такое условие:
x2 > w1 + x1 || x1 > w2 + x2 || y2 > h1 + y1 || y1 > h2 + y2
41
Что-то новенькое
Если условие выдает «true», то программа должна выполнить вот такой код:
return false;
Иначе она должна должна выполнить вот такой код:
else{
return true
}
42
Посмотрим поближе
В предыдущим условии мы делаем проверку на столкновение. Рассмотрим вот такой пример: у нас есть два квадрата, которые движутся. По нашему условию, если координата x второго квадратика больше чем координата x первого квадратика плюс его ширина, то мы можем гарантировать, что эти квадратики не сталкиваются. В нашем условии такая проверка производится по двум квадратикам по сторонам x и y.
43
44
Привычные действия
Создаем функцию с именем «randomColor». Внутри функции создаем вот такие переменные: red, green, blue. Присваиваем этим переменным вот такую конструкцию: Math.floor(Math.random()*256);
Добавляем в конце функции команду: return "rgba(" + red + "," + green + "," + blue + ")"
45
46
Привычные действия
Создай цикл со счетчиком. Сделай так, чтобы твой цикл повторялся 10 или больше раз. Укажи в теле цикла вот такую конструкцию:
sqaresArr.push(new sqares(randomX(),randomY(), randomWidth(),
randomHeight(),randomSpeedX(),randomSpeedY(),"black"))
47
48
Привычные действия
Создай конструкцию «setInterval» укажи у этой конструкции вот такие параметры: function(){}, 10
49
50
Привычные действия
Добавь в функцию конструкции «setInterval» команду: c.clearRect(0,0,canv.width,canv.height)
51
52
Привычные действия
Создай цикл со счетчиком. Используй в цикле переменную «j». Сделай так, чтобы цикл выполнялся такое же количество раз, сколько элементов находится в списке «sqaresArr». В теле цикла укажи вот такую команду:
sqaresArr[j].update()
53
54
Привычные действия
Выйди из тела цикла и создай еще один цикл со счетчиком. Используй в этом цикле переменную «i». Внутри цикла укажи вот такую конструкцию: let s1 = sqaresArr[i]
55
56
Что-то новое
Создай внутри цикла еще один цикл со счетчиком. Используй в этом цикле переменную «z». Начинай отсчет не от нуля, а от i + 1.
Внутри этого цикла укажи вот такую команду:
let s2 = sqaresArr[z]. Также создай внутри этого цикла if-блок.
57
58
Что-то новое
Укажи в if-блоке вот такое условие: collision(s1.x,s1.y,s1.w,s1.h,s2.x,s2.y,s2.w,s2.h)
Если условие выдает «true», то выполни вот такой код:
s1.color = randomColor()
s2.color = randomColor()
59
colorfullCollision
Show answer
Auto Play
Slide 1 / 59
SLIDE
Similar Resources on Wayground
36 questions
Animation target
Presentation
•
1st Grade
34 questions
bomb
Presentation
•
2nd Grade
31 questions
magicBall (additional HTML,CSS,JS task)
Presentation
•
KG
50 questions
changeImgToGrey
Presentation
•
1st Grade
60 questions
PictureSlider
Presentation
•
1st Grade
51 questions
огэ разбор 16
Presentation
•
2nd Grade
66 questions
Steve's website
Presentation
•
2nd Grade
52 questions
Культура поведения в школе и школьный этикет (1-2 класс)
Presentation
•
5th Grade
Popular Resources on Wayground
20 questions
"What is the question asking??" Grades 3-5
Quiz
•
1st - 5th Grade
20 questions
“What is the question asking??” Grades 6-8
Quiz
•
6th - 8th Grade
10 questions
Fire Safety Quiz
Quiz
•
12th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
34 questions
STAAR Review 6th - 8th grade Reading Part 1
Quiz
•
6th - 8th Grade
20 questions
“What is the question asking??” English I-II
Quiz
•
9th - 12th Grade
20 questions
Main Idea and Details
Quiz
•
5th Grade
47 questions
8th Grade Reading STAAR Ultimate Review!
Quiz
•
8th Grade
Discover more resources for Computers
20 questions
"What is the question asking??" Grades 3-5
Quiz
•
1st - 5th Grade
10 questions
Odd and even numbers
Quiz
•
1st - 2nd Grade
20 questions
Telling Time to the Hour and Half hour
Quiz
•
1st Grade
16 questions
Counting Coins counting money
Quiz
•
1st - 2nd Grade
20 questions
Halves and Fourths
Quiz
•
1st Grade
19 questions
Fire Safety
Quiz
•
KG - 2nd Grade
10 questions
SCR + ECR Restate and Answer Practice
Quiz
•
1st - 5th Grade
20 questions
Addition and Subtraction facts
Quiz
•
1st - 3rd Grade