Перейти к содержимому

GGr

Присоединился: 29 июл 2009
Оффлайн Последний вход: янв 28 2013 22:51
-----

Мои сообщения

В теме:Утеряно/найдено в ТТУ

07 ноября 2012 - 00:43

3 общага, вход в С корпус, найдена флешка с бодрым содержимым. Принимаю приметы в ЛС.

В теме:Võrgurakendused I / Programmeerimise põhikursus

18 ноября 2011 - 18:48

Жэнщины и дэти, тысяча извинений Ж))
Много кода, написанного на коленке, аттачед.

В теме:Võrgurakendused I / Programmeerimise põhikursus

19 октября 2011 - 21:17

сейчас выложу :)

В теме:Võrgurakendused I / Programmeerimise põhikursus

14 сентября 2011 - 18:43

Ахтунг! Диверсия:))

Файл Main.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Main {
    private static final int[] BEST_MOVES = {5, 1, 3, 7, 9};
    private static final String[] WIN_OR_PREVENT_PATTERNS = {"-1.-1|.-1-1|-1-1.", "1.1|.11|11."};
    private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    private static PrintWriter writer = new PrintWriter(System.out, true);
    private static Board board = new Board();

    public static void main(String[] args) {
        try {
            while (!board.isGameFinished()) {
                writer.println("please make your turn!(Number from 1-9)");
                int input = readMove(reader.readLine());

                if (input < 1 || input > 9 || !board.makeTurn(1, input)) {
                    continue;
                }

                while (!board.isGameFinished() && !board.makeTurn(-1, calculateComputerMove())) ;
                writer.println(board);
            }
            if (board.hasWinner()) {
                writer.println("Congratulations to player " + board.getWinner());
            } else {
                writer.println("Draw game!");
            }
        } catch (IOException e) {
            writer.println("unable to read input");
        } finally {
            try {
                writer.close();
                reader.close();
            } catch (IOException ignore) {
            }
        }
    }

    private static int calculateComputerMove() {
        int move = winOrPreventPlayerWin();
        if (move != 0) {
            return move;
        }
        for (int bestMove : BEST_MOVES) {
            int token = board.getToken(bestMove);
            if (token == 0)
                return bestMove;
        }
        int result = (int) (Math.random() * 10);
        return result > 0 ? result : 1;
    }

    private static int winOrPreventPlayerWin() {
        for (int[] row : board.winningRows) {
            String situation = board.getSituation(row);
            for (String pattern : WIN_OR_PREVENT_PATTERNS) {
                if (situation.matches(pattern)) {
                    for (int index : row) {
                        if (board.getToken(index) == 0) {
                            return index;
                        }
                    }
                }
            }
        }
        return 0;
    }

    private static int readMove(String userInput) {
        try {
            return Integer.parseInt(userInput);
        } catch (NumberFormatException e) {
            return 0;
        }
    }
}

Файл Board.java
import java.util.HashMap;
import java.util.Map;

public class Board {

    public static final String WINNER_X = "111";
    public static final String WINNER_O = "-1-1-1";
    public static final Map<Integer, String> PLAYER_TOKEN = new HashMap<Integer, String>()
    { { put(1, "X"); put(-1, "O"); put(0, " "); } };
    public int[][] winningRows = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {1, 4, 7}, {2, 5, 8}, {3, 6, 9}, {1, 5, 9}, {3, 5, 7}};
    private final int[] board = new int[9];

    public boolean makeTurn(int player, int cell) {
        int s = getToken(cell);
        if (s != 0) {
            return false;
        }

        board[--cell] = player;
        return true;
    }

    public int getToken(int cell) {
        return board[--cell];
    }

    public boolean isGameFinished() {
        return hasWinner() || isNoMoreSpace();
    }

    public String getWinner() {
        for (int[] winningRow : winningRows) {
            String combination = getSituation(winningRow);
            if (WINNER_O.equals(combination)) {
                return "O";
            }
            if (WINNER_X.equals(combination)) {
                return "X";
            }
        }
        return "";
    }

    public String getSituation(int[] winningRow) {
        String situation = "";
        for (int i : winningRow) {
            situation += getToken(i);
        }
        return situation;
    }

    public boolean hasWinner() {
        return !getWinner().isEmpty();
    }

    private boolean isNoMoreSpace() {
        boolean result = true;
        for (int s : board) {
            result = result && s != 0;
        }
        return result;
    }

    @Override
    public String toString() {
        String result = "|";
        for (int i = 1; i <= board.length; i++) {
            int token = getToken(i);
            result += PLAYER_TOKEN.get(token) + "|";
            if (i % 3 == 0) {
                result += "\n" + (i != 9 ? "|" : "");
            }
        }
        return result;
    }
}

В теме:Võrgurakendused I / Programmeerimise põhikursus

26 ноября 2010 - 18:45

Aljushka,
увеличиваешь размер окна - увеличиваются компоненты. Ну и в методе paint(Graphics g) или paintComponent(Graphics g) должна быть вся логика каляки-маляки, ну и repaint() можно иногда вызывать)
JakeTheFIsh,
FiveLogic , оппонент же вроде класс файлом дан)) если что можно декомпильнуть :boobs: и посмотреть как его обыграть :moderator: