Game Logic
Source: examples/game_logic.ion in the repo.
// Game logic example — RPG damage calculation
fn calculate_damage(attacker, defender) { let base = attacker.attack - defender.defense; let damage = if base < 1 { 1 } else { base };
// Critical hit check (simulated) let is_crit = attacker.luck > 7; let final_damage = if is_crit { damage * 2 } else { damage };
#{ damage: final_damage, is_crit: is_crit, attacker_name: attacker.name, defender_name: defender.name, }}
fn apply_damage(entity, damage) { let new_hp = entity.hp - damage; entity.insert("hp", if new_hp < 0 { 0 } else { new_hp })}
fn is_alive(entity) { entity.hp > 0}
// Set up combatantslet hero = #{name: "Hero", hp: 100, attack: 25, defense: 10, luck: 8};let goblin = #{name: "Goblin", hp: 40, attack: 12, defense: 5, luck: 3};
// Combat roundlet result = calculate_damage(hero, goblin);io::println(f"{result.attacker_name} attacks {result.defender_name}!");if result.is_crit { io::println("Critical hit!");}io::println(f"Deals {result.damage} damage.");
let mut goblin = apply_damage(goblin, result.damage);io::println(f"{goblin.name} HP: {goblin.hp}");
if !is_alive(goblin) { io::println(f"{goblin.name} has been defeated!");}