Как выиграть в крестики-нолики

Термины и определения

Осторожно, множество похожих определений и их количество может вас оттолкнуть, но без этого базиса вы не сможете понять о чём пойдёт речь далее

  • Обычные крестики-нолики будем называть Оперативными крестиками-ноликами.
  • Игру Ultimate Tic-Tac-Toe будем называть Тактическими крестиками-ноликами.
  • Клетка — место на игровом поле в которое игроки могут поставить крестик или нолик, также называемая Оперативная клетка.
  • Оперативное поле — игровое поле Оперативных крестиков-ноликов, также называемая Тактическая клетка — 3×3 решётка из Клеток.
  • Тактическое поле — игровое поле Тактических крестиков-ноликов, также называемая Стратегическая клетка — 9х9 решётка из Клеток, 3х3 решётка из Тактических клеток.
  • Стратегическое поле — игровое поле Стратегических крестиков-ноликов — 27х27 решётка из Клеток, 9х9 решётка из Тактических клеток, 3х3 решётка из Стратегических клеток.
  • Оперативный уровень — игра в Оперативные крестики-нолики — правила ходов, условия выигрыша и ограничения.
  • Тактический уровень — игра в Тактические крестики-нолики — правила взаимодействия между Клетками и Тактическими клетками, условия выигрыша и ограничения.
  • Стратегический уровень — игра в Стратегические крестики-нолики представленная с помощью понятий Тактического уровня — правила взаимодействия между Тактическими клетками и Стратегическими клетками, условия выигрыша и ограничения.
  • Клетка текущего хода — Клетка в которую текущий игрок ставит, в зависимости от того за какую сторону он играет, крестик или нолик.

На этот момент все необходимы нам определения заданы и мы можем приступить к обсуждению самой игры.

Схема ходов для нолика

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

Первый шаг нолика (в случае, если оппонент не поставил свою фигуру в центр) — поставить нолик в ячейку номер 5. Дальнейшая тактика будет похожа на ту, которая была предписана крестикам. Если же ячейка номер 5 будет занята крестиком, нужно выбрать диагональные ячейки с номерами 1, 3, 7, 9.

Следующие удары оппонентов должны идти параллельно и не допустить построения ряда из трех фигур.

Узнать, как постоянно выигрывать, можно с помощью изучения схемы.

Если крестик сделал свой первый ход не через центральную, а через угловую клеточку, то у противника появляется два варианта развития стратегии игры.

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

Как сделать так, чтобы крестик все время выигрывал? Нужно придерживаться следующей тактики:

  • занять центр;
  • заставить ноликов начать защиту;
  • построить «вилку» из крестиков.

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

Методы

Кроме main() класс может содержать и другие методы. Рассмотрим в качестве примера класс с методом add(), который вычисляет и возвращает сумму двух значений, переданных как параметры

Обратите внимание на тип int, который стоит перед именем метода — это тип возвращаемого значения. Две переменные в скобках — параметры

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

class MethodStatic {
    public static void main(String args) {
        int c = add(5, 6);
        System.out.println("5 + 6 = " + c);
    }
 
    static int add(int a, int b) {
        return a + b;
    }
}

Слово static означает, что метод статический. Если мы обращается к какому-либо методу из статического метода, то вызываемый тоже должен быть статическим. Вот почему add() статический — он вызывается из статического main(). Использование статических методов — скорее исключение, чем правило, поэтому давайте посмотрим как сделать add() нестатическим.

Решение одно — создать объект на основании класса. И затем вызывать метод через точку после имени объекта. В этом случае метод может быть нестатическим. Представленный ниже код это иллюстрирует.

class MethodNotStatic {
    public static void main(String args) {
        MethodNotStatic method = new MethodNotStatic();
        int c = method.add(5, 6);
        System.out.println("5 + 6 = " + c);
    }
 
    int add(int a, int b) {
        return a + b;
    }
}

Обобщения

Более длинные линии

Можно рассматривать игру, в которой победителем считается игрок, первым построивший n⩾3{\displaystyle n\geqslant 3} одинаковых знаков на достаточно большом для этого прямоугольном поле. При этом можно ограничить поле каким-нибудь размером (начиная с n×n{\displaystyle n\times n}), либо вовсе не ограничивать (в этом случае говорят о «бесконечном» поле)

Игра до 4 одинаковых знаков на бесконечном поле неинтересна, ибо начинающий довольно быстро строит «вилку» и выигрывает.
Игра при n⩾6{\displaystyle n\geqslant 6} также неинтересна из-за «ничейной смерти». Существуют стратегии, не дающие противнику построить нужную линию никогда.
Однако при n=5{\displaystyle n=5} игра становится намного содержательнее. Такой вариант имеет специальное название — гомоку. Изначально в гомоку играли на доске размером 19×19, позже она была уменьшена до размера в 15×15 клеток.

Основной победной тактикой при игре на бесконечном поле считается построение пересечений («вилок»), которые не дают противнику возможности блокировать все возможные пути построения пятёрки. Чтобы не проиграть, необходимо своевременно прерывать линии противника длиной в три фигуры и больше.

Практика показала, что при равных правилах для игроков тот, кто делает первый ход, имеет преимущество, позволяющее при достаточно квалифицированной игре одержать победу, что впоследствии было доказано строго. Для сохранения интереса к игре предлагались различные варианты модификации правил игры.
Так, с введением (запрещенных ходов) для игрока, начинающего первым — ему запрещено строить вилки 3×3, 4×4, а также выстраивать «длинный ряд» из своих фигур — получилась новая игра под названием рэндзю, с большим разнообразием стратегий игры и равными шансами игроков.

Модификация поля

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

Другим вариантом является изменение топологии поля. Например, можно считать противоположные стороны поля склеенными, образуя при этом либо поверхность цилиндра или тора, либо проективную плоскость. Также можно увеличивать размерность, например, играть в кубе 4x4x4, в гиперкубе и так далее.

Обмен значков

Можно отменить правило, указывающее игрокам ставить только свой вид значков.

Например, вариантом игры может быть: игроки ставят крестик или нолик (что захотят); первый выигрывает, если построит линию нужной длины из одинаковых значков, второй — если до заполнения поля этого не произойдёт.

Другой вариант: «свой» значок меняется с каждым ходом.

Изменение условия выигрыша

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

Удлинение хода

Ещё один вариант модификации игры — выставлять на каждом ходе не один свой знак, а два или более. Такова игра Connect6, в которой чёрные делают первый ход, выставляя один знак, после чего игроки поочерёдно выставляют по два знака, побеждает первый, построивший линию из 6 или более своих знаков.

Реализация вспомогательных методов

Пришло время написать код методов, вызываемых в game(). Самый первый, initTable(), обеспечивает начальную инициализацию игровой таблицы, заполняя её ячейки «пустыми» символами. Внешний цикл, со счетчиком int row, выбирает строки, а внутренний, со счётчиком int col, перебирает ячейки в каждой строке.

 
void initTable() {
    for (int row = ; row < 3; row++)
        for (int col = ; col < 3; col++)
            tablerowcol = SIGN_EMPTY;
}

Также потребуется метод, отображающий текущее состояние игровой таблицы printTable().

void printTable() {
    for (int row = ; row < 3; row++) {
        for (int col = ; col < 3; col++)
            System.out.print(tablerowcol + " ");
        System.out.println();
    }
}

В методе turnHuman(), который позволяет пользователю сделать ход, мы используем метод nextInt() объекта scanner, чтобы прочитать два целых числа (координаты ячейки) с консоли

Обратите внимание как используется цикл do-while: запрос координат повторяется в случае, если пользователь укажет координаты невалидной ячейки (ячейка таблицы занята или не существует). Если с ячейкой всё в порядке, туда заносится символ SIGN_X — «крестик»

void turnHuman() {
    int x, y;
    do {
        System.out.println("Enter X and Y (1..3):");
        x = scanner.nextInt() - 1;
        y = scanner.nextInt() - 1;
    } while (!isCellValid(x, y));
    tableyx = SIGN_X;
}

Валидность ячейки определяет метод isCellValid(). Он возвращает логическое значение: true — если ячейка свободна и существует, false — если ячейка занята или указаны ошибочные координаты.

boolean isCellValid(int x, int y) {
    if (x <  || y <  || x >= 3|| y >= 3)
        return false;
    return tableyx == SIGN_EMPTY;
}

Метод turnAI() похож на метод turnHuman() использованием цикла do-while. Только координат ячейки не считываются с консоли, а генерируются случайно, при помощи метода nextInt(3) объекта random. Число 3, передающееся как параметр, является ограничителем. Таким образом, генерируются случайные целые числа от 0 до 2 (в рамках индексов массива игровой таблицы). И метод isCellValid() снова позволяет нам выбрать только свободные ячейки для занесения в них знака SIGN_O — «нолика».

void turnAI() {
    int x, y;
    do {
        x = random.nextInt(3);
        y = random.nextInt(3);
    } while (!isCellValid(x, y));
    tableyx = SIGN_O;
}

Осталось дописать два последних метода — проверка победы и проверка на ничью. Метод checkWin() проверяет игровую таблицу на «победную тройку» — три одинаковых знака подряд, по вертикали или горизонтали (в цикле), а также по двум диагоналям. Проверяемый знак указан как параметр char dot, за счёт чего метод универсален — можно проверять победу и по «крестикам» и по «ноликам». В случае победы возвращается булевское значение true, в противном случае — false.

boolean checkWin(char dot) {
    for (int i = ; i < 3; i++)
        if ((tablei == dot && tablei1 == dot &&
                         tablei2 == dot) ||
                (tablei == dot && table1i == dot &&
                                  table2i == dot))
            return true;
        if ((table == dot && table11 == dot &&
                  table22 == dot) ||
                    (table2 == dot && table11 == dot &&
                      table2 == dot))
            return true;
    return false;
}

Метод isTableFull() во вложенном двойном цикле проходит по всем ячейкам игровой таблицы и, если они все заняты, возвращает true. Если хотя бы одна ячейка ещё свободна, возвращается false.

boolean isTableFull() {
    for (int row = ; row < 3; row++)
        for (int col = ; col < 3; col++)
            if (tablerowcol == SIGN_EMPTY)
                return false;
    return true;
}

Теперь осталось собрать все эти методы внутри TicTacToe. Последовательность их расположения в теле класса не важна. А после этого можно попробовать сыграть с компьютером в крестики-нолики.

Крестики-нолики. Шаблон класса

Приступим к написанию кода игры. Начнём с шаблона класса и определения нужных полей. Именно это содержит приведённый ниже код. Первые две строки — импорт классов. Первыми в теле класса идут описания полей, затем методов. Метод main() используется для создания объекта (так как поля и методы нестатические) и вызова метода game() с игровой логикой.

import java.util.Random;
import java.util.Scanner;
 
class TicTacToe {
    final char SIGN_X = 'x';
    final char SIGN_O = 'o';
    final char SIGN_EMPTY = '.';
    char table;
    Random random;
    Scanner scanner;
 
    public static void main(String args) {
        new TicTacToe().game();
    }
 
    TicTacToe() {
        // конструктор: инициализация полей
    }
 
    void game() {
        // игровая логика
    }
 
    // дополнительные методы
}

В качестве полей используем три символьные константы: SIGN_X, SIGN_Oи SIGN_EMPTY. Их значения нельзя изменять, об этом говорит модификатор final. Двумерный символьный массив table будет нашим игровым полем. Потребуется также объект random для генерации ходов компьютера и scanner для ввода данных от пользователя.

Имена методов принято писать с маленькой буквы. Однако в коде мы видим метод TicTacToe() — есть ли тут нарушение? Нет, поскольку этот метод особенный и в объектно-ориентированном программировании называется конструктор. Конструктор вызывается сразу после того, как объект создан. Его имя, как видим, должно совпадать с именем класса. Мы используем конструктор для инициализации полей.

TicTacToe() {
    random = new Random();
    scanner = new Scanner(System.in);
    table = new char33;
}

Обобщения

Более длинные линии

Можно рассматривать игру, в которой победителем считается игрок, первым построивший n⩾3{\displaystyle n\geqslant 3} одинаковых знаков на достаточно большом для этого прямоугольном поле. При этом можно ограничить поле каким-нибудь размером (начиная с n×n{\displaystyle n\times n}), либо вовсе не ограничивать (в этом случае говорят о «бесконечном» поле)

Игра до 4 одинаковых знаков на бесконечном поле неинтересна, ибо начинающий довольно быстро строит «вилку» и выигрывает.
Игра при n⩾6{\displaystyle n\geqslant 6} также неинтересна из-за «ничейной смерти». Существуют стратегии, не дающие противнику построить нужную линию никогда.
Однако при n=5{\displaystyle n=5} игра становится намного содержательнее. Такой вариант имеет специальное название — гомоку. Изначально в гомоку играли на доске размером 19×19, позже она была уменьшена до размера в 15×15 клеток.

Основной победной тактикой при игре на бесконечном поле считается построение пересечений («вилок»), которые не дают противнику возможности блокировать все возможные пути построения пятёрки. Чтобы не проиграть, необходимо своевременно прерывать линии противника длиной в три фигуры и больше.

Практика показала, что при равных правилах для игроков тот, кто делает первый ход, имеет преимущество, позволяющее при достаточно квалифицированной игре одержать победу, что впоследствии было доказано строго. Для сохранения интереса к игре предлагались различные варианты модификации правил игры.
Так, с введением (запрещенных ходов) для игрока, начинающего первым — ему запрещено строить вилки 3×3, 4×4, а также выстраивать «длинный ряд» из своих фигур — получилась новая игра под названием рэндзю, с большим разнообразием стратегий игры и равными шансами игроков.

Модификация поля

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

Другим вариантом является изменение топологии поля. Например, можно считать противоположные стороны поля склеенными, образуя при этом либо поверхность цилиндра или тора, либо проективную плоскость. Также можно увеличивать размерность, например, играть в кубе 4x4x4, в гиперкубе и так далее.

Возможный алгоритм для игры крестики-нолики в кубе 4x4x4:

  1. Проверяем наличие своих трёх подряд стоящих фигур, если нашли, то ставим четвёртую (игра завершается).
  2. Проверяем наличие трёх подряд стоящих фигур противника, если нашли, то ставим четвёртую свою.
  3. Проверяем наличие своих двух подряд стоящих фигур, если нашли, то ставим третью на любую позицию в этом ряду.
  4. Проверяем наличие двух подряд стоящих фигур противника, если нашли, то ставим третью свою на любую позицию в этом ряду.
  5. Ищем любой ряд, имеющий три пустых клетки и одну содержащую свою фигуру и ставим на любую позицию в этом ряду свою фигуру, причём предпочтение отдаётся наличию ряда в пространстве.

Обмен значков

Можно отменить правило, указывающее игрокам ставить только свой вид значков.

Например, вариантом игры может быть: игроки ставят крестик или нолик (что захотят); первый выигрывает, если построит линию нужной длины из одинаковых значков, второй — если до заполнения поля этого не произойдёт.

Другой вариант: «свой» значок меняется с каждым ходом.

Изменение условия выигрыша

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

Удлинение хода

Ещё один вариант модификации игры — выставлять на каждом ходе не один свой знак, а два или более. Такова игра Connect6, в которой чёрные делают первый ход, выставляя один знак, после чего игроки поочерёдно выставляют по два знака, побеждает первый, построивший линию из 6 или более своих знаков.

Массивы

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

В Java массивы являются объектами, их создают с помощью директивы new. При создании указываем количество элементов массива или инициализируем его набором значений. Приведенный код иллюстрирует оба варианта:

class Arrays {
    public static void main(String args) {
        int arr = new int5;
        int arrInit = {1, 2, 3, 4, 5};
        for (int i = ; i < arr.length; i++) {
            arri = i * 2 + arrIniti;
        }
        for (int a  arr) {
            System.out.println(a);
        }
    }
}

С элементами массива можно работать как с обычными переменными, присваивая им результат выражения и читая хранимые значения. При этом в квадратных скобках указывается индекс элемента массива. Индексация в Java идёт с 0 (с нуля). Первый цикл инициализирует элементы массива arr при помощи значений из массива arrInit. Каждый массив имеет поле length, содержащее количество его элементов. Второй цикл выводит элементы массива в консоль, используя второй вариант for— без счётчика цикла.

Как играть в крестики-нолики 10 на 10 клеточек?

Игровые поля 10×10 и 15×15 представляют собой доски, которые называются гомоку. Это увлекательная спортивная игра, которая популярна во всем мире. Основным моментом соревнования является составление ряда из пяти одинаковых фигур. Для расчета ходов существует множество алгоритмов и проведены даже компьютерные расчеты.

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

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

Как выигрывать в крестики нолики

Основные понятия, которые нужно знать:

Поле – условное поле 3×3 клетки, где и происходит битва.

Крестики – вот такие значки «х», они ходят первые.

Нолики – вот такие значки «0», они ходят вторые.

Победа – когда игрок собирает подряд 3 крестика или 3 нолика.

Вот пример поля.

Для того, чтобы вы могли правильно анализировать давайте пронумеруем каждую клетку.

Вот хотя бы так, чтобы вы понимали, где какое поле.

Стратегия выигрыша в 3×3

Запомните, что если вы играете за нолики, то есть вам нужно делать вторым ход, то против сильного противника вы сделаете лишь ничью. Ноликами сложно выиграть, так как они ходят вторыми и, практически, всегда обороняются от угроз, которые создают крестики (они первые ходят).

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

Начнемс…

Самая лучшая стратегия. Крестики делают ход на 5 клетку, которая находится в середине.

Дальше, ЗАПОМНИТЕ, что если нолики делают свой второй ход не на ДИАГОНАЛЬНУЮ КЛЕТКУ, то они проигрывают

Не важно, на какую клетку, они делают ход: 2, 4, 6, 8, если они поставили нолик на любое из этих полей, то они форсировано проигрывают.

Для примера, вы поставили на 5, они поставили на 2, теперь вы ставите на 1 или 3, угрожая сделать 3 крестика по диагонали. Ну, ок, вы поставили на 1, получается, что если вы поставите на поле 9 крестик, то вы выиграете. Вы вынуждаете поставить нолик на поле 9, но теперь вы изысканно побеждаете, ставя крестик на поле 7.

Получается, что вы угрожаете поставить три крестика по диагонали ходом 3 и по вертикали ходом – 4. Красота, не правда ли?

Лучшая защита за нолики – это, после ходя 5 за крестики, делать ходы: 1, 3, 7, 9, в таком случае, вы, при внимательности, всегда будете делать ничью. Запомните это простое правило и вы никогда не проиграете.

Хитрая стратегия за крестики

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

Лучшей защитой здесь будет занятие ноликами поле – 5, раз оно освободилось, то его нужно занять. В таком случае, всегда нолики будут делать ничью, тем, что будут угрожать постоянно самим поставить три в ряд.

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

Давайте разберем эти варианты:

А) Крестики – 1, нолики – 4, крестики – 5, нолики – 9 (вынуждено), крестики – 3 с выигрышем на поля 2 или 7 в зависимости от ответа ноликов.

В) Крестики – 1, нолики – 9, крестики – 3, нолики – 2 (вынуждено), крестики – 7 с выигрышем на поля 4 или 5 в зависимости от ответа ноликов.

Ну, вот и все, друзья, надеюсь, что теперь вы знаете, как выиграть в крестики нолики 3х3. В ней (игре) нет ничего сложного, при правильной защите, здесь всегда будет ничья, но, как видите, за крестики есть интересные варианты, в которые можно словить нолики.

Я желаю вам побед, если я что-то забыл написать, то напомните мне, можно даже в комментарии.

Всем удачи, пока!

История появления

Существует много теорий о происхождении этой игры. Однако те или иные версии имеют в себе некоторые недочёты. Но есть несколько наиболее вероятных.
Например, впервые эта игра могла появиться в Индии около двух тысяч лет назад, однако ее изобретатель, переделав доску размером 3 на 3 на доску с размером 8 на 8 придумал шахматы.
Следующий, кто был близок к открытию этого увлечения — римский изобретатель, не сумевший доделать ее, так как Рим был захвачен варварами.
О дальнейшей судьбе крестиков-ноликов ничего точно не известно, но существует гипотеза, что её изобрёл французский математик, причем совершенно случайно, пока решал трёхуровневую систему уравнений. Было время, когда эта забава была популярна настолько, что было несколько тематических кафе с этой игрой. Причём такие заведения имели достаточно высокий спрос. Были случаи, когда заигравшись в крестики-нолики, люди пропускали очень важные мероприятия, вплоть до казней, после чего церковь запретила это ребячество. Но это не сильно повлияло на количество играющих, просто все начали играть тайно.
Ещё одна теория говорит о том, что на картине итальянского художника, был изображён Папа римский, тайком игравший в крестики-нолики сам с собой. Со временем Казимир Малевич сделал копию этой картины. В эпоху Возрождения игру снова признали законной.
Существует также теория, что группа исследователей нашли нечто похожее на квадрат с девятью сегментами и, вписанными в них кружками и крестиками. Такие находки были зафиксированы на древних петроглифах, фресках. Но возможно это совпадение или, скорее всего шутка.

Крестики-нолики в современном мире

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

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс.

Другие статьи из серии «Быстрый старт с Java»:

  • «Быстрый старт с Java: начало»
  • «Быстрый старт с Java: «лопни шарик»

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

  • Приключения бравого джависта в поисках пропитания. Как начать карьеру программиста Java, если в твоём городе пять вакансий и везде требуют опыт от года
  • «Иногда за сутки я спал один час в метро перед работой». Из белорусской типографии — в московские тимлиды.
  • Первая работа в IT с переездом в Москву: как это бывает. Опыт собеседований, тестовых заданий, учебных проектов и трудоустройства в международную компанию.
  • Взгляд изнутри: как работается в «Альфа-Банке». Рассказывает Михаил Степнов, выпускник GeekUniversity и программист банка.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector