В одном из тц в центре города пару лет назад открыли такую тему - фудмолл. Большой зал, где куча разных кафешек. Некий новый уровень фудкорта - можешь заказать сразу в нескольких, взять пикающую табличку и сесть за столик. Ну или на качельки, которые там тоже есть))
Мимо пробегали со скоростью, поэтому без подробностей, но там больше 15 точек - ресторанов/кафешек/пекарен/баров. Есть как простенькие фастфудные, так и более хардовое типа ресторанчика с морепродуктами. Помню, видела, что у них там был хот-дог с щуплой осьминожки :D
И в целом есть из чего выбрать: бургеры, хинкали, роллы, пиццы, устрицы, фрукты в шоколаде, кофе, пиво, десерты...китайское, корейское, греческое, итальянское. Любой там найдёт что-то, мне кажется) Игровая комната для детей тоже имеется, плюс у них вечно какие-то фестивальчики, акции проводятся. Короче всё для привлечения внимания)
В прошлой серии вы видели: стены более непротицаемы.
В этой серии мы научим наш так шмалять белыми квадратами по сторонам! И будем убеждать себя, что это снаряды.
В первую очередь мы, получается, должны создать сущность снаряда. Оборачиваем это безобразие в класс:
export class Bullet {
constructor(x, y, direction, owner, power = 0) {
this.x = x;
this.y = y;
this.direction = direction;
this.speed = Speed.BULLET;
this.power = power;
this.owner = owner;
// Состояние
this.active = true;
}
}
Сущность пули помнит, кто её владелец, знает свою скорость и мощность. Мощность нам понадобится на следующих этапах. Например, стандартная пуля может только «брить» кирпичи, более мощная сможет уничтожать уже и бетонные/стальные блоки. В каких-то версиях пиратских танков была возможность даже сбривать кусты.
Далее у пули есть служебные методы, которые нужны для просчитывания коллизий, отрисовки положения в пространстве и т.д.
update(gameMap) {
if (!this.active) return;
// Вычисляем смещение
let dx = 0;
let dy = 0;
switch (this.direction) {
case Direction.UP:
dy = -this.speed;
break;
case Direction.DOWN:
dy = this.speed;
break;
case Direction.LEFT:
dx = -this.speed;
break;
case Direction.RIGHT:
dx = this.speed;
break;
}
// Новая позиция
const newX = this.x + dx;
const newY = this.y + dy;
// Проверка границ карты
if (newX < 0 || newX + BULLET_SIZE > LOGICAL_FIELD_SIZE ||
newY < 0 || newY + BULLET_SIZE > LOGICAL_FIELD_SIZE) {
this.destroy();
return;
}
// Проверка коллизий с тайлами
if (gameMap && this.checkTileCollision(newX, newY, gameMap)) {
return; // Пуля уничтожена в checkTileCollision
}
this.x = newX;
this.y = newY;
}
checkTileCollision(newX, newY, gameMap) {
const tiles = getTilesUnderEntity(newX, newY, BULLET_SIZE, BULLET_SIZE);
for (const {tx, ty} of tiles) {
const tileId = gameMap.getTile(tx, ty);
const tileDef = TILE_DEFS[tileId];
if (!tileDef) continue;
// Пуля блокируется этим тайлом?
if (tileDef.blocksBullet) {
this.destroy();
// TODO: Разрушение тайла (на следующем этапе)
return true;
}
}
return false;
}
destroy() {
if (!this.active) return;
this.active = false;
if (this.owner) {
this.owner.activeBullets = Math.max(0, this.owner.activeBullets - 1);
}
// TODO: Создание эффекта взрыва (Не скоро, ещё этапа через три)
}
render() {
if (!this.active) return;
const ctx = foregroundCtx;
// Конвертация логических координат в физические
const px = GAME_FIELD_X + this.x * GAME_SCALE;
const py = GAME_FIELD_Y + this.y * GAME_SCALE;
const size = BULLET_SIZE * GAME_SCALE;
// Рисуем пулю как белый квадрат
ctx.fillStyle = Colors.BULLET;
ctx.fillRect(px, py, size, size);
}
getBounds() {
return {
x: this.x,
y: this.y,
width: BULLET_SIZE,
height: BULLET_SIZE
};
}
В самом танке обновляем метод стрельбы. Раньше там не было нифига, теперь вот:
shoot() {
if (this.activeBullets >= this.bulletCount) {
return null;
}
//return null; - так было
// так стало:
// Вычисляем позицию пули (центр передней части танка)
let bulletX, bulletY;
const centerOffset = (TANK_SIZE - BULLET_SIZE) / 2;
switch (this.direction) {
case Direction.UP:
bulletX = this.x + centerOffset;
bulletY = this.y - BULLET_SIZE;
break;
case Direction.DOWN:
bulletX = this.x + centerOffset;
bulletY = this.y + TANK_SIZE;
break;
case Direction.LEFT:
bulletX = this.x - BULLET_SIZE;
bulletY = this.y + centerOffset;
break;
case Direction.RIGHT:
bulletX = this.x + TANK_SIZE;
bulletY = this.y + centerOffset;
break;
}
// Создаём пулю
const bullet = new Bullet(bulletX, bulletY, this.direction, this, this.bulletLevel);
this.activeBullets++;
return bullet;
}
Кто не любит абстракцию - быстренько пролистайте дальше. Считаю (и не только я) это одной из лучших своих работ, жалею только что не взяла для эксперимента бумагу поприличее, была бы прекрасная работа на хорошей бумаге )
Бумага целлюлоза 300г/м2, акварель, размер а3
Прекрасное сделано в один день с этой работой на групповом занятии, где перед нами поставили цель двумя цветами в максимально общем виде изобразить то, что видишь на референсе (у каждого был свой или даже два, как у меня)
В моей работе самое неприятное - это административная часть: бумаги, отчёты, ответы на многочисленные письма, организация всякой ненужной ерунды.
Бумаги даже на подоконнике...
Но у меня есть круг Вия: операционная. Идёшь туда, телефон трезвонит но тебе абсолютно по барабану. Ни одна сила не сможет оттуда достать. Особенно хорошо уходить на целый день. И как-то вопросы решаются сами по себе без моего участия, оказывается так может быть.
Конечно, я понимаю что это всё от моей доброты: кто везёт на том и едут. Поэтому научился говорить нет. Но не всякому начальнику можно сказать нет категорически.
А ещё я отучаю трезвонить мне многократно по всяким глупым вопросам. Когда поздно выхожу с операционной я выдерживаю небольшую паузу где-то в часик, пока оформляю документы, а потом перезваниваю часов в 9 вечера, мол, пойдем, дорогой коллега, решать твой супер экстренный вопрос, по которому ты мне 15 раз звонил в течение дня. И очень странно, но ни один из таких коллег не вернулся из дома в это время. Видимо все же вопрос был не таким уж и важным..
@Brainy , подключайся с размышлениям. Как у тебя с этим? Добр ко всем или лесом посылаешь?
Наконец-то у меня появилась настоящая лягушка! А то почти все из каких-то других семейств попадались.
Rana clamitans/Lithobates clamitans
Лягушка-крикунья, она же зелёная лягушка, отличается своим окрасом: зелёная голова и коричневое тело. Из-за генетической мутации может приобретать синий окрас. Лягушка пухлая, размером до 10 см. А ещё у неё очень заметная барабанная перепонка.
Обитает на востоке Северной Америки в любых пресных водоёмах, вид широко распространён.
Питается любой мелкой живностью: насекомые, рыба, головастики, улитки.
За один раз она может отложить до 7000 яиц! Я бы после такого тоже стала крикливой лягушкой.
А почему крикливая? Самок этого вида привлекают самые громкие самцы. Чем громче он орёт, тем лучше. Помимо этого самцы помечают территорию с помощью... плеска. Они громко плещутся в водоёме, чтобы другие знали: тут занято!
А орут не очень-то и громко, как ни странно. Узкороты эпичнее оказались.
По сути просто скороварка с функцией взрывного устройства, но это не точно. Несколько роликов где эту шайтан-кастрюлю смогли взорвать я всё же нашел, мне не понятно как они достигли такого эффекта, но цели взорвать его нет, поэтому и проверять не буду.
Казанчик удобная штука когда лень готовить, @vervolph самая ленивая кухня!
Махмуд, поджигай!
Очень простое приготовление максимально мягкого мяса, даже кости станут как безе и их тоже можно есть, если кому нравится. Мясо можно брать любое, хоть столетнего дракона пятку, оно все равно станет мягкой тушенкой. У меня самая простая говядина, даже не знаю с какой части туши, наверное около ребер где-то. Хорошо когда на ней есть жирок и даже какие-то маленькие хрящики.
Берем множко мяса и немножко овощей.
Процесс очень ленивый и прям примитивный можно сказать. Скидываем всё в казан, я только зелень не крошу туда и наливаем немного воды. Это нужно чтоб ничего не пригорело пока мясо и лучевский не дадут сок, а потом оно в нём и потушится. Конечно можно налить побольше, добавить картохи и получить отличную, наваристую шурпу или шорпу, суп короче, но я не любитель.
Почти готово!
Дальше всё закрываем, смотрим чтоб клапаны свободно болтались и ставим на плиту, или в костер если вы вдруг готовите на природе. Ждем когда закипит. Один из клапанов начнет дуть паром значит делаем нагрев меньше, смотрим на часы и ждем сорок минут. Можно тридцать, а вот час я уже не рекомендую, развалится все мясо в хлам и потом только блендером взбить это мясное смузи.
Гарнирчик.
Кто-то добавляет картоху прям в казан к мясу, но нам такое не понравилось. Правда и картошка у нас не особо вкусная. Поэтому в духовку её, сверху масла сливочного и перчика с солью. Тоже просто и лениво. Да и рис в рисоварке тоже не заморочено приготовить.
Зелень и лук к мясу это очень хорошо!
Вот собственно и всё, всех с прошедшим или с наступающим приятного аппетита!
Более полувека человечество изучает Марс с помощью орбитальных аппаратов, роверов и посадочных станций. За это время мы узнали о Красной планете невероятно много — несравнимо больше, чем за все предыдущие столетия наблюдений через наземные телескопы.
Но некоторые марсианские загадки до сих пор остаются без ответа. И чем больше мы смотрим на эту планету-соседку, тем больше вопросов возникает...
На снимке, представленном ниже, запечатлены странные впадины, которые были обнаружены к югу от Великой Северной равнины (крупнейшей низменности Марса, окружающей северный полярный регион), у границы древнего нагорья.
Структура этих природных образований сразу приковывает внимание: разломы четко указывают на обрушение к единой точке — словно поверхность провалилась внутрь, и грунт начал "ползти" к некоему скрытому центру.
На Земле аналогичные структуры встречаются над подледными вулканами. Механизм их появления прост: когда приближается извержение и тепло растапливает основание ледника, он проседает и трескается именно таким характерным образом — радиальные разломы, направленные к источнику тепла.
Ученые полагают, что под марсианским нагорьем, попавшим в кадр, скрываются огромные запасы подповерхностного водяного льда, так как это объяснило бы характер обрушения. Однако в этом регионе нет очевидных следов недавней вулканической активности. Никаких лавовых потоков, никаких вулканических конусов поблизости.
Что же тогда привело к обрушению льда? Может ли Марс оставаться вулканически активным телом по сей день? Если это так, то активность должна быть намного слабее земной и зреть глубоко под поверхностью, чтобы оставаться неуловимой для наших инструментов. Или, может быть, существует какой-то иной механизм, о котором мы пока не догадываемся?
Марс явно умеет хранить свои тайны. И стоит нам разгадать эту загадку, как на ее месте появятся минимум две новые.
Красный цвет — значит, всё очень плохо. Дней в таких окрасках у меня уже три: два в январе и один сегодня
Первое утро в Москве в 2026 году: встал в 12, силы есть, к будущей встрече с нейропушистиком готов. И вот настаёт пять с чем-то часов, выдвигаюсь...
Мило болтаем, гуляем, вглядываемся в мелочи и детали, а я фоткаю... доходим до магазина, покупаем вкусняшки (но не для ритуала сближения, на первую встречу решили не практиковать), идём до трамвайной остановки, садимся в трамвай, на котором я в последний раз ездил где-то лет пять назад...
1 из 4
...по пути спрашиваю, а всё ли хорошо/комфортно, в ответ получаю не очень уверенное, но утверждение, что да, поэтому позитивный настрой сохраняется, но едва выходим из трамвая и... тут получаю первый звоночек: замечание про неприятный запах...
из одного места
откуда мы издаём звуки в виде букв, слов и предложений
...и я рассказываю всё как есть, что я готов буду учесть это в будущем, ибо давно пытаюсь привить в себя данную привычку но как назло не оказалось зубной пасты, которая потерялась ещё на этапе жизни в гостях... и вроде бы даже это без негатива обсудили, но на этапе совместного селфи понимаю, что общение разваливается...
Тут номер у курьерской сумки блатной: две одинаковые буквы и четыре палки
Напоследок, она мне ещё раз в лоб это сказала, с таким резким осуждением данного действия, но добавил, что я таки классный... и мы разошлись.
Честно, кольнуло это и правда очень больно, настроение с хорошего изменилось на очень плохое, вместо дальнейших покатушек на трамвае поскорее хотелось уже домой... и это сказалось на остальном: высказал про игнор другому человеку, который систематически игнорит, и с ним тоже порвались связи; на сайте знакомств одна требовала с меня фотографий (у самой при этом их нет, л — логика), и я со скрипом дал ей ссылку на вк... в итоге сказала, что я маленький, и кинула в чс. Збс, спасибо.
Эй, здешние москвичи, гоу на днях погуляем я почищу зубы, обязательно!!! а то что-то совсем грустно.
Хочется. Но не можется :)
Платная стажировка о_о жестко.