42core-team / public-wiki

GNU Affero General Public License v3.0
0 stars 0 forks source link

🏠 The Art of CORE

Welcome to the Official CORE Documentation 📚

🚀 Getting Started with Your Own CORE Bot

To start building your own CORE bot, ensure you've completed the following prerequisites:

Prerequisites

  1. Be a Registered CORE Participant/Team

    • You must be officially registered as a participant or part of a team in the CORE event (Slack).
  2. Receive Your CORE Repository Invite 📧

    • You will receive an invite link to your dedicated CORE repository on GitHub.
    • This invite will be sent once you're registered and the event is about to begin.

🛠️ CORE Repository Setup Guide

Follow these steps to set up your development environment using GitHub, Docker, and Visual Studio Code.

1. Get access to your repo 🍴

2. Clone Your Team's Repository 🖥️

When cloning with SSH you might need to push from a terminal from outside the Dev Container for it to work

  • Open a terminal and run:
    git clone <your-repo-url>
  • After cloning, open the project in Visual Studio Code (VSCode).

3. Install Dev Container Extension 🔧

4. Start Docker 🐋

5. Reopen in Container 🔄

6. Wait for the Setup to Complete ⏳

7. Verify the Setup ✅

8. Start Developing 💻

When running make again you might have to reload the visualizer page for it to work!

  • Navigate to the src/ folder inside the container (Every .c file in there should get compiled).

🎉 You are now ready to start coding! 😎

📝 Example Code

Here's a simple example bot to get you started.

void    ft_user_loop(void *data)
{
    (void)data;

    // get all units of own team
    t_obj **units = ft_get_my_units();

    // get the first opponent core there is
    t_obj *enemy_core = ft_get_first_opponent_core();

    ft_create_type_id(UNIT_WARRIOR); // try to create a warrior

    int i = -1;
    while (units[++i]) // loop through every of our units
    {
        t_obj *curr = units[i];
        if (curr->s_unit.type_id == UNIT_WARRIOR) // if the unit is a warrior
        {
            t_obj *war = ft_get_nearest_opponent_unit(curr); // try to get the closest core to current unit
            if (war)
                ft_travel_attack(curr, war); // travel and then attack to the obj
            else
                ft_travel_attack(curr, enemy_core);
        }
    }

    free(units);
}

📚 Standard Library

❓ FAQ