Bruno Costa
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Cahier des charges - Arc'ttorney ## 1. Introduction Lors du premier semestre de cette seconde année, le projet P2 était une application graphique faite via le framework Qt de C++. Le projet à faire durant le deuxième semestre sera produit avec le langage Java. Comme pour le précédent, le groupe est son propre mandant et donc peut faire ce qu'il souhaite, il faut bien entendu l'accord des enseignants. Ce second projet sera un jeu textuel se basant sur la série de jeu "Ace Attorney" où il faudra débattre via un tchat en ligne et ainsi convaincre le juge afin de prouver l'innocence ou la culpabilité du suspect présent. ## 2. Description du projet Première chose que l'utilisateur doit faire c'est se connecter au serveur, une fois connecté il doit choisir parmis 3 rôles : - L'avocat de la défense, c'est celui qui doit défendre l'accusé et arriver à un verdict non coupable. Pour ça il devra trouver des failles dans la déposition du témoin et trouver le réel coupable. Il pourra s'équiper de preuves tout au long du procès qui l'aidera à appuyer son hypothèse. - Le procureur lui doit déjouer les théories de la défense et prouver que l'accusé est bel et bien coupable. Il pourra lui aussi accumuler des preuves pour contrer les théories de la défense. - Le juge quant à lui a un rôle d'arbitre, il va pouvoir accepter ou refuser des objections si un parti est trop insistant ou qu'il considère que la direction prise n'est pas bonne. Il va à la fin rendre le verdict et finir la partie. Le juge gagne si le verdict est le bon selon le scénario posé au préalable. ### 2.1 Marche à suivre du jeu - Lancement du jeu - Connexion au serveur : via une adresse IP - Choix d'un pseudo. - **Connexion** - Arrive sur le lobby. - Choix de l'affaire. - Choix du rôle, le joueur doit se mettre prêt pour que le Juge lance la partie. - Le juge lance la partie une fois que tout le monde est prêt. - Plateforme de jeu - Chat - Message de récapitulatif de l'affaire est envoyé - Une mini pause de 5-8s pour laisser le temps aux joueurs de se préparer. - Fonctionnement des tours - L'avocat de la défense (1) et le procureur (2) parle chacun leur tour pour prouver l'innocence/la culpabilité du suspect. - Le juge quant à lui peut parler quand il le souhaite pour interrompre, pour ajouter une information ou poser une question. - Avocat de la défense peut questionner le témoin/victime - Réponse à choix, arbre de décision - Les deux joueurs peuvent s'interrompre via une objection dans une fenêtre de ~15 secondes à partir de la réception du message. Ce sera au juge de les accepter ou non. - Si un des joueurs en abuse, il peut recevoir une pénalité (interdiction de faire une interruption pendant un temps t) - Le but final de cette discussion est d'apporter suffisament de preuves au Juge pour qu'il donne un verdict final - Si le suspect est considéré non-coupable, l'avocat de la défense remporte la victoire. - Si le suspect est considéré coupable, le procureur remporte la victoire. - *Si le juge donne un verdict correct, il remporte également la victoire. - Le jeu aura un fond qui représente la cour. - Lorsqu'un des joueurs parle, l'image de son personnage apparaît - Si une objection est faite, un sprite en premier plan apparaît - À chaque instant, les joueurs peuvent enregistrer une donnée comme étant preuve et peuvent consulter une liste de preuve pour les "renvoyer" dans le chat ## 3. Objectifs Le projet Arc'ttorney se base sur un chat écrit sur lequel les informations importantes du jeu seront reçus et envoyées. Ce chat est donc considéré comme l'élément principal du jeu, le but de ce paragraphe est donc de séparer ce chat et ses fonctionnalités en différents objectifs. ### 3.1 Objectifs primaires Voici les objectifs importants : - Serveur de communication (Connexion, chat, etc) - Interface graphique de connexion. - Socket de connexion. - Connexion sans latence (ping). - Envoi et réception de données. - Lobby de préparation de partie - Interface graphique. - Choix des rôles. - Choix de l'affaire. - Réception/envoi de données lorsqu'une personne se met prêt. - Tchat écrit - Interface graphique du tchat - Système de chat fluide et fonctionnel. - Premier message de présentation - envoyé par l'ordinateur. - Envoie de message par tour (Avocat de la défense, procureur). - Envoie de message (Juge). - Pouvoir tranformser un message en tant qu'objection. - Pouvoir ajouter une preuve au message. - Système de récupération de données en tant que preuve. - Pouvoir stocker des parties écrites dans une liste. - Pouvoir les récupérer et les indiquer dans un texte. - Système d'interruption - Objection afin d'interrompre une personne. - Système de victoire - Au bout d'un certain moment, un verdict doit être donné par le joueur "Juge". - Selon le verdict, un joueur ou l'autre va gagner ainsi que le juge selon le résultat. ### 3.2 Objectifs secondaires - Avocat de la défense peut questionner le témoin/victime - Système de questions/réponses sour forme d'arbre de décision - Pénalité donnée par le juge si les objections sont trop utilisés ou si un joueur fait trop n'importe quoi - Moyen de punir les joueurs dissidents - Preuves de base - Au début du cas, des preuves sont déjà présentes pour aider les joueurs - Fond d'écran - Animations - FX - Lorsque personne ne parle, un fond représentant une cour sera affiché. - Lorsqu'un des utilisateurs parle, un sprite le représentant apparaîtra. - Lorsqu'une interruption est faite, un sprite "objection" apparaîtra. ## 4. Technologies et détails Pour ce projet, nous allons utiliser plusieurs technologies. Le langage imposé étant Java, plusieurs recherches sur différentes bibliothèques et technologies ont été préalablement faites et sont répértioriées ici. ### 4.1 Swing Pour l'interface graphique, l'utilisation de Swing a été retenu. C'est une bibliothèque graphique en Java dévellopé par Oracle et majoritairement utilisée dans l'univers Java. ### 4.2 Java Sockets Java fourni un package java.net qui permet d'avoir des classes spécifiques pour le réseau. Les deux classes principales sont "java.net.ServerSocket" qui reçoit des connexions venues des différents clients. Il y a aussi "java.net.Socket" qui réalise une connexion avec une application distante. Dans ce projet, il y aura une application qui s'occupe de faire le serveur et accepte les connexions des trois autres joueurs. ### 4.3 Java 2D Java 2D va permettre d'animer des personnages dans le fond de l'application. Grâce à un "timer", il est possible de modifier les sprites qui animent un personnage. Les personnages vont être créés avec un logiciel de dessin dans un style pixel art. ### 4.4 Paint.net - Photoshop Ces logiciels sont utilisés pour ce qui est du design de l'application et des sprites du jeu. ## 5. Délais | Nom du rendu | Description | Date | |---|---|---| | Cahier des charges | Version intermédiare | 09 mars 2021 | | Cahier des carges | Version final | 16 mars 2021 | | Spécification et planning | GANTT | 23 mars 2021 |<<< | Conception | Diagrammes uses cases et diagrammes de séquences, diagrammes de classe | 30 mars 2021 | | Délivrables | Rapport, jar exécutable, vidéo démo max 2 min | 14 juin 2021 | | Présentation | Powerpoint | 16 juin 2021 |

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully