Exemple #1
0
        public Boolean movePlayer(Character.Movement Move)
        {
            if (map.getHero().returnMove(Move) == Character.Movement.noMovement)
            {
                return(false);
            }
            else
            {
                int xPos = map.getHero().getX();
                int yPos = map.getHero().getY();
                if (Move == Character.Movement.Up)
                {
                    if (map.getMap()[yPos - 1, xPos] is Gold)
                    {
                        map.getHero().PickUp((Gold)map.getMap()[yPos - 1, xPos]);
                        map.getMap()[yPos - 1, xPos] = new EmptyTile(yPos - 1, xPos);

                        map.pub_UpdateVision();
                    }
                }
                else if (Move == Character.Movement.Down)
                {
                    if (map.getMap()[yPos + 1, xPos] is Gold)
                    {
                        map.getHero().PickUp((Gold)map.getMap()[yPos + 1, xPos]);
                        map.getMap()[yPos + 1, xPos] = new EmptyTile(yPos + 1, xPos);

                        map.pub_UpdateVision();
                    }
                }
                else if (Move == Character.Movement.Left)
                {
                    if (map.getMap()[yPos, xPos - 1] is Gold)
                    {
                        map.getHero().PickUp((Gold)map.getMap()[yPos, xPos - 1]);
                        map.getMap()[yPos, xPos - 1] = new EmptyTile(yPos, xPos - 1);

                        map.pub_UpdateVision();
                    }
                }
                else if (Move == Character.Movement.Right)
                {
                    if (map.getMap()[yPos, xPos + 1] is Gold)
                    {
                        map.getHero().PickUp((Gold)map.getMap()[yPos, xPos + 1]);
                        map.getMap()[yPos, xPos + 1] = new EmptyTile(yPos, xPos + 1);

                        map.pub_UpdateVision();
                    }
                }
                map.updateCharaterPosition(map.getHero(), Move);
                moveEnemies();
                enemyAttacks();
                return(true);
            }
        }
Exemple #2
0
        private void moveEnemies()
        {
            Enemy[] enemies = map.getEnemies();

            for (int i = 0; i < enemies.Length; ++i)
            {
                Character.Movement direction = enemies[i].returnMove(Character.Movement.None);  //None is just a placeholder
                map.updateCharaterPosition(enemies[i], direction);
            }
        }
Exemple #3
0
        private void moveEnemies()
        {
            Enemy[] enemies = map.getEnemies();

            for (int i = 0; i < enemies.Length; ++i)
            {
                Character.Movement move = enemies[i].returnMove(Character.Movement.noMovement);
                map.updateCharaterPosition(enemies[i], move);
            }
        }
Exemple #4
0
        public bool MovePlayer(Character.Movement direction)
        {
            int x, y, tempx, tempy;

            x = this.localMap.hero.X;
            y = this.localMap.hero.Y;

            Character.Movement selectedMove = direction;
            switch (selectedMove)
            {
            case Movement.NoMovement:
                selectedMove = Movement.NoMovement;
                break;

            case Movement.Up:
                x = 0;
                y = -1;
                break;

            case Movement.Down:
                x = 0;
                y = 1;
                break;

            case Movement.Left:
                x = -1;
                y = 0;
                break;

            case Movement.Right:
                x = 1;
                y = 0;
                break;

            default:
                selectedMove = Movement.NoMovement;
                break;
            }

            // Check for valid move

            if (localMap.MapGrab[localMap.hero.X + x, localMap.hero.Y + y] is EmptyTile || localMap.GetItemAtPosition(localMap.hero.X + x, localMap.hero.Y + y) is Gold)
            {
                // Valid

                localMap.hero.Move(selectedMove);
                localMap.UpdateMap();
                localMap.MapGrab[localMap.hero.X - x, localMap.hero.Y - y] = new EmptyTile(localMap.hero.X - x, localMap.hero.Y - y);
                return(true);
            }
            else
            {
                return(false);
            }
        }
 public Boolean movePlayer(Character.Movement dir)
 {
     if (map.getHero().returnMove(dir) != Character.Movement.None)
     {
         map.updateCharaterPosition(map.getHero(), dir);
         moveEnemies();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #6
0
        public String HeroAttacks(Character.Movement Move)
        {
            Hero h      = map.getHero();
            Tile Target = new EmptyTile(0, 0);

            switch (Move)
            {
            case Character.Movement.Up:
                Target = map.getMap()[h.getY() - 1, h.getX()];
                break;

            case Character.Movement.Down:
                Target = map.getMap()[h.getY() + 1, h.getX()];
                break;

            case Character.Movement.Left:
                Target = map.getMap()[h.getY(), h.getX() - 1];
                break;

            case Character.Movement.Right:
                Target = map.getMap()[h.getY(), h.getX() + 1];
                break;
            }

            if (Target is Enemy)
            {
                h.Attack((Character)Target);
                Character c_Target = (Character)Target;

                if (c_Target.IsDead())
                {
                    map.removeTile(c_Target);
                }

                moveEnemies();

                if (!c_Target.IsDead())
                {
                    return("1" + c_Target.ToString());
                }
                else
                {
                    return("The enemy is dead");
                }
            }
            else
            {
                return("0");
            }
        }
        public String attackEnemy(Character.Movement dir)
        {
            Hero h      = map.getHero();
            Tile target = new EmptyTile(0, 0); // Set as an empty tile for placeholding

            switch (dir)
            {
            case Character.Movement.Up:
                target = map.getMap()[h.getY() - 1, h.getX()];
                break;

            case Character.Movement.Down:
                target = map.getMap()[h.getY() + 1, h.getX()];
                break;

            case Character.Movement.Left:
                target = map.getMap()[h.getY(), h.getX() - 1];
                break;

            case Character.Movement.Right:
                target = map.getMap()[h.getY(), h.getX() + 1];
                break;
            }

            if (target is Enemy)
            {
                h.attack((Character)target);
                Character c_target = (Character)target;

                if (c_target.isDead())
                {
                    map.removeFromMap(c_target);
                }

                moveEnemies();

                if (!c_target.isDead())
                {
                    return("1" + c_target.ToString());     //Returning 1 infront of string indicates success
                }
                else
                {
                    return("1The enemy is dead");
                }
            }
            else
            {
                return("0");                         //Returning 0 infront of string indicates failure
            }
        }
        private void GamePlay_KeyUp(object sender, KeyEventArgs e)
        {
            if (!action_complete && (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right))
            {
                String  response = ge.attackEnemy(ge.GetMap().getHero(), direction, 0, null);
                Boolean success  = false;
                if (response[0] == '1')
                {
                    success = true;
                }
                actionStatus("attack " + dir_text, success, response.Substring(1));

                action_complete = true;
                direction       = Character.Movement.None;
            }
        }
Exemple #9
0
        public void updateCharaterPosition(Tile character, Character.Movement direction)
        {
            Character c = (Character)map[character.getY(), character.getX()];
            EmptyTile emp;

            switch (direction)
            {
            case Character.Movement.Up:
                emp = (EmptyTile)map[character.getY() - 1, character.getX()];
                map[character.getY() - 1, character.getX()] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Up);
                emp.setY(emp.getY() + 1);
                break;

            case Character.Movement.Down:
                emp = (EmptyTile)map[character.getY() + 1, character.getX()];
                map[character.getY() + 1, character.getX()] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Down);
                emp.setY(emp.getY() - 1);
                break;

            case Character.Movement.Left:
                emp = (EmptyTile)map[character.getY(), character.getX() - 1];
                map[character.getY(), character.getX() - 1] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Left);
                emp.setX(emp.getX() + 1);
                break;

            case Character.Movement.Right:
                emp = (EmptyTile)map[character.getY(), character.getX() + 1];
                map[character.getY(), character.getX() + 1] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Right);
                emp.setX(emp.getX() - 1);
                break;
            }

            this.updateVision();
        }
Exemple #10
0
        public override Movement returnMove(Character.Movement direction)
        {
            int[]   possible_moves = { 0, 1, 2, 3 };
            Boolean move_found     = false;

            Character.Movement dir = Character.Movement.None;


            while (!move_found)
            {
                dir = (Character.Movement)possible_moves[rnd.Next(0, possible_moves.Length)];

                if (this.vision[(int)dir] is EmptyTile)
                {
                    move_found = true;
                }
                else if (possible_moves.Length != 1)
                {
                    int[] new_possible_moves = new int[possible_moves.Length - 1];
                    int   index = 0;

                    for (int i = 0; i < possible_moves.Length; ++i)
                    {
                        if (possible_moves[i] != (int)dir)
                        {
                            new_possible_moves[index] = possible_moves[i];
                            ++index;
                        }
                    }

                    possible_moves = new_possible_moves;
                }
                else
                {
                    dir        = Character.Movement.None;
                    move_found = true;
                }
            }


            return(dir);
        }
Exemple #11
0
        public bool MovePlayer(Character.Movement direction)
        {
            bool move = true;

            /*bool looted = false;
             * if (direction == Character.Movement.Nothing)
             * {
             *  looted = false;
             * }
             * else
             * {
             *  looted = true;
             * }
             *
             * if (looted == true)
             * {
             *
             * }*/
            return(move);
        }
        public bool MovePlayer(Character.Movement direction)
        {
            bool move = false;

            bool looted = false;

            if (direction == Character.Movement.Nothing)
            {
                looted = false;
            }
            else
            {
                looted = true;
            }

            if (looted == true)
            {
            }
            return(move);
        }
        public bool moveplayer(Character.Movement direction)
        {
            if (Mooving.Moove == Character.Movement.Up)
            {
                return(true);
            }

            if (Mooving.Moove == Character.Movement.Down)
            {
                return(true);
            }
            if (Mooving.Moove == Character.Movement.Left)
            {
                return(true);
            }
            if (Mooving.Moove == Character.Movement.Right)
            {
                return(true);
            }
            return(false);
        }
Exemple #14
0
 public Boolean movePlayer(Character.Movement dir)
 {
     if (!map.getHero().isDead())
     {
         if (map.getHero().returnMove(dir) != Character.Movement.None)
         {
             map.updateCharaterPosition(map.getHero(), dir);
             moveEnemies();
             damage_taken = enemyAttacks();                           //Enemies now attack after the player attacks
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
Exemple #15
0
        public override Movement returnMove(Character.Movement move)
        {
            int[]   possibleMoves = { 0, 1, 2, 3 };
            Boolean moveFound     = false;

            Character.Movement Direction = Character.Movement.noMovement;


            while (!moveFound)
            {
                Direction = (Character.Movement)possibleMoves[rndNum.Next(0, possibleMoves.Length)];

                if (this.characterVision[(int)Direction] is EmptyTile)
                {
                    moveFound = true;
                }
                else if (possibleMoves.Length != 1)
                {
                    int[] newPossibleMoves = new int[possibleMoves.Length - 1];
                    int   Counter          = 0;

                    for (int i = 0; i < possibleMoves.Length; ++i)
                    {
                        if (possibleMoves[i] != (int)Direction)
                        {
                            newPossibleMoves[Counter] = possibleMoves[i];
                            ++Counter;
                        }
                    }

                    possibleMoves = newPossibleMoves;
                }
                else
                {
                    Direction = Character.Movement.noMovement;
                    moveFound = true;
                }
            }
            return(Direction);
        }
Exemple #16
0
        public String attackEnemy(Character h, Character.Movement dir, Tile t)
        {
            Tile target = new EmptyTile(0, 0); // Set as an empty tile for placeholding

            switch (dir)
            {
            case Character.Movement.Up:
                target = map.getMap()[h.getY() - 1, h.getX()];
                break;

            case Character.Movement.Down:
                target = map.getMap()[h.getY() + 1, h.getX()];
                break;

            case Character.Movement.Left:
                target = map.getMap()[h.getY(), h.getX() - 1];
                break;

            case Character.Movement.Right:
                target = map.getMap()[h.getY(), h.getX() + 1];
                break;

            default: target = t;
                break;
            }

            //Goblins only harm heroes
            //Mages harm the hero, goblins and other mages
            if ((h is Hero && target is Enemy && !h.isDead()) || (h is Goblin && target is Hero) || (h is Mage && target is Character))
            {
                h.attack((Character)target);
                Character c_target = (Character)target;

                if (c_target.isDead())
                {
                    map.removeFromMap(c_target);
                }


                if (h is Hero)
                {
                    //moveEnemies();                        //Enemies no longer move after being attacked
                    damage_taken = enemyAttacks();                         //Enemies now attack after the player attacks
                    if (!c_target.isDead())
                    {
                        return("1" + c_target.ToString());   //Returning 1 infront of string indicates success
                    }
                    else
                    {
                        return("1The enemy is dead");
                    }
                }
                else if (c_target is Hero)
                {
                    return("hero" + h.getDamage());
                }
                else if (!c_target.isDead())
                {
                    return("enemy");
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("0");                         //Returning 0 infront of string indicates failure
            }
        }
Exemple #17
0
        public String attackEnemy(Character h, Character.Movement dir, int range, Tile t)
        {
            Tile target = new EmptyTile(0, 0); // Set as an empty tile for placeholding

            if (h is Hero && h.getWeapon() != null)
            {
                if ((range + 1) > h.getWeapon().getRange())
                {
                    return("0");
                }
            }
            else if (h is Hero && h.getWeapon() == null)
            {
                if (range != 0)
                {
                    return("0");
                }
            }

            try
            {
                switch (dir)
                {
                case Character.Movement.Up:
                    target = map.getMap()[h.getY() - 1 - range, h.getX()];
                    break;

                case Character.Movement.Down:
                    target = map.getMap()[h.getY() + 1 + range, h.getX()];
                    break;

                case Character.Movement.Left:
                    target = map.getMap()[h.getY(), h.getX() - 1 - range];
                    break;

                case Character.Movement.Right:
                    target = map.getMap()[h.getY(), h.getX() + 1 + range];
                    break;

                default:
                    target = t;
                    break;
                }
            }
            catch (Exception e)
            {
                return("0");
            }

            //Goblins only harm heroes
            //Mages harm the hero, goblins and other mages
            if ((h is Hero && target is Enemy && !h.isDead()) || (h is Goblin && target is Hero) || (h is Leader && target is Hero) || (h is Mage && target is Character))
            {
                h.attack((Character)target);
                Character c_target = (Character)target;
                string    loot     = "";

                if (c_target.isDead())
                {
                    loot = h.loot(c_target, h is Mage);
                    map.removeFromMap(c_target);
                }


                if (h is Hero)
                {
                    //moveEnemies();                        //Enemies no longer move after being attacked
                    damage_taken = enemyAttacks();                         //Enemies now attack after the player attacks
                    if (!c_target.isDead())
                    {
                        return("1" + c_target.ToString());   //Returning 1 infront of string indicates success
                    }
                    else
                    {
                        return("1The enemy is dead" + loot);
                    }
                }
                else if (c_target is Hero)
                {
                    return("hero" + h.getDamage());
                }
                else if (!c_target.isDead())
                {
                    return("enemy");
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("0");                         //Returning 0 infront of string indicates failure
            }
        }
Exemple #18
0
        public bool MovePlayer(Character.Movement direction)
        {
            bool move = false;

            return(move);
        }
Exemple #19
0
 public bool MovePlayer(Character.Movement direction)
 {
     return(true);
 }
Exemple #20
0
        public string HeroAttacks(Character h, Character.Movement dir, Tile t)
        {
            Tile target = new EmptyTile(0, 0);

            switch (dir)
            {
            case Character.Movement.Up:
                target = map.getMap()[h.getY() - 1, h.getX()];
                break;

            case Character.Movement.Down:
                target = map.getMap()[h.getY() + 1, h.getX()];
                break;

            case Character.Movement.Left:
                target = map.getMap()[h.getY(), h.getX() - 1];
                break;

            case Character.Movement.Right:
                target = map.getMap()[h.getY(), h.getX() + 1];
                break;

            default:
                target = t;
                break;
            }


            if ((h is Hero && target is Enemy && !h.IsDead()) || (h is Goblin && target is Hero) || (h is Mages && target is Character))
            {
                h.Attack((Character)target);
                Character c_target = (Character)target;

                if (c_target.IsDead())
                {
                    map.removeTile(c_target);
                }


                if (h is Hero)
                {
                    enemyAttacks();
                    if (!c_target.IsDead())
                    {
                        return("1" + c_target.ToString());
                    }
                    else
                    {
                        return("1The enemy is dead");
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("0");
            }
        }
Exemple #21
0
        private void GamePlay_KeyDown(object sender, KeyEventArgs e)
        {
            actionstatusLabel.Text = "";

            if (e.KeyCode == Keys.W)
            {
                actionStatus("move up", ge.movePlayer(Character.Movement.Up), "");
            }
            else if (e.KeyCode == Keys.S)
            {
                actionStatus("move down", ge.movePlayer(Character.Movement.Down), "");
            }
            else if (e.KeyCode == Keys.A)
            {
                if (direction == Character.Movement.None)
                {
                    actionStatus("move left", ge.movePlayer(Character.Movement.Left), "");
                }
                else
                {
                    String  response = ge.attackEnemy(ge.GetMap().getHero(), direction, 1, null);
                    Boolean success  = false;
                    if (response[0] == '1')
                    {
                        success = true;
                    }
                    actionStatus("attack " + dir_text, success, response.Substring(1));

                    action_complete = true;
                    direction       = Character.Movement.None;
                }
            }
            else if (e.KeyCode == Keys.D)
            {
                if (direction == Character.Movement.None)
                {
                    actionStatus("move right", ge.movePlayer(Character.Movement.Right), "");
                }
                else
                {
                    String  response = ge.attackEnemy(ge.GetMap().getHero(), direction, 2, null);
                    Boolean success  = false;
                    if (response[0] == '1')
                    {
                        success = true;
                    }
                    actionStatus("attack " + dir_text, success, response.Substring(1));

                    action_complete = true;
                    direction       = Character.Movement.None;
                }
            }
            else if (e.KeyCode == Keys.Space)
            {
                actionStatus("no move", ge.remainStill(), "");
            }
            else if (e.KeyCode == Keys.Up)
            {
                this.action_complete = false;
                this.dir_text        = "up";
                this.direction       = Character.Movement.Up;

                /*
                 * String response = ge.attackEnemy(ge.GetMap().getHero(), Character.Movement.Up,null);
                 * Boolean success = false;
                 * if (response[0] == '1')
                 * {
                 *  success = true;
                 * }
                 * actionStatus("attack up",success,response.Substring(1));
                 */
            }
            else if (e.KeyCode == Keys.Down)
            {
                this.action_complete = false;
                this.dir_text        = "down";
                this.direction       = Character.Movement.Down;

                /*
                 * String response = ge.attackEnemy(ge.GetMap().getHero(), Character.Movement.Down,null);
                 * Boolean success = false;
                 * if (response[0] == '1')
                 * {
                 *  success = true;
                 * }
                 * actionStatus("attack down", success, response.Substring(1));
                 */
            }
            else if (e.KeyCode == Keys.Left)
            {
                this.action_complete = false;
                this.dir_text        = "left";
                this.direction       = Character.Movement.Left;

                /*
                 * String response = ge.attackEnemy(ge.GetMap().getHero(), Character.Movement.Left,null);
                 * Boolean success = false;
                 * if (response[0] == '1')
                 * {
                 *  success = true;
                 * }
                 * actionStatus("attack left", success, response.Substring(1));
                 */
            }
            else if (e.KeyCode == Keys.Right)
            {
                this.action_complete = false;
                this.dir_text        = "right";
                this.direction       = Character.Movement.Right;

                /*
                 * String response = ge.attackEnemy(ge.GetMap().getHero(),Character.Movement.Right,null);
                 * Boolean success = false;
                 * if (response[0] == '1')
                 * {
                 *  success = true;
                 * }
                 * actionStatus("attack right", success, response.Substring(1));
                 */
            }
            else if (e.KeyCode == Keys.L)
            {
                if (ge.GetMap().getHero().isDead())
                {
                    if (si != null)
                    {
                        si.Dispose();
                    }

                    caller.resetAfterDeath();
                    this.Dispose();
                }
            }
            else if (e.KeyCode == Keys.Escape)       // save and exit
            {
                ge.saveGame();

                caller.Show();
                this.Dispose();
            }
            else if (e.KeyCode == Keys.Enter)       // save only
            {
                if (ge.saveGame())
                {
                    actionstatusLabel.ForeColor = Color.Orange;
                    actionstatusLabel.Text      = "Save successful!";
                }
                else
                {
                    actionstatusLabel.ForeColor = Color.Red;
                    actionstatusLabel.Text      = "Unable to save.";
                }
            }
            else if (e.KeyCode == Keys.P)
            {
                if (si == null)
                {
                    si = new ShopInterface(ge.getShop());
                    si.setCaller(this);
                    si.Show();
                }
            }
        }
Exemple #22
0
        public void updateCharaterPosition(Tile character, Character.Movement direction)
        {
            Character c = (Character)map[character.getY(), character.getX()];
            EmptyTile emp;
            Tile      at_position = null;

            switch (direction)
            {
            case Character.Movement.Up:
                at_position = this.getItemAtPosition(character.getY() - 1, character.getX());
                if (c is Hero && at_position != null)
                {
                    c.pickUp((Item)at_position);
                }

                emp = (EmptyTile)map[character.getY() - 1, character.getX()];
                map[character.getY() - 1, character.getX()] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Up);
                emp.setY(emp.getY() + 1);
                break;

            case Character.Movement.Down:
                at_position = this.getItemAtPosition(character.getY() + 1, character.getX());
                if (c is Hero && at_position != null)
                {
                    c.pickUp((Item)at_position);
                }

                emp = (EmptyTile)map[character.getY() + 1, character.getX()];
                map[character.getY() + 1, character.getX()] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Down);
                emp.setY(emp.getY() - 1);
                break;

            case Character.Movement.Left:
                at_position = this.getItemAtPosition(character.getY(), character.getX() - 1);
                if (c is Hero && at_position != null)
                {
                    c.pickUp((Item)at_position);
                }

                emp = (EmptyTile)map[character.getY(), character.getX() - 1];
                map[character.getY(), character.getX() - 1] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Left);
                emp.setX(emp.getX() + 1);
                break;

            case Character.Movement.Right:
                at_position = this.getItemAtPosition(character.getY(), character.getX() + 1);
                if (c is Hero && at_position != null)
                {
                    c.pickUp((Item)at_position);
                }

                emp = (EmptyTile)map[character.getY(), character.getX() + 1];
                map[character.getY(), character.getX() + 1] = c;
                map[character.getY(), character.getX()]     = emp;
                c.move(Character.Movement.Right);
                emp.setX(emp.getX() - 1);
                break;
            }

            this.updateVision();
        }