Détails des Fonctions
=====================

Cette section explique chaque fonction du contrat en détail, avec des exemples concrets.

register
--------

.. code-block:: solidity

    function register() public payable {
        // Enregistre un utilisateur en tant qu'enchérisseur
    }

- **Description :** Permet à un utilisateur de s'enregistrer en tant qu'enchérisseur.
- **Entrée :** Aucun argument requis.
- **Effet :**
  - Ajoute l'utilisateur au tableau `bidders`.
  - Initialise son solde à 5 jetons.

**Exemple :**
- Appeler `register` avec l'adresse `0x123...`.
- Résultat attendu :
  - `bidders[0].addr = 0x123...`
  - `bidders[0].remainingTokens = 5`.

bid
---

.. code-block:: solidity

    function bid(uint _itemId, uint _count) public payable {
        // Place une enchère sur un article
    }

- **Description :** Place une enchère sur un article spécifique.
- **Entrées :**
  - `_itemId` : ID de l'article (0, 1 ou 2).
  - `_count` : Nombre de jetons misés.
- **Effet :**
  - Met à jour la liste des enchères pour l'article.
  - Déduit les jetons du solde de l'utilisateur.

**Exemple :**
- Appeler `bid(1, 2)` :
  - `itemTokens` pour l'article 1 sera mis à jour.
  - Le solde de l'utilisateur sera décrémenté de 2.

revealWinners
-------------

.. code-block:: solidity

    function revealWinners() public onlyOwner {
        // Révèle les gagnants pour chaque article
    }

- **Description :** Sélectionne aléatoirement un gagnant pour chaque article.
- **Conditions :** 
  - Seul le propriétaire peut appeler cette fonction.
- **Effet :**
  - Met à jour le tableau `winners` avec les adresses des gagnants.

**Exemple :**
- Appeler `revealWinners`.
- Résultat attendu :
  - Les gagnants pour chaque article sont enregistrés.

---

