Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Libreria completa per gestire la console e programmare più facilmente!
Forum - C/C++ - Libreria completa per gestire la console e programmare più facilmente!

Avatar
Oneiros (Normal User)
Newbie


Messaggi: 15
Iscritto: 05/06/2010

Segnala al moderatore
Postato alle 22:38
Giovedì, 02/12/2010
Ciao a tutti :)

Vorrei condividere con voi una mia creazione: una pratica e utile libreria in C che offre utili funzioni per gestire la console (colori, dimensioni, posizione, input, output, creazione menu) e non solo

Questa libreria l'ho creata durante il mio primo anno di università durante il quale ho preso l'abitudine di raccogliere in essa tutte le funzioni che potevano essermi utili per facilitarmi la programmazione.

Consideratela dunque un supporto per chi si avvicina al C e vuole dare un tocco grafico più carino ai propri programmi a linea di comando :)

Ecco l'Header della libreria. Qui sono raccolte e documentate tutte le sue funzioni:


Codice sorgente - presumibilmente C++

  1. /**
  2.  * File:    Oneiros Library Header File (oneiros.h)
  3.  * Author:  Oneiros - Lorenzo Valente (oneiros.valente [AT] gmail.com)
  4.  * Version: 1.2
  5.  *
  6.  * Created on 10 maggio 2010, 9.12
  7.  */
  8.  
  9. /** Questa definizione serve per assicurare al compilatore che stiamo
  10.  * lavorando su una versione di Windows superiore a Windows 2000 */
  11. #define _WIN32_WINNT 0x0500
  12.  
  13. #include <string.h>
  14. #include <windows.h>
  15. #include <time.h>
  16.  
  17. /** Definisco i colori */
  18. #define BLACK 0
  19. #define DARK_BLUE 1
  20. #define GREEN 2
  21. #define TEAL 3
  22. #define BORDEAUX 4
  23. #define PURPLE 5
  24. #define OCRA 6
  25. #define LIGHT_GRAY 7
  26. #define GRAY 8
  27. #define BLUE 9
  28. #define LIME 10
  29. #define LIGHT_BLUE 11
  30. #define RED 12
  31. #define PINK 13
  32. #define YELLOW 14
  33. #define WHITE 15
  34.  
  35. /** Definisco un codice di errore per gestire le eccezioni */
  36. #define CONTROL_CODE -23081990
  37.  
  38. /** Definisco il tipo stringa */
  39. typedef char *String;
  40.  
  41.  
  42. /************** CONSOLE OPERATIONS ******************/
  43.  
  44.  
  45. /** Pulisce la console da precedenti stampe */
  46. void clear();
  47.  
  48. /** Mette in pausa il programma. L'esecuzione riprenderà premendo un pulsante
  49.  * qualsiasi */
  50. void pause();
  51.  
  52. /** Cambia il titolo della Console con la stringa s */
  53. void setTitle(String s);
  54.  
  55. /** Sposta il cursore di inserimento nella posizione desiderata. Stampando
  56.  * qualcosa, ad esempio con una printf(), dopo aver spostato il cursore, si
  57.  * sovrascriverà quello che c'è scritto in quella posizione */
  58. void setCursor(unsigned int line, unsigned int col);
  59.  
  60. /** Restituisce una variabile di tipo COORD (ovvero una struttura contenente
  61.  * una coordinata x e una y) che indica la posizione attuale del cursore di
  62.  * inserimento*/
  63. COORD getCursor();
  64.  
  65. /** Va a capo */
  66. void newLine();
  67.  
  68. /** Va a capo n volte */
  69. void newLines(int n);
  70.  
  71. /** Pulisce la riga "line" da precedenti stampe */
  72. void clearLine(int line);
  73.  
  74. /** Restituisce la larghezza (in pixel) del frame della console */
  75. unsigned int getConsoleWindowWidth();
  76.  
  77. /** Restituisce l'altezza (in pixel) del frame della console */
  78. unsigned int getConsoleWindowHeight();
  79.  
  80. /** Restituisce la larghezza (in numero di colonne) della console */
  81. unsigned int getConsoleWidth();
  82.  
  83. /** Restituisce l'altezza (in numero di righe) della console */
  84. unsigned int getConsoleHeight();
  85.  
  86. /** Imposta il numero di righe ed il numero di colonne della console */
  87. void setConsoleSize(unsigned int lines, unsigned int cols);
  88.  
  89. /** Sposta la console nella posizione di coordinate (in pixel) "x" e "y" */
  90. void setConsoleLocation(unsigned int x, unsigned int y);
  91.  
  92. /** Adatta la dimensione del buffer della console alla dimensione della
  93.  * console stessa */
  94. void adaptScreenBufferSize();
  95.  
  96. /** Centra il frame della console all'interno dello schermo */
  97. void setConsoleCentered();
  98.  
  99. /** Emette un suono */
  100. void beep();
  101.  
  102. /** Pulisce il buffer di input della console */
  103. void flush();
  104.  
  105.  
  106. /*************** COLOR OPERATIONS *******************/
  107.  
  108.  
  109. /** Imposta il colore delle stringhe stampate e del loro sfondo prendendo in
  110.  * input un intero ("color") che va da 0 a 255 */
  111. void setColor(int color);
  112.  
  113. /** Restituisce il codice identificativo del colore attualemente in uso */
  114. int getColor();
  115.  
  116. /** Imposta il colore del testo senza modificare quello di sfondo. I colori
  117.  * sono definiti nella libreria come costanti, con nome in inglese (Esempio:
  118.  * setTextColor(GREEN) cambierà il colore del testo in verde). */
  119. void setTextColor(int color);
  120.  
  121. /** Imposta il colore di sfondo senza modificare quello del testo. I colori
  122.  * sono definiti nella libreria come costanti, con nome in inglese (Esempio:
  123.  * setBackgroundColor(WHITE) cambierà il colore di sfondo in bianco). */
  124. void setBackgroundColor(int color);
  125.  
  126. /** Restituisce il codice identificativo del colore attualmente in uso per il
  127.  * testo */
  128. int getTextColor();
  129.  
  130. /** Restituisce il codice identificativo del colore attualmente in uso per lo
  131.  * sfondo del testo */
  132. int getBackgroundColor();
  133.  
  134.  
  135. /*************** CHAR OPERATIONS ********************/
  136.  
  137.  
  138. /** Restituisce la maiuscola del carattere "toUpper" */
  139. char charToUpper(char toUpper);
  140.  
  141.  
  142. /*************** STRING OPERATIONS ******************/
  143.  
  144.  
  145. /** La stringa puntata dal puntatore string viene allocata in memoria ed
  146.  * inizializzata con il valore della stringa input */
  147. void initString(String *string, String input);
  148.  
  149. /** Restituisce la stringa "text" resa maiuscola */
  150. String stringToUpper(String text);
  151.  
  152. /** Converte un intero in una stringa*/
  153. String intToString(int n);
  154.  
  155. /** Converte una stringa in un intero */
  156. int stringToInt(String s);
  157.  
  158. /** Confronta due stringhe. Restituisce TRUE se esse sono esattamente uguali */
  159. boolean stringEqualsString(String s1, String s2);
  160.  
  161. /** Confronta due stringhe. Restituisce TRUE se esse sono uguali, ignorando
  162.  * il case */
  163. boolean stringEqualsStringIgnoreCase(String s1, String s2);
  164.  
  165. /** Confronta una stringa ed un intero. Restituisce TRUE se nella stringa "s"
  166.  * è contenuto solo ed esattamente l'intero "n" */
  167. boolean stringEqualsInt(String s, int n);
  168.  
  169.  
  170. /*************** OUTPUT OPERATIONS ******************/
  171.  
  172.  
  173. /** Stampa a video l'intero "integer" utilizzando il colore "color" */
  174. void outInt(int integer, int color);
  175.  
  176. /** Stampa a video il numero "number" utilizzando il colore "color" */
  177. void outFloat(float number, int color);
  178.  
  179. /** Stampa a video il numero "number" utilizzando il colore "color" */
  180. void outDouble(double number, int color);
  181.  
  182. /** Stampa a video il carattere "character" utilizzando il colore "color" */
  183. void outChar(char character, int pColor);
  184.  
  185. /** Stampa a video la stringa "text" utilizzando il colore "color" */
  186. void outString(String text, int color);
  187.  
  188. /** Stampa a video il boolean "boo" utilizzando il colore "color" */
  189. void outBoolean(boolean boo, int color);
  190.  
  191. /** Stampa a video la stringa "text" utilizzando il colore "color" e va a capo*/
  192. void outStringLine(String text, int color);
  193.  
  194.  
  195. /**************** INPUT OPERATIONS ******************/
  196.  
  197.  
  198. /** Attende l'inserimento di un numero e lo restituisce. Nel caso in cui il
  199.  * valore inserito non sia di tipo "int" questa funzione restituisce il
  200.  * codice di controllo "CONTROL_CODE" */
  201. int inInt(int color);
  202.  
  203. /** Del tutto equivalente a "inInt" con l'aggiunta che se il valore inserito
  204.  * non è interno all'intervallo definito dai parametri "from" e "to" viene
  205.  * stampata la stringa "error" e richiesto nuovamente l'input */
  206. int controlledInInt(String text, int textColor, int inputColor, int from, int to, String error);
  207.  
  208. /** Attende l'inserimento di un numero e lo restituisce. Nel caso in cui il
  209.  * valore inserito non sia di tipo "double" questa funzione restituisce il
  210.  * codice di controllo "CONTROL_CODE" */
  211. float inFloat(int color);
  212.  
  213. /** Attende l'inserimento di un numero e lo restituisce. Nel caso in cui il
  214.  * valore inserito non sia di tipo "double" questa funzione restituisce il
  215.  * codice di controllo "CONTROL_CODE" */
  216. double inDouble(int color);
  217.  
  218. /** Attende l'inserimento di un carattere e la restituisce */
  219. char inChar(int color);
  220.  
  221. /** Attende l'inserimento di una stringa e la restituisce */
  222. String inString(int color);
  223.  
  224.  
  225. /**************** RANDOM OPERATIONS *****************/
  226.  
  227.  
  228. /** Restituisce un numero random compreso nell'intervallo definito dai
  229.  * parametri from e to */
  230. int randomInt(int from, int to);
  231.  
  232. /** Funzione da chiamare prima di "randomInt" per evitare che il programma
  233.  * peschi sempre gli stessi numeri nelle successive esecuzioni */
  234. void randomize();
  235.  
  236.  
  237. /********************* MENU *************************/
  238.  
  239.  
  240. /** Stampa la stringa "title" incorniciata da asterischi */
  241. void starredString(String title, int color, int starColor);
  242.  
  243. /** Stampa un menu del tipo:
  244.  *
  245.  * [1] "menu[1]"
  246.  * [2] "menu[2]"
  247.  * [3] "menu[3]"
  248.  * [4] "menu[4]"
  249.  * [5] "menu[5]"
  250.  * [6] "menu[6]"
  251.  * [0] "end" */
  252. void menu(int menuNumber, String menu[], int color, int secondColor, int thirdColor, String end);
  253.  
  254. /** Stampa un menu del tipo:
  255.  *
  256.  * [1] "menu[1]menu2[1]"
  257.  * [2] "menu[2]menu2[2]"
  258.  * [3] "menu[3]menu2[3]"
  259.  * [4] "menu[4]menu2[4]"
  260.  * [5] "menu[5]menu2[5]"
  261.  * [6] "menu[6]menu2[6]"
  262.  * [0] "end" */
  263. void menu2(int menuNumber, String menu[], String menu2[], int color, int color2, int color3, int color4, String end);





:alert::alert::alert::alert::alert::alert::alert:
A questo indirizzo potete scaricare il file .a
http://db.tt/ZWnilWh
:alert::alert::alert::alert::alert::alert::alert:

Ultima modifica effettuata da Oneiros il 02/12/2010 alle 22:47


Oneiros
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6108
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:05
Venerdì, 03/12/2010
Spam? :-|


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Segnala al moderatore
Postato alle 1:53
Venerdì, 03/12/2010
Testo quotato

Postato originariamente da pierotofy:

Spam? :-|



Posso assicurare io per lui. Non è spam. È una persona vera che vuole condividere! ;)


Member paoloricciuti= new Member();
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 10:16
Venerdì, 03/12/2010
Testo quotato

Postato originariamente da paoloricciuti:

Testo quotato

Postato originariamente da pierotofy:

Spam? :-|



Posso assicurare io per lui. Non è spam. È una persona vera che vuole condividere! ;)



si ma non è questo il modo, deve far richiesta per diventare membro dopodichè può pubblicare articoli/tutorial su quello che gli pare :|


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 13:54
Venerdì, 03/12/2010
fa un gesto carino e subito lo trattate male...


The old lie: Dulce et decorum est pro patria mori
PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 14:43
Venerdì, 03/12/2010
Non è trattare male. Anzi io condivido personalmente cioè che ha detto Paoloricciuti in base alla buona volontà che si evince dal messaggio. Ma le regole sono regole. Il forum non si usa per questo ed è giusto che il suo contributo venga spostato nella sezione giusta. Non è trattare male :D


PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 23:27
Venerdì, 03/12/2010
Ti rimando al link per fare la richiesta per diventare membro:
http://www.pierotofy.it/pages/members/join_module/

E pubblicare la libreria sotto la sezione programmi o progetti.

Altra cosa importantissima:

Testo quotato


...
A questo indirizzo potete scaricare il file .a
...



I file .a sono binari, ma essendo pierotofy.it una community che segue l'open source per contribuire è richiesto che tutti i sorgenti siano distribuiti; nel caso del C quindi sia il .h sia il .c



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote