package campomat;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class CampoMat {

    private static int POR_SER = 4567;
    private static int MAX_BUF = 100;

    private static int MAX_LIN = 10;
    private static int MAX_COL = 10;
    private static int MAX_BOM = 10;

    public static void main(String[] args) {

        try {

            DatagramSocket socket = new DatagramSocket(POR_SER);
            byte data[] = new byte[MAX_BUF];
            DatagramPacket pack = new DatagramPacket(data, MAX_BUF);

            char matriz[][] = new char[MAX_LIN][MAX_COL];
            int posHeroX, posHeroY;

            // clean mat
            for (int i = 0; i < MAX_LIN; i++) {
                for (int j = 0; j < MAX_COL; j++) {
                    matriz[i][j] = '.';
                }
            }
            // set bomb
            for (int i = 0; i < MAX_BOM; i++) {
                matriz[(int) (Math.random() * MAX_LIN)][(int) (Math.random() * MAX_COL)] = '*';
            }
            // set portal
            matriz[(int) (Math.random() * MAX_LIN)][(int) (Math.random() * MAX_COL)] = '#';
            // set Hero        
            posHeroX = (int) (Math.random() * MAX_COL);
            posHeroY = (int) (Math.random() * MAX_LIN);

            while (matriz[posHeroX][posHeroY] != '#') {
                // show mat
                
                for (int i = 0; i < MAX_LIN; i++) {
                    System.out.println();
                    for (int j = 0; j < MAX_COL; j++) {
                        if (i == posHeroY && j == posHeroX) {
                            System.out.print("H");
                        } else {
                            System.out.print(matriz[i][j]);
                        }
                    }
                }
                System.out.println("\n---------------------------------");
                
                socket.receive(pack);
                String cmd = new String(pack.getData(), 0, pack.getLength());
                
                if (cmd.equals("cima")) {
                    if (posHeroY > 0) {
                        posHeroY--;
                    }
                }
                if (cmd.equals("baixo")) {
                    if (posHeroY < MAX_LIN - 1) {
                        posHeroY++;
                    }
                }
                if (cmd.equals("esquerda")) {
                    if (posHeroX > 0) {
                        posHeroX--;
                    }
                }
                if (cmd.equals("direita")) {
                    if (posHeroX < MAX_COL - 1) {
                        posHeroX++;
                    }
                }

                if (matriz[posHeroX][posHeroY] == '*') {
                    System.out.println("BOOOOMMMMM");
                    break;
                }
                
                if (matriz[posHeroX][posHeroY] == '#') {
                    System.out.println("Voce ganhou!!!");
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
