public Boolean movementOfPlayer(CharacterClass.Movement move) { if (map.provideHero().returnMove(move) == CharacterClass.Movement.NoMovement) { return(false); } else { int heroX = map.provideHero().getX(); int heroY = map.provideHero().getY(); if (move == CharacterClass.Movement.MoveUp) { if (map.provideMap()[heroY - 1, heroX] is GoldClass) { map.provideHero().userPickup((GoldClass)map.provideMap()[heroY - 1, heroX]); map.provideMap()[heroY - 1, heroX] = new emptyUserTileClass(heroY - 1, heroX); map.focusedUpdatedVision(); } } else if (move == CharacterClass.Movement.MoveDown) { if (map.provideMap()[heroY + 1, heroX] is GoldClass) { map.provideHero().userPickup((GoldClass)map.provideMap()[heroY + 1, heroX]); map.provideMap()[heroY + 1, heroX] = new emptyUserTileClass(heroY + 1, heroX); map.focusedUpdatedVision(); } } else if (move == CharacterClass.Movement.MoveLeft) { if (map.provideMap()[heroY, heroX - 1] is GoldClass) { map.provideHero().userPickup((GoldClass)map.provideMap()[heroY, heroX - 1]); map.provideMap()[heroY, heroX - 1] = new emptyUserTileClass(heroY, heroX - 1); map.focusedUpdatedVision(); } } else if (move == CharacterClass.Movement.MoveRight) { if (map.provideMap()[heroY, heroX + 1] is GoldClass) { map.provideHero().userPickup((GoldClass)map.provideMap()[heroY, heroX + 1]); map.provideMap()[heroY, heroX + 1] = new emptyUserTileClass(heroY, heroX + 1); map.focusedUpdatedVision(); } } map.findCharacterPosition(map.provideHero(), move); movementOfEnemies(); enemyAttackedUser(); return(true); } }
private void movementOfEnemies() { EnemyClass[] enemies = map.fetchEnemies(); for (int i = 0; i < enemies.Length; ++i) { CharacterClass.Movement move = enemies[i].returnMove(CharacterClass.Movement.NoMovement); map.findCharacterPosition(enemies[i], move); } }
public override Movement returnMove(CharacterClass.Movement move) { int[] possibleUserMovement = { 0, 1, 2, 3 }; Boolean foundUserMovement = false; CharacterClass.Movement userDirection = CharacterClass.Movement.NoMovement; while (!foundUserMovement) { userDirection = (CharacterClass.Movement)possibleUserMovement[random.Next(0, possibleUserMovement.Length)]; if (this.userCharacterVision[(int)userDirection] is emptyUserTileClass) { foundUserMovement = true; } else if (possibleUserMovement.Length != 1) { int[] new_possible_moves = new int[possibleUserMovement.Length - 1]; int index = 0; for (int i = 0; i < possibleUserMovement.Length; ++i) { if (possibleUserMovement[i] != (int)userDirection) { new_possible_moves[index] = possibleUserMovement[i]; ++index; } } possibleUserMovement = new_possible_moves; } else { userDirection = CharacterClass.Movement.NoMovement; foundUserMovement = true; } } return(userDirection); }
public String attackEnemy(CharacterClass.Movement move) { HeroClass h = map.provideHero(); userTileClass target = new emptyUserTileClass(0, 0); switch (move) { case CharacterClass.Movement.MoveUp: target = map.provideMap()[h.getY() - 1, h.getX()]; break; case CharacterClass.Movement.MoveDown: target = map.provideMap()[h.getY() + 1, h.getX()]; break; case CharacterClass.Movement.MoveLeft: target = map.provideMap()[h.getY(), h.getX() - 1]; break; case CharacterClass.Movement.MoveRight: target = map.provideMap()[h.getY(), h.getX() + 1]; break; } if (target is EnemyClass) { h.Attack((CharacterClass)target); CharacterClass c_target = (CharacterClass)target; if (c_target.died()) { map.MapRemoval(c_target); } movementOfEnemies(); if (!c_target.died()) { return("1" + c_target.ToString()); } else { return("The enemy has died"); } } else { return("0"); } }
public void findCharacterPosition(userTileClass character, CharacterClass.Movement direction) { CharacterClass c = (CharacterClass)map[character.getY(), character.getX()]; emptyUserTileClass emp; switch (direction) { case CharacterClass.Movement.MoveUp: emp = (emptyUserTileClass)map[c.getY() - 1, c.getX()]; map[c.getY() - 1, c.getX()] = c; map[c.getY(), c.getX()] = emp; c.Move(CharacterClass.Movement.MoveUp); emp.setY(emp.getY() + 1); break; case CharacterClass.Movement.MoveDown: emp = (emptyUserTileClass)map[c.getY() + 1, c.getX()]; map[c.getY() + 1, c.getX()] = c; map[c.getY(), c.getX()] = emp; c.Move(CharacterClass.Movement.MoveDown); emp.setY(emp.getY() - 1); break; case CharacterClass.Movement.MoveLeft: emp = (emptyUserTileClass)map[c.getY(), c.getX() - 1]; map[c.getY(), c.getX() - 1] = c; map[c.getY(), c.getX()] = emp; c.Move(CharacterClass.Movement.MoveLeft); emp.setX(emp.getX() + 1); break; case CharacterClass.Movement.MoveRight: emp = (emptyUserTileClass)map[c.getY(), c.getX() + 1]; map[c.getY(), c.getX() + 1] = c; map[c.getY(), c.getX()] = emp; c.Move(CharacterClass.Movement.MoveRight); emp.setX(emp.getX() - 1); break; } this.updateVision(); }
public string userAttacksEnemy(CharacterClass h, CharacterClass.Movement dir, userTileClass t) { userTileClass target = new emptyUserTileClass(0, 0); switch (dir) { case CharacterClass.Movement.MoveUp: target = map.provideMap()[h.getY() - 1, h.getX()]; break; case CharacterClass.Movement.MoveDown: target = map.provideMap()[h.getY() + 1, h.getX()]; break; case CharacterClass.Movement.MoveLeft: target = map.provideMap()[h.getY(), h.getX() - 1]; break; case CharacterClass.Movement.MoveRight: target = map.provideMap()[h.getY(), h.getX() + 1]; break; default: target = t; break; } if ((h is HeroClass && target is EnemyClass && !h.died()) || (h is GoblinClass && target is HeroClass) || (h is MagesClass && target is CharacterClass)) { h.Attack((CharacterClass)target); CharacterClass c_target = (CharacterClass)target; if (c_target.died()) { map.MapRemoval(c_target); } if (h is HeroClass) { enemyAttackedUser(); if (!c_target.died()) { return("1" + c_target.ToString()); } else { return("The enemy is dead"); } } else { return(""); } } else { return("0"); } }