Как сделать тетрис

Как тетрис захватил мир: правдивая история культовой игры

Как сделать тетрис

Шел 1985 год. Вычислительный центр РАН опустел после очередного трудового дня. Только из одного кабинета ложится в темный коридор полоска света. Там за новейшим компьютером «Электроника-60» сидит 29-летний программист Алексей Пажитнов и, не глядя, пытается затушить бычок в полной пепельнице.

На черном экране перед ним зеленые строки программного кода на Pascal. Его задача — создание искусственного интеллекта. Но, если честно, он уже неделю как забил на задание партии. Алексей просто играет в тетрис. Первый раз в истории человечества.

Все началось с того, что он притащил на работу головоломку «пентамино», по которой сходила с ума Москва 80-х (там нужно собрать фигуры из пяти квадратов в коробку). Алексей решил ее оцифровать. Вскоре фигуры потеряли один квадрат, а готовые ряды стали «сгорать», вызывая у игрока чувство необъяснимого удовлетворения.

Уже через год тетрис прижился по всему советскому пространству. Друзья взахлеб рассказывали Пажитнову: «Представляешь, получили из Болгарии компьютер, нулевый винчестер, и только одна программка болтается: твоя игра!»

И вот пришел момент, когда в Венгерском институте проблем кибернетики тетрис увидел первый капиталист — англичанин Роберт Штайн. Во время экскурсии по институту Роберт остановился за спиной у лаборанта и минут через двадцать объявил, что он это покупает.

«Что?» — удивились венгры. «Эту гениальную игру!» — воскликнул англичанин. Честные венгры признались, что игра им досталась на халяву, она давно гуляет по институтам. Кажется, ее придумали русские в Академии наук.

«Москоу? Ноу проблем!» — легкомысленно улыбнулся Роберт.

Добравшись до Лондона, Штайн немедленно телеграфирует в РАН. За права на тетрис он предлагает русским 10 000 долларов и 75% прибыли, которую получит с продаж как посредник. Ответ приходит через полтора месяца (Пажитнову пришлось побегать, чтобы перевести злополучный телекс со знакомым словом и добиться у начальства разрешения ответить «скорее положительно»).

Изучив формулировки Москвы, Штайн решил, что контракт у него в кармане. Тетрис начинают готовить к запуску в крупнейшей британской компании Mirrorsoft и в Spectrum Holobyte в США (ушлый Роберт уже успел заразить их тетрисом). Однако, когда Штайн приехал в Москву, он понял, что поторопился насчет «ноу проблем».

Англичанин полдня ждет аудиенции в компании «Элорг», которая отвечала за продажу продуктов труда советских программистов. И вот дубовые двери открываются. Через длинный стол Штайну сообщают, что советская сторона недооценила потенциал научной разработки, интересующей зарубежного гостя. Москва требует больше денег. Рассердившись, Роберт уезжает ни с чем.

Торжественный релиз тетриса для РС назначен на рождественские каникулы 1987–1988 годов. Американцы решили сыграть на популярности СССР и упаковали игру в красную коробку с Василием Блаженным и серпом вместо буквы «с» в названии. Новое завораживающее развлечение рекламируют как «первый прорыв железного занавеса», и оно мгновенно завоевывает рынок.

Пикантность ситуации заключается в том, что люди покупают пиратскую копию игры. Штайн все еще отчаянно торгуется с русскими, которые и не подозревают о «прорыве железного занавеса». Англичанин серьезно рискует. Если он не подпишет контракт, копирайт на новый хит может перекупить кто угодно!

Дело осложняет еще и страшный скандал, который русские устроили, увидев, как будет выглядеть игра. В заставке программы над Красной площадью летит самолетик, который тащит надпись «Тетрис».

«Это провокация! Они имеют в виду Руста!» — паникуют в «Элорге». Клятвенно пообещав убрать крамольный самолет, Штайн наконец покупает права на тетрис для РС, хоть и дороже, чем рассчитывал.

В феврале 1988 года Роберт с облегчением улетает домой.

Глава компании Nintendo от America Минору Аракава увидел тетрис на презентации игрового автомата, который выпустил его главный конкурент — Atari Games.

Пощелкав языком, господин Аракава кисло улыбнулся соперникам и погрузился в мечты о том, как славно эта игра смотрелась бы на карманной консоли Game Boy, которая как раз находилась в разработке.

Хитро щурясь, господин Аракава решил посоветоваться со своими юристами, является ли Game Boy отдельным продуктом, на который можно выкупить права у изобретателя тетриса. Кстати, кто он? На Пажитнова начинается настоящая охота.

В феврале 1989 года в Москве оказались сразу три охотника. Первым прибыл Хенк Роджерс, человек Аракавы. Вторым был глава компании Mirrorsoft Кевин Максвелл, сын влиятельного владельца газеты Mirror Роберта Максвелла.

Кевин устал ждать от Штайна окончательной и полной передачи прав на тетрис и решил разобраться во всем сам.

Третьим прилетел сам Роберт Штайн, который был напуган напором Nintendo и Mirrorsoft и молился только о том, чтобы выбраться из этой ситуации.

«Электроника-60», на которой написан тетрис

Но Роберту недолго предстояло отдыхать от русского гостеприимства. Летом 1987 года в «Элорге» опять получают телекс из Лондона.

Смысл его примерно таков: пропади оно все пропадом, нельзя ли выкупить тетрис еще и для игровых автоматов? Тут нет ничего удивительного: владельцев персональных компьютеров в 1987 году было гораздо меньше, чем бездельников, которые ошивались в игровых залах.

При этом Mirrorsoft уверен, что русские легко подпишут со Штайном любой контракт: новый хит можно запускать хоть на стиральных машинах. Так что британцы, не задумываясь, передают права на выпуск тетрис-автомата фирме Atari Games, и в США с помпой проходит его презентация.

Проклиная гениальность русских программистов, Штайн шлет в Москву десятый телекс. В «Элорге» решают наконец разобраться с этим запутанным делом. Ответственным назначают Николая Беликова.

Этот строгий функционер впервые внимательно изучает контракт со Штайном, и его охватывает праведный коммунистический гнев: за полгода от англичанина не поступило ни цента, при этом в договоре даже не предусмотрено штрафа за задержку выплат!

Тетрис-заговор

Фанаты тетриса в США приветствовали друг друга кодовой фразой: «КГБ смотрит за тобой!» Они были уверены, что игра — это тайное оружие, разработанное в советских лабораториях для дестабилизации американских офисов.

В 1994 году шутка была процитирована в фильме «Полицейская академия — 7: Миссия в Москве»: русский негодяй Константин Каналья создает игру, взламывающую любой компьютер, на который она установлена. Игре не может противостоять никто, и злодей почти завоевывает мир.

Хенк Роджерс считал себя гражданином мира. Он обожал приезжать в новую страну, селиться в случайные гостиницы, обрастать друзьями в барах, чтобы уже через неделю чувствовать себя своим. Усвоив чужую культуру, Хенк легко устанавливал личные отношения с деловыми партнерами и покупал самое лучшее по лучшей цене.

М. С. Горбачев чуть было не изменил судьбу тетриса

К вечеру первого дня в Москве Роджерс сидел в пустом номере «Интуриста» (в этом гетто для иностранцев!) и разглядывал капли на стекле. За весь день ему не удалось познакомиться ни с одним человеком — вокруг были напряженные, несчастные лица. Это была первая столица, в которой Роджерс не увидел ни одной рекламы, ни одного красочного пятна.

В отеле ему сказали, что не знают, что такое тетрис и где находится «Элорг». И вообще, зачем иностранцу может понадобиться такая информация? Однако через пару дней Хенку удалось взломать культурный код.

Он попал в шахматный клуб, где познакомился с игроками в го. Те помогли ему найти переводчицу в специальном агентстве.

Уже на следующий день она гордо провела Хенка мимо вахтера на входе в «Элорг» (это же иностранец!) прямо к дубовым дверям «хранителя» тетриса.

Тетрис-эффект

Психологи отмечают, что заядлые игроки в тетрис начинают видеть знакомые очертания фигурок во сне и наяву. Они с трудом борются с желанием поставить тумбочку в нишу на шкафу и особенно тщательно укладывают покупки в багажник машины. Этот эффект был спародирован в одной из серий «Симпсонов», когда Гомер очень быстро засовывает на заднее сиденье коробки и даже детей.

Вот уже почти полгода в привычном социалистическом темпе росла кипа бумаг по тетрису на столе Николая Беликова. И вдруг иностранные партнеры как будто взбесились.

Хенк Роджерс, проникший в СССР, чтобы перекупить тетрис

21 февраля в кабинете Беликова раздается звонок Роберта Штайна. Тот говорит, что прибыл в Москву для личных переговоров и просит назначить встречу на следующий день.

Буквально через пару часов телефон опять звонит, и снова безликий голос переводчика сообщает, что с «господином Беликовым» имеет честь говорить Кевин Максвелл, глава компании Mirrorsoft. Кевин желал бы обсудить одну безделицу — программу под названием «Тетрис».

Ему было назначено на следующий день после Штайна.

После обеда в кабинет Беликова заглядывает испуганная секретарша и сообщает, что в приемную ворвался сумасшедший иностранец, который выкрикивает слово «тетрис». Слово оказалось волшебным паролем: если бы Беликов не слышал его с утра, никогда бы Хенк с улицы не пробрался в кабинет советского чиновника!

Следует отдать должное и самому Беликову. Чутьем этого коммуниста, не знавшего законов западного бизнеса, впоследствии восхищались крупнейшие капиталисты.

В России Game Boy известен в виде китайской поделки

Выслушав Роджерса, Беликов понял, что на Западе давно гуляет не только компьютерный тетрис, права на который были так неудачно проданы Штайну.

Мир вовсю режется в эту игру на автоматах и с помощью специальных телеприставок! Беликов объясняет Хенку, потерявшему дар речи от счастья, что у Mirrorsoft нет прав на большую часть их продукции и права эти продаются.

На следующий день чиновник встречает Штайна ледяным молчанием.

После продолжительных извинений Беликов объявляет, что передачу прав на игровые автоматы можно подписать только вместе с приложением к первому контракту. В этом документе Беликов назначает огромные штрафы за задержку выплат (в разы больше общепринятых в таких случаях). Штайн начинает торговаться. Беликов хмурится, но идет на уступки.

Англичанин с облегчением подписывает контракт, не замечая уловки чиновника. В первом контракте не определено слово «компьютер», так что им можно считать любую вещь, имеющую процессор, в том числе телеприставку и Саше Воу. Во втором варианте контракта Беликов уточняет, что такое РС. У «Элорга» остаются права на все остальные виды тетриса, которые можно заново продать!

Связи Максвелла-старшего почти помогли… Максвеллу-младшему получить права на игру

Когда в кабинет Беликова небрежной походкой зашел глава Mirrorsoft Кевин Максвелл, на руках у чиновника были одни козыри.

Тихим голосом, делая внушительные паузы, Беликов заявил, что Mirrorsoft без всякого разрешения производит игровые автоматы и телевизионные приставки с советской программой — это настоящее воровство! Кевин покорно извиняется, ругает Штайна и предлагает наконец выкупить эти права, чтобы не было никаких проблем.

На все это Беликов с непроницаемым лицом отвечает, что фирма Mirrorsoft неодинока: недавно «Элоргу» поступило такое же предложение от компании Nintendo. Кевин уходит из кабинета в холодном поту. Он только что вложил в выпуск приставок миллионы долларов. Если тираж придется выбросить, его компания — банкрот.

Но у Кевина есть козырь в рукаве. Он звонит всемогущему отцу, и тот подключает свои давние связи с русской партийной верхушкой. Через месяц Беликову приходит телекс из Лондона, в котором сообщается, что вопрос о его вредительских действиях в отношении торгового сотрудничества между СССР и Великобританией будет рассмотрен во время официального визита Горбачева в Лондон.

Большое и малое

Самая большая партия в тетрис была сыграна в 1995 году в городе Делфт, Нидерланды. Группа студентов написала компьютерную программу, которая управляла включением света в 15-этажном здании в центре города. Хуже всего в тот вечер чувствовали себя посетители кофе-шопов, которые выходили на улицу и видели там ТАКОЕ!

Самый маленький в мире тетрис соорудили те же голландцы. На этот раз расстарались сотрудники отдела физики комплексных систем в Амстердамском университете.

Они сконструировали специальный световой уловитель, который может двигать микроскопические стеклянные частицы (размером 0,001 мм) по площадке под микроскопом.

И все только для того, чтобы слепить из частиц фигурки, столпиться у микроскопа и заняться любимой игрой. Теперь мы окончательно убедились в том, что голландцы — люди без комплексов!

Судьба Беликова висела на волоске. Начальство советовало ему поехать в Лондон, пасть в ножки, отдать Максвеллам тетрис и просить прощения. Однако чиновник делает невероятно смелую ставку. За 500 000 долларов (и несколько центов с каждой приставки) он продает остальные права на тетрис компании Mirrorsoft.

Было ли в этом желание насолить Горбачеву, который в 1989 году стремительно терял власть? Или решающую роль сыграл Пажитнов, который стал тем самым «личным контактом» Хенка Роджерса (они познакомились в коридорах «Элорга», и программист в тот же вечер привез потерянного иностранца домой, напоил коньяком и проговорил с ним целую ночь про игры)?

Через несколько месяцев Беликов, ожидавший громкого увольнения, получает приглашение в Америку.

Глава Nintendo Минору Аракава зовет русского партнера отпраздновать выигранное в суде дело о пиратских телевизионных приставках и разорение главных конкурентов — Atari Games.

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

Источник: https://www.MaximOnline.ru/longreads/get-smart/_article/priklyucheniya-tetrisa/

Игре

Как сделать тетрис

В 1990-2000-х годах в странах СНГ, в том числе и в Казахстане, были популярны игровые консоли Brick Games. Небольшие прямоугольные устройства разных цветов с характерно скруглёнными углами в народе называли “Тетрис” – по самой популярной игре, ради которой эту консоль и покупали.

6 июня 2019 года “Тетрису” исполнилось 35 лет. Informburo.kz рассказывает, почему это не просто игра, а целый культурный феномен, ставший символом детства для нескольких поколений.

Кто и как придумал “Тетрис”

“Тетрис” – это игра-головоломка, которую придумал и разработал советский программист Алексей Пажитнов из Вычислительного центра Академии наук СССР. Пажитнов написал игру на языке программирования Pascal, её выпустили для “Электроники-60” – серии микроэлектронных вычислительных машин советского производства.

Алексей Пажитнов, создатель “Тетриса” / Фото с сайта factroom.ru

Название “Тетрис” – производное от двух слов, “тетрамино” и “теннис”.

Тетрамино – геометрические фигуры, образованные из 4 квадратов, которые по-разному соединены разными сторонами: это те самые фигурки, что падают в игре. Головоломки на основе подобных фигур существовали задолго до появления “Тетриса”, именно они и стали основой идеи для игры.

В СССР начиная с 1960-х было популярно пентамино: головоломки из фигур, образованных соединением 5 квадратов: им была посвящена постоянная рубрика в научно-популярном журнале “Наука и жизнь”, а в магазинах продавали пластмассовые наборы фигурок (они были дефицитными, и купить их считалось удачей).

Такой набор пластмассовых фигурок пентамино вместе с другими классическими головоломками использовал Алексей Пажитнов для обкатки своих идей: в ВЦ Академии наук СССР он работал над искусственным интеллектом и распознаванием речи. Пажитнов пробовал автоматизировать укладку пентамино, но тогда мощности оборудования не хватало для обработки вращения пентамино. Тогда программист решил убрать один квадрат – получились тетрамино.

Опыты привели к идее игры “Тетрис”: падающие фигурки можно вращать и ставить в разные места поля, от чего заполненные ряды исчезают. 6 июня 1984 года Пажитнов выпустил игру, ставшую известной во всем мире. СССР, в котором появился “Тетрис”, не существует, а вот игра популярна до сих пор.

Как “Тетрис” распространился по всему миру?

В 1985 году шестнадцатилетний Вадим Герасимов переписал “Тетрис” на Turbo Pascal, адаптировав таким образом игру для IBM PC – первого массового персонального компьютера. Двумя годами позднее он также добавил в игру некоторые детали.

Это способствовало глобальному распространению игры.

Вадим Герасимов, второй создатель “Тетриса” / Фото с сайта gigazine.net

Спустя несколько месяцев после выхода “Тетриса” о нём узнал Роберт Стейн – импортёр программного обеспечения из Венгрии. Стейн приехал в Москву, чтобы договориться с Пажитновым о лицензии на выпуск игры.

Пажитнов подарил ему “Тетрис”, и Стейн решил, что игру можно свободно издавать.

Он продал права на “Тетрис” компании Mirrorsoft и её “дочке” Spectrum HoloByte, но когда Стейн снова приехал договариваться о сделке в Москву, ему отказали в продаже прав на предложенных условиях.

Роберт Стейн / Фото с сайта gigazine.net

Пока Стейн пытался договориться, Mirrorsoft и Spectrum HoloByte выпустили свой вариант “Тетриса”. В отличие от оригинальной версии Пажитнова, у нового “Тетриса” появился звук и была значительно улучшена графика, а ещё разработчики добавили в неё “русский колорит”: например, в фоновой заставке игры появлялся Юрий Гагарин и другие персонажи.

Игра стала узнаваемой и распространялась как сенсационная новинка – первая игра из-за “железного занавеса” СССР.

Роберт Стейн так и не сумел договориться с руководителями “Электроноргтехники”, его позиции особенно пошатнулись после того, как мир узнал настоящего автора игры: журналисты CBS взяли интервью у Пажитнова. Далее борьба за право выпускать популярную головоломку для разных устройств достигла нешуточных оборотов, что тоже подогрело интерес к “Тетрису”.

Mirrorsoft и Spectrum HoloByte продали права как сублицензию на свою версию “Тетриса” для разработки игры для консолей фирмам Bullet-Proof Software (с распространением на японском рынке) и Atari Games (для рынков Японии и США). Nintendo разрабатывает Game Boy – карманную игровую приставку.

“Если вы хотите продавать Game Boy маленьким мальчикам, то продвигайте “Марио”. Если хотите продать Game Boy всем – запускайте “Тетрис”, – сказал руководству компании Хэнк Роджерс, президент Bullet-Proof Software.

Игровая консоль Game Boy от Nintendo / Фото с сайта polygon.com

Хенк Роджерс пытался связаться со Стейном, чтобы решить вопрос с лицензированием игры, но не получил ответа. Тогда он решил сам лететь в Москву, куда также отправлись Стейн и Кевин Максвелл – сын медиамагната Роберта Максвелла, которому принадлежали Mirrorsoft и Spectrum HoloByte.

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

Роджерс из Bullet-Proof Software первым встретился с представителями “Электроноргтехники”, он был знаком с Пажитновым и присоединившимся к разработке Владимиром Похилко. Русские заключили контракт с Роджерсом, теперь его компания могла разрабатывать версии “Тетриса” для карманных устройств.

Он продемонстрировал версию “Тетриса” для Famicom – игровой консоли от Nintendo. Нарастала напряжённость между Bullet-Proof Software, разрабатывающей игры для Nintendo, и Atari Games.

Компания Роджерса купила права на “Тетрис” для японского рынка не только как сублицензию у Mirrorsoft и Spectrum HoloByte, но также и у Tengen – подразделения Atari Games, распространяющую “Тетрис” для консолей в Японии.

А вот Atari Games ничего покупать не стала: они сделали специальный чип, позволяющий обходить защитные механизмы Nintendo, что позволило создавать картриджи для этой игровой системы фирмам без лицензии Nintendo. Конфликт между компаниями привёл к длительному судебному разбирательству, длившемуся до 1993 года.

Алексей Пажитнов, Хэнк Роджерс и президент Nintendo господин Ямаути / Фото с сайта nintendolife.com

Когда Кевин Максвелл прибыл в Москву, ему показали картридж с “Тетрисом” для Famicom, где производителем значилась Mirrorsoft – игра произведена по сублицензии компании. Кевин не был в курсе дел компании отца, поэтому заявил, что это подделка, и покинул Москву.

Спустя всего 5 лет о правах на версии “Тетриса” для разных компьютеров заявляют несколько компаний, среди которых – Atari и Nintendo.

“Электроноргтехника” распределяет права: Atari достаются права на версии для игровых автоматов, а Nintendo – на игровые консоли и портативные игровые системы.

Подразделение Atari игнорирует соглашение и выпускает игру, названную TETЯIS, для консоли Nintendo NES, за что Nintendo подаёт на неё в суд и выигрывает.

Выпущенный без лицензии TETЯIS от Tengen, подразделения Atari Games / Фото с сайта magicjournal.ru

В 1989 году в Москве вновь обсудили права на игру. Представитель “Электроноргтехники” сообщил, что компания на стороне Nintendo. Роберт Максвелл, глава Mirrorsoft, продавший права Atari, пытался переломить ситуацию. Он задействовал немалые ресурсы: газетный концерн Mirror Newspaper Group в Англии и издательство Macmillan в США, привлёк связи на уровне правительства.

Из Москвы магнату пришло письмо, посланное лично Михаилом Горбачёвым, в котором сообщалось, что “не нужно беспокоиться по поводу японской компании”. Но уговоры Nintendo вместе с поддержкой Роджерса самим Пажитновым перевесили, и “Электрооргтехника” не стала уступать властным структурам.

Подразделению Atari решением суда запретили производить и продавать “Тетрис”, а Nintendo выпустила консоль Game Boy с игрой.

Консоль Game Boy поставлялась с игрой “Тетрис” в комплекте / Фото с сайта Wikimedia Commons

Nintendo получает высокую прибыль от продаж “Тетриса”, а Пажитнов остаётся ни с чем вплоть до 1996 года: в этом году истекает первоначальная лицензия, и только после этого ему достаются первые небольшие отчисления от продаж.

Зато хорошие отношения с Роджерсом идут ему на пользу: в этом же году они вместе создают компании The Tetris Company LLC и Blue Planet Software.

Они регистрируют Tetris в качестве торговой марки, и теперь компании приобретают у них лицензию на игру.

Пажитнов перебрался в США и устроился на работу в Microsoft, где под его руководством выпустили набор головоломок Pandora’s Box. В компании он проработал вплоть до 2005 года, но непосредственно программированием не занимался.

“Тетрис” – лучшая игра-головоломка

Портал о гаджетах и технологиях Engadget пишет, что всего продано более 170 миллионов копий игры “Тетрис” для практически всех игровых и компьютерных платформ, которые только можно представить. По их данным, только постоянно развивающийся Minecraft продал больше.

В 2014 году игре исполнилось 30 лет, и в честь этого в Филадельфии на выставке Philly Tech Week геймдизайнеры сыграли в самый большой “Тетрис” – его спроецировали на 29-этажное здание. Хэнк Роджерс, глава The Tetris Company, заявил в интервью, что количество платных загрузок игры для мобильных телефонов превысило 425 миллионов.

“Тетрис” на стене 29-этажного здания в Филадельфии / Фото с сайта venturebeat.com

“Тетрис” используют как пасхалку: например, его можно найти в текстовом редакторе emacs (открывается после нажатия Esc+X и ввода команды tetris) и клиенте программы μTorrent (“Справка” – “О программе”, затем и нажать клавишу “Т”). Американский журналист Дан Акерман написал об игре книгу “Эффект Тетриса”. По игре в “Тетрис” проводятся международные турниры, а саму игру даже решили экранизировать в виде эпического триллера.

Но “Тетрис” стал не просто популярной игрой. В 2007 году его сочли одной из 10 важнейших компьютерных игр и приняли на сохранение в самую крупную библиотеку мира – Библиотеку Конгресса США.

Психологи даже назвали в честь игры феномен, когда человек уделяет так много внимания и времени некой деятельности, что начинает видеть характерные для этой деятельности образы во сне, в мыслях, а также в реальном мире. Об эффекте или “синдроме Тетриса” впервые написали в 1994 году в журнале Wired в статье “This is Your Brain on Tetris”.

Люди, долго игравшие в “Тетрис”, видели характерные падающие блоки во сне или периодически задумывались о компактном совмещении форм в реальном мире, замечали “пустые места” среди коробок в супермаркете или в массивах зданий на улице.

В 1996 году в издании Philadelphia City Paper впервые назвали феномен “Эффектом Тетриса”, и этот термин впоследствии прижился.

В “Тетрис” играли и продолжают играть разные поколения, он был и остаётся популярной головоломкой на самых разных устройствах. Хэнк Роджерс сказал: “Если экран может отображать, то на этом устройстве должен и будет работать “Тетрис”. А сам Пажитнов в 2015 году отметил, что хотел бы адаптировать игру для платформ виртуальной реальности.

Мы не знаем, появится ли ещё одна подобная игра-головоломка, не теряющая популярность так долго. Но “Тетрис” уже 35 лет адаптируется под все возникающие технологии, и (во всяком случае, пока) нет причин полагать, что игре это когда-нибудь перестанет удаваться.

Источник: https://informburo.kz/stati/igre-tetris-ispolnilos-35-let-kak-i-pochemu-ona-stala-kulturnym-fenomenom.html

Создание игры

Как сделать тетрис

Дмитрий Бушуев  | 

  Обновл. 15 Фев 2020  | 

 ǀ   14 

На написание данной статьи меня побудил ролик c -а, в котором автор за 4 минуты с нуля, используя графическую библиотеку SFML, создаёт рабочий прототип Тетриса.

Всё это происходило в ускоренном воспроизведении под веселую вариацию оригинальной тетрис-мелодии «Коробейники». За всё это время автор не произнёс ни слова, а сам ролик содержал несколько довольно неочевидных моментов, которые требовали пояснений.

В связи с этим я решил взять на себя ответственность и восполнить данный пробел.

Первые шаги

Как вы уже знаете, практически любое SFML-приложение начинается с минимального каркаса:

#include using namespace sf; int main() { RenderWindow window(VideoMode(320, 480), “The Game!”); // Главный цикл приложения: выполняется, пока открыто окно while (window.isOpen()) { // Обрабатываем события в цикле Event event; while (window.pollEvent(event)) { // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) // тогда закрываем его window.close(); } // Установка цвета фона – белый window.clear(Color::White); // Отрисовка окна window.display(); } return 0; }

#include RenderWindow window(VideoMode(320, 480), “The Game!”); // Главный цикл приложения: выполняется, пока открыто окно // Обрабатываем события в цикле while (window.pollEvent(event)) // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) // Установка цвета фона – белый window.clear(Color::White);

Далее мы создаём спрайт для представления различных элементов фигур в нашей игре и присваиваем ему файл текстуры — tiles.png. Сам файл текстуры у меня располагается по пути C:\dev\SFML_Tutorial\images\. Текстура являет собой 8 разноцветных квадратов, горизонтально стоящих друг за другом. Размер каждого такого квадрата составляет 18х18 пикселей.

Ниже представлен код, который подгружает эту текстуру в программу:

#include using namespace sf; int main() { RenderWindow window(VideoMode(320, 480), “The Game!”); // Создание и загрузка текстуры Texture texture; texture.loadFromFile(“C:\\dev\\SFML_Tutorial\\images\\tiles.png”); // Создание спрайта Sprite sprite(texture); // Главный цикл приложения: выполняется, пока открыто окно while (window.isOpen()) { // Обрабатываем события в цикле Event event; while (window.pollEvent(event)) { // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) // тогда закрываем его window.close(); } // Установка цвета фона – белый window.clear(Color::White); // Отрисовка спрайта window.draw(sprite); // Отрисовка окна window.display(); } return 0; }

#include RenderWindow window(VideoMode(320, 480), “The Game!”);    // Создание и загрузка текстуры texture.loadFromFile(“C:\\dev\\SFML_Tutorial\\images\\tiles.png”); // Главный цикл приложения: выполняется, пока открыто окно // Обрабатываем события в цикле while (window.pollEvent(event)) // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) // Установка цвета фона – белый window.clear(Color::White);

Если мы скомпилируем и запустим наш проект, то увидим следующее:

Теперь нам нужно выделить из всего спрайта отдельный квадратик, чтобы можно было его использовать для построения нужных нам фигур Тетриса. Для этого воспользуемся методом setTextureRect():

// … texture.loadFromFile(“C:\\dev\\SFML_Tutorial\\images\\tiles.png”); // Создание спрайта Sprite sprite(texture); // Вырезаем из спрайта отдельный квадратик размером 18х18 пикселей sprite.setTextureRect(IntRect(0, 0, 18, 18)); // …

texture.loadFromFile(“C:\\dev\\SFML_Tutorial\\images\\tiles.png”);    // Вырезаем из спрайта отдельный квадратик размером 18х18 пикселей sprite.setTextureRect(IntRect(0, 0, 18, 18));

В результате мы получим следующее:

Работа с фигурками Тетриса

Следует вопрос: «А как мы можем программным образом представить наши фигурки?». Давайте рассмотрим их детальнее. Из Википедии можно узнать, что наши фигурки называются тетрамино, т.к. каждая такая фигура состоит из 4 квадратов. Всего же в Тетрисе используется 7 таких фигурок-тетрамино:

Поэтому вполне логично описать их в виде целочисленного двумерного массива с 7 строками (по числу фигур) и 4 столбцами, задающих форму каждой конкретной фигуры. Возникает ещё один вопрос: «А каким образом мы будем задавать форму тетрамино?».

Ответ вы найдёте ниже:

Заметьте, нам не важен порядок следования закрашенных квадратов. Важен лишь сам факт: закрашен квадрат или нет. Поэтому первой фигуре с множеством «точек» (3, 5, 4, 6) в соответствие можно поставить как набор (5, 3, 4, 6), так и набор (3, 5, 6, 4).

Игровое поле тоже можно представить в виде целочисленного массива field[M][N], где M — это высота поля, а N — его ширина. Добавим эти элементы в наш код:

#include using namespace sf; const int M = 20; // высота игрового поля const int N = 10; // ширина игрового поля int field[M][N] = { 0 }; // игровое поле // Массив фигурок-тетрамино int figures[7][4]= { 1,3,5,7, // I 2,4,5,7, // S 3,5,4,6, // Z 3,5,4,7, // T 2,3,5,7, // L 3,5,7,6, // J 2,3,4,5, // O };

#include const int M = 20; // высота игрового поляconst int N = 10; // ширина игрового поляint field[M][N] = { 0 }; // игровое поле// Массив фигурок-тетрамино

Привязка тетрамино к координатам игрового поля

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

А для этого нужно каким-то образом связать локальные координаты, которыми задаются фигурки-тетратимино, с глобальными координатами игрового поля.

Для решения данной задачи в качестве примера рассмотрим Z-тетрамино. Напомню, что отсчёт координат игрового поля начинается с верхнего левого угла:

Видно, что, например, квадрат №5 будет иметь координаты (1;2), квадрат №6 будет иметь координаты (3;0) и т.д. Но как описать данные факты математически? Чтобы разобраться с этим вопросом, сделаем небольшое лирическое отступление. Для этого возьмите листик и начните выписывать в строчку числа от 0 до 40 так, чтобы в каждой строке было ровно 10 чисел.

У вас должно получиться что-то следующее:

01239
1011121319
2021222329
3031323339

Сразу бросается в глаза, что в числах каждой отдельно взятой строки содержится одинаковое количество десятков. Например, в первой строке (числа 0, 1, 2, 3, … ) у нас 0 десятков, во второй строке (числа 10, 11, 12, 13, …) у нас по одному десятку в каждом числе, в третьей строке (числа 20, 21, 22, 23, …) у нас уже по 2 десятка в каждом числе и т.д.

Если теперь рассмотреть столбцы, то номера столбцов соответствуют остатку от деления на 10, содержащемуся в числе из этого столбца. Например, возьмём столбец №1 и число 21.

Если мы 21 нацело разделим на 10, то получим в результате 2 с остатком 1 (21 = 2 * 10 + 1), что соответствует номеру столбца.

Если возьмем столбец №9 и число 39, также разделим его нацело на 10, то получим в результате 3 с остатком 9 (39 = 3 * 10 + 9), что также соответствует номеру столбца. В итоге, если продолжать этот процесс, то наша исходная таблица примет следующий вид:

01239
00=0*0+01=0*0+12=0*0+23=0*0+39=0*0+9
1010=1*10+011=1*10+112=1*10+213=1*10+319=1*10+9
2020=2*10+021=2*10+122=2*10+223=2*10+329=2*10+9
3030=3*10+031=3*10+132=3*10+233=3*10+339=3*10+9

Здесь уже становится понятно, что остаток от деления на 10 задаёт расположение числа по горизонтали, а количество десятков (частное от деления на 10) — задаёт расположение по вертикали.

Если вспомнить, что в программировании оператор % — это остаток от деления, а оператор / — частное от деления (деление нацело), то, например, число 32 в нашей таблице будет иметь координаты (2;3) = (32 % 10; 32 / 10).

Вернёмся к нашей исходной задаче:

Т.к. здесь в каждой строке не 10 чисел, а 2 числа, то делить нужно на 2, а не на 10. И тогда квадратик №5 будет иметь координаты (1;2) = (5 % 2; 5 / 2).

Отображение тетрамино на игровом поле

А сейчас попробуем отобразить наши фигурки на игровом поле. Для этого, прежде всего, нужно создать структуру Point, которая будет представлять точку с целыми координатами + два вспомогательных массива a[] и b[]:

// Массив фигурок-тетрамино int figures[7][4]= { 1,3,5,7, // I 2,4,5,7, // Z 3,5,4,6, // S 3,5,4,7, // T 2,3,5,7, // L 3,5,7,6, // J 2,3,4,5, // O }; struct Point { int x, y; } a[4],b[4];

// Массив фигурок-тетрамино

Затем, с помощью одного цикла for, мы переведём «локальные» координаты каждого отдельного кусочка тетрамино в «глобальные», а затем, с помощью второго цикла for, отобразим это всё на игровом поле. При этом стоит учитывать, что размеры отдельного кусочка равны 18х18 пикселей:

// … while (window.isOpen()) { // Обрабатываем события в цикле Event event; while (window.pollEvent(event)) { // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) // тогда закрываем его window.close(); } int n = 3; // задаём тип тетрамино for (int i = 0; i < 4; i++) { a[i].x = figures[n][i] % 2; a[i].y = figures[n][i] / 2; } // Задаём цвет фона - белый window.clear(Color::White); for (int i = 0; i < 4; i++) { // Устанавливаем позицию каждого кусочка тетрамино sprite.setPosition(a[i].x * 18, a[i].y * 18); // Отрисовка спрайта window.draw(sprite); } // Отрисовка окна window.display(); } return 0; }

// Обрабатываем события в цикле while (window.pollEvent(event)) // Пользователь нажал на «крестик» и хочет закрыть окно? if (event.type == Event::Closed) int n = 3; // задаём тип тетрамино for (int i = 0; i

Источник: https://ravesli.com/graficheskaya-biblioteka-sfml-sozdanie-tetrisa-chast-1/

Рассказываем, как стать кудесником блоков в TETRIS® 99!

Как сделать тетрис

07.03.2019

99 игроков, и только один победитель! TETRIS® 99 — классическая игра-головоломка в совершенно новой оболочке. Здесь вы будете соревноваться онлайн* одновременно с 98 игроками со всего мира.

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

Подписывайтесь на на

Игра TETRIS® 99 доступна членам платного сервиса Nintendo Switch Online в качестве эксклюзивного предложения. Любой может бесплатно загрузить ее в Nintendo eShop на Nintendo Switch, но только члены Nintendo Switch Online могут в нее играть!

Загрузить TETRIS® 99 на нашем веб-сайте

Подробнее о платном членстве Nintendo Switch Online

С этим все ясно. но как выиграть?

Сейчас расскажем. Как и в других играх этой знаменитой серии, вверху экрана появляются различные тетрамино. Вам надо расставлять их так, чтобы убирать ряды и не дать матрице заполниться до самого верха.

Но в TETRIS® 99 каждый раз, когда кто-то убирает одновременно два ряда или более, он посылает серые мусорные блоки другим игрокам, создавая им дополнительные трудности. Заполняя матрицы других игроков, вы отправляете их в нокаут и тем самым приближаетесь к победе. Но мусорные блоки валятся со всех сторон, так что у вас не будет права на ошибку.

Если вы наносите другому игроку финальный удар, то получаете значок. Но об этом чуть позднее…

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

Как можно управлять своими атаками?

Очень просто! Правым мини-джойстиком выберите одно из четырех направлений — так можно сменить фокус и выбрать тип игроков, которых вы хотите атаковать. Переключайтесь между различными стратегиями во время игры, чтобы оставаться максимально эффективным!

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

Верхнее направление переводит игру в режим «В нокаут!». Здесь ваши мусорные блоки отправятся к тем игрокам, у которых значительная часть экрана заполнена блоками и которым осталось совсем немного. Так вы сможете быстрее избавиться от конкурентов.

Нажав правый мини-джойстик вправо, вы выберите «Значки». Рискованный вариант, ведь в этом случае вы сосредоточитесь на игроках с наибольшим количеством значков за нокауты. Другими словами, вы привлечете к себе внимание лучших игроков.

И наконец, если вы нажмете правый мини-джойстик влево, то вернетесь к настройкам по умолчанию и мусорные блоки будут падать случайным игрокам.

Да, если вы готовы к серьезному экшену! С помощью левого мини-джойстика можно выбрать определенного игрока, который будет получать все ваши мусорные блоки, пока он подсвечен курсором. Вот только не так-то просто убирать ряды со своего экрана и одновременно следить за матрицами других игроков, особенно на финальной стадии игры!

А-а-а… Меня завалило мусорными блоками. Нужна помощь!

Простого решения тут нет — продолжайте убирать ряды! Поддерживать порядок в своей матрице так же важно, как планировать наступательные действия. Помните, необязательно всегда стремиться выполнить тетрис (убрать четыре ряда за раз). Вполне эффективны будут и последовательные комбинации из одного или двух рядов.

Перед вражеской атакой внизу экрана появится предупреждение, и шкала слева от матрицы заполнится блоками. Каждый блок представляет один ряд мусорных блоков. Так вы можете понять, сколько рядов ожидать в ближайшее время. Не переживайте, если вам покажется, что блоков слишком много. С каждым убранным вами рядом на шкале будет становиться на один ряд меньше.

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

Так а что там со значками?

Точно… Эти сверкающие трофеи помогут вам добиться победы. За каждого нокаутированного соперника вы получаете значок. Соберите достаточно значков, и ваши атакующие способности возрастут — с каждой атакой вы сможете отправлять еще больше мусорных блоков!

В начале игры ваш уровень составит 0%, и вы сможете повысить его до 25%, 50%, 75% или 100%. С каждым уровнем будет возрастать количество бонусных линий. Добравшись до уровня в 100%, вы сможете отправлять в два раза больше мусорных блоков! Дорасти до этого уровня будет непросто, но упорство и труд все перетрут!

Не забывайте постоянно убирать ряды, готовьте крупномасштабные атаки и регулярно меняйте тактику — вот несколько простых правил, которые позволят вам добраться до первого места. Конечно же, пригодятся и традиционные техники тетриса. Например, в трудной ситуации поможет Т-спин. Но с этим вы справитесь и без наших подсказок!

TETRIS® 99 — эксклюзивное предложение для членов платного сервиса Nintendo Switch Online. Загрузить игру можно на нашем веб-сайте, подробнее о Nintendo Switch Online можно узнать здесь.

Источник: https://www.nintendo.ru/-/2019/-/-TETRIS-99--1526705.html

Очень просто
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: