using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace Sokoban {

    class Jatekos {

        private Point _HolVagyok = new Point();
        private string _Iranyok = "";
        private int _Szint = 0;
        private int[] _Palya;

        public Jatekos(Point helyem, int []palya, string iranyok) {
            _HolVagyok.X = helyem.X; _HolVagyok.Y = helyem.Y;
            _Palya = palya; _Iranyok = iranyok; _Palya[_HolVagyok.X] |= (1 << _HolVagyok.Y);
        }

        public int Szint {
            get { return _Szint; }
            set { _Szint = value; }
        }

        public int[] Palya {
            get { return _Palya; }
            set { _Palya = value; }
        }

        public Point HolVagyok {
            get { return _HolVagyok; }
            set { _HolVagyok = value; }
        }

        public string Iranyok {
            get { return _Iranyok; }
            set { _Iranyok = value; }
        }

        public void Fel() {
            _Palya[_HolVagyok.X - 1] |= (1 << _HolVagyok.Y);
            _HolVagyok.X -= 1; ++_Szint; _Iranyok += "8,";
        }

        public void Le() {
            _Palya[_HolVagyok.X + 1] |= (1 << _HolVagyok.Y);
            _HolVagyok.X += 1; ++_Szint; _Iranyok += "2,";
        }

        public void Jobbra() {
            _Palya[_HolVagyok.X] |= (1 << (_HolVagyok.Y + 1));
            _HolVagyok.Y += 1; ++_Szint; _Iranyok += "6,";
        }

        public void Balra() {
            _Palya[_HolVagyok.X] |= (1 << (_HolVagyok.Y - 1));
            _HolVagyok.Y -= 1; ++_Szint; _Iranyok += "4,";
        }

        public bool CeleE(Point p) {
            return (p.X == _HolVagyok.X && p.Y == _HolVagyok.Y);
        }

        public bool LehetE(int iranyX, int iranyY) {
            if (_HolVagyok.X + iranyX > 31 || _HolVagyok.Y + iranyY > 31
                || _HolVagyok.X + iranyX < 0 || _HolVagyok.Y + iranyY < 0) return false;

            return (_Palya[_HolVagyok.X + iranyX] & (1 << (_HolVagyok.Y + iranyY))) == 0;
        }

    }
}
