Skip to content

[3pts] Implement turn-based combat loop #13

@github-actions

Description

@github-actions

Description

Implement turn-based combat system with CombatEngine class.

Depends on: Character, Player, Enemy, and ICombatStrategy issues

CombatEngine Class

RunCombat(Player player, Enemy enemy)

Returns CombatOutcome with:

  • Winner (Character)
  • TotalDamageDealt (int)
  • ExperienceEarned (int)
  • GoldEarned (int)
  • TurnCount (int)

Combat Rules

  • Player attacks first each turn
  • Each character uses their ICombatStrategy.Execute()
  • Combat continues until one character dies (Health <= 0)
  • Publishes events via GameEventSystem:
    • EnemyDefeatedEvent if player wins
    • PlayerDeathEvent if enemy wins

Requirements

  • No UI/console output in CombatEngine
  • Pure game logic only
  • Combat result encapsulates all outcome data

Acceptance Criteria

  • CombatEngine class created
  • RunCombat(Player player, Enemy enemy) method implemented
  • CombatOutcome class defined with all properties
  • Player attacks first each turn
  • Uses ICombatStrategy.Execute() for attacks
  • Combat continues until one character's Health <= 0
  • Publishes EnemyDefeatedEvent on enemy death
  • Publishes PlayerDeathEvent on player death
  • Returns complete CombatOutcome
  • No UI logic in class
  • Class documented with XML comments

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions