Popcorn
Несколько лет назад у меня создалось впечатление, что я со всех этих приходов, расходов и остатков по счетам считаемых с использованием самых разных языков начинаю тупеть. Т.е понятно, что ВУЗ разрабатывает мозги. И этого ещё на какой-то период хватает. Но не навсегда же.
А что такое мышление? Это способность делать что-то необычное, искать какие-то решения но при том, что рыться в памяти бесполезно. Именно этот поиск аналогов в прошлом опыте может заменить мышление. В особо клиническом случае человек просто натуральный дурак, но сознание очень быстро бегает по памяти и выискивает там какой-то аналог ситуации и выдают полученное там же решение. Часто решение правильное потому сразу и не видно что дурак.
Т.е мне нужно было что-то что к приходам, расходам не имеет никакого отношения. И я решила написать… игрушку – аналог старого Popcorn-a/
https://youtu.be/gNNQYuKK2sY
… Только мячик от пола отскакивает так же как и от ракетки чтобы проще тестировать было.
На самом деле изображение конечно больше:
Все размеры в пикселях. Слева сверху для ориентировки показано как выглядят 100px.
Чтобы получить 320*240px как в видео надо ввести так:
… и нажать кнопку «Рисовать».
Кнопка «Двинуть шар» перемещает шар в следующее положение. Т. е было так:
а стало так:
По кнопке «Запуск» шар начинает летать, пока его не установят кнопкой «Пауза»:
Перемещение ракетки - «штуки» - кнопки «Вправо» и «Влево» на клавиатуре.
Сектор определяет форму ракетки, которая на самом деле «сделана» из круга:
… т.е угол отражения определяется по касательной к кругу в данной точке.
Когда я это писала у меня из каких-то загадочных глубин сознания вылезло, что сумма углов падения и отражения равняя 90 градусов… Вначале так и летало. Очень своеобразно выглядит (с).
Номер уровня задаёт другой вид расположения кирпичей:
Тут появляются жёлтые – неразбиваемые кирпичи, а при игре это так:
https://youtu.be/fWIpPhd-rew
И тут явно что-то недописано (шар пропадает, останавливается и т.д.). Разбираться сейчас естественно не буду.
Написано это естественно в виде объекта popcorn.js. Всё вместе лежит тут:
https://youtu.be/fWIpPhd-rew
Вид уровней задаётся тут:
// Уровни:
PC.prototype.get_level = function(w,h,num)
{
var i,j,x0,y0;
this.bricks = [];
this.bricks_count = 0;
x0=0;
y0=0;
//!!!!!!!!!!! Кол-во кирпичей - w, кол-во рядов - h:
if (w==10 && h ==4)
{
if (num ==1) // номер уровня
{
var m = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
];
} // num = 1
} // w=10, h = 3
if (w==10 && h ==5)
{
if (num ==1)
{
var m = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
];
} // num = 1
if (num ==2)
{
var m = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[1, 1, 1, 0, 0, 0, 0, 1, 1, 1],
[2, 2, 2, 2, 0, 0, 2, 2, 2, 2]
];
} // num = 2
} // w=10, h = 5
if (w==10 && h ==10)
{
if (num ==1)
{
var m = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
} // num = 1
} // w=10, h = 3
for (j=0;j<h;j++)
{
x0=0;
for (i=0;i<w;i++)
{
this.bricks[this.bricks_count] = new BRICK(x0,y0,m[j][i],0, this);
this.bricks_count++;
x0+=this.def_brick_w;
} // for i
y0+=this.def_brick_h;
}
}
… Т.е if по количеству кирпичей в ряду, рядов и номерам уровней. 0 – нет кирпича, 1 – обычный разбиваемый кирпич, 2 – неразбиваемый кирпич.
Если я например для варианта ширина 10, рядов 5 заменю 0 на 2, а единицы первого ряда на 0, т.е это:
var m = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
];
}
… на вот это:
var m = [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 2, 2, 1, 1, 1, 1, 1]
];
}
… то будет так:
Этих уровней для разного количества кирпичей можно наделать сколько угодно а потом на всех возможных вариантах надо проверять правильность работы игрушки.
p.s
В 2010 году было настолько жарко, что я даже не поленилась и купила книгу Дулова:
http://akostina76.ucoz.ru/load/2-1-0-98
В курсе лекций было про перемещение циклонов. Посмотрела, поняла, что процессы явно зашли далеко, т.е на факультете всё было очень просто и красиво, а теперь вообще никак. И отложила в сторону.
А потому осенью 2014 была вертушечная тематика:
http://akostina76.ucoz.ru/publ/7-1-0-12#Vertushka
… которая заставила скрипя мозгами хоть какие-то синусы порисовать.
А осенью 2015 мне удалось (к полному моему недоумению!) вполне успешно расшифровать оттуда даже вот это:
http://akostina76.ucoz.ru/publ/4-1-0-33
… а не только муссоны с пассатами чуть раньше, летом:
https://www.facebook.com/notes/904946619570904?pnref=story
Из чего выводы: за состоянием головы, конечно следить надо. Привычная рутина, действительно, отупляет. Но при желании и если есть на чём мозги тренировать они неплохо разрабатываются и приводятся во вполне годное состояние.
|