Bonjour,
Je viens aujourd'hui vous présenter un petit projet sur lequel je travail seul depuis maintenant 2 mois, mais tout d'abord je vais me présenter.
Donc, je suis étudiant en terminale STI2D (spécialité SIN), j'ai 17 ans. Je suis passionné d'informatique depuis mon plus jeune âge. Après mon bac j'espère intégré l'IUT de Montpellier en informatique.
Présentation du projet :
Je voulais créer un petit projet personnel qui fonctionne dans la console et qui soit cross plateforme, j'ai alors chercher sur le net une librairie qui me permettent ceci, et c'est alors que j'ai entendu parler de pdcurse et curse. Cependant cela ne répondait pas à mes besoins, je me suis alors mis en tête de créer ma propre librairie portable.
Pour ça j'ai choisi le C++ (afin de m'y perfectionner). Je n'utilise aucune autre librairie externe si ce n'est Xlib pour linux afin de redimensionner la console.
Téléchargements :
Vous pouvez télécharger la dernière version de la librairie (1.0) ici.
Instalation :
Afin de faire fonctionner la librairie correctement il faut juste lancer votre IDE et ajouter une librairie, vous sélectionner ensuite le fichier .lib correspondant à votre système d'exploitation dans la dossier lib.
Utilisateur de linux vous devrait aussi ajouter la librairie X11. De plus pour les linuxiens je vous conseil XTerm, c'est celui qui fonctionne le mieux avec ma librairie à l'heure actuelle.
Il ne reste plus qu'a rajouter au début de votre fichier :
1 | #include "include/CL.h"
|
Afin de s'assurer que tout fonctionne bien copier coller ce code dans votre IDE :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | /** This little program create a console, change color of the text, change title, maximize the window & the buffer, write the title of the console, load an ASCII picture. After that you can move the picture by pressing SPACE BAR or exit the program by pressing 'q'. */ int main() { std::string title = "Multiplateform Console Librairy"; // Beautifull title //Console title must be unique when the console is created CMD cmd(title); //Create a console with a title. We give to the function a char const* cmd.showCursor(true); //Hide the cursor cmd.setColor(COLOR_RED, COLOR_BLACK); //Set the color forgeground to green and background to black cmd.setMaximized(); //Maximize the window, set to the max window size and largest buffer size possible //Under linux, resizing window automatically resize the buffer cmd.setCursorPos(cmd.getBufferSize().COLS / 2 - title.size() / 2, 0); //Center the cursor to write std::cout << cmd.getConsoleTitle() << std::endl; //Write the title of the console on the cursor position Picture picture; // Create a picture if (!picture.open("ASCII/art.txt")) // If the load fail { std::cout << "Fail while oppening file" << std::endl; // Ho, no ! } std::cout << "The pciture widht is : " << picture.getSizeWidth() << std::endl; // Return the Width of the picture std::cout << "The pciture height is : " << picture.getSizeHeight() << std::endl; // And the Height picture.setPos(10, 10); // Change the position of the picture picture.display(cmd); // Draw the pciture to his coordinate (if 'cmd' isn't specified draw to 0,0) int i(0); while (!i) //Infinite loop { if (cmd.keyState(113)) //ASCII value, correspond to the letter 'q' { i = 1; //Exit the loop and so the program } if (cmd.keyState(32)) //ASCII value, correspond to 'SPACE BAR'cl // We move the pciture while the user press SPACE BAR : { // Move the picture picture.setPos(picture.getPosX() + 5, picture.getPosY()); // Add 1 to X pos to move the picture CoordCR start; start.COLS = picture.getPosX() - 5; start.ROWS = picture.getPosY(); CoordCR end; end.COLS = picture.getPosX(); end.ROWS = picture.getSizeHeight(); cmd.setCursorPos(0, 50); std::cout << "Start : " << start.COLS << " ; " << start.ROWS << std::endl; std::cout << "End : " << end.COLS << " ; " << end.ROWS << std::endl; // And now refresh the screen ! cmd.clearBuffer(cmd, start, end); // We clear only the specified area, it's really slow care ! picture.display(cmd); // Display the picture to new coordonate } } return 0; //Exit the programm } |
License :
CPCL is under the zlib license :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. |
Possibilité d'avancement :
- Documentation digne de ce nom
- Support de MAC
- Multiples consoles (cela me semble compliqué)
- Support de plus de terminaux sur linux
- Diminué les appels à la fonction system
Les sources sont bien sûr dans l'archive à téléchargé j'espère que tout ceci sera utilisé. Si vous voulez prendre par au projet, donner votre avis, suggérer une nouvelle fonctions, rajouter / corrigé des choses, reporter un bug et bien je ne peux que vous y encouragez !
Merci !