/*File term2_0.h*/
codice:#include<stdio.h> #include<stdlib.h> #include<termios.h> #include<unistd.h> /*SOFTWARE sotto licenza gpl (oppure diesel) e' possibile la eventuale modifica del codice senza la cancellazione dei commenti originali*/ /**** *Versione Finale della libreria che permette di usare i colori sulla *Console Linux *2.0+ final relase Carlesso Cristian //corretto l'errore del cls() *****/ /* [2.21.05.03 relase] aggiunto gotoxy,//sposta il cursore in posizione x,y retard(base,n) //aspetta un tempo definito dall' utente con 2 variabili e delay(n). //aspetta un tempo uguale a 100000 cicli macchina per n >>2.01.06.03 relase nome in codice Cattaratta aggiunto: set_raw() //modo non bufferizzato e sz echo unset_raw() //modo bufferizzato con echo Getch() //getch con echo getche() //getch senza echo #allora|? versione 2.17.03.04 codename DDT >>aggiunto: controlli di predefinizione Gets(stringa,n) //legge una stringa di n caratteri(n=\0) isNatural(stringa) //controlla se una stringa e solo numerica randomize() //Randomizza il random Random(max) //random da 1 a max Random0(max) //random da 0 a max cls() piu veloce quella vecchia rinominata fcls() gotoxy risistemata Normalizzate tutte le funzioni in modo che inizino tutte con lettera Maiuscola Aggiunto Echoset_raw(); ALL Done by Cristian Carlesso Aka Kentaromiura aggiunta randomxy(min,max) //random da min a max */ /***********************How to use Semplicemente basta mettere il codice colore davanti ad una stringa printf(colore"Ciao"); poi se si vuole cambiare colore basta fare cosi' printf(colore1"ciao "colore2"Mamma!!"); ovvero dopo la prima stringa mettere il 2 codice colore e imettere successivamente la nuova stringa. Ogni stringa deve essere racchiusa tra apici; I modificatori restano attivi finche' si mette un nor o un norm.funzionano come i colori. esistono i colori di background(sfondo)che sono preceduti da una b e i colori di foreground(scritta): ------------------------------------ | Colore | Foreground | Background | ------------------------------------ | NERo | nero | bnero | | ROSSo | rosso | brosso | | VERDe | verde | bverde | | GIALLo | giallo | bgiallo | | BLu | blu | bblu | | MAGENTa | magenta | bmagenta | | ACQUa | acqua | bacqua | | BIANCo | bianca | bbianca | ************+++++***********************/ /*DEFiNiZiONE Del tipo Bool + true e false *//*Aggiunto un paio di controlli*/ #ifndef true #define true 1 #endif #ifndef True #define True 1 #endif #ifndef false #define false 0 #endif #ifndef False #define False 0 #endif #ifndef bool #define bool char #endif #ifndef Bool #define Bool char #endif /*Funzioni nuove! aggiunte*/ struct termios old_attr,new_attr; bool modo_gia_settato=0; void set_raw() {if (modo_gia_settato==0){ if(tcgetattr(STDIN_FILENO,&old_attr)<0) { perror("tcgetattr"); exit(EXIT_FAILURE); } memcpy(&new_attr,&old_attr,sizeof(struct termios)); new_attr.c_lflag &= ~(ICANON|ECHO); /*NON CANONICAL MODE*/ /* new_attr.c_iflag &= 0xFF; */ if(tcsetattr(STDIN_FILENO,TCSANOW,&new_attr)<0) {perror("tcsetattr"); exit(EXIT_FAILURE); } modo_gia_settato=1; } } #ifndef Set_raw #define Set_raw() set_raw() #endif void Echoset_raw() {if (modo_gia_settato==0){ if(tcgetattr(STDIN_FILENO,&old_attr)<0) { perror("tcgetattr"); exit(EXIT_FAILURE); } memcpy(&new_attr,&old_attr,sizeof(struct termios)); new_attr.c_lflag &= ~(ICANON); /*NON CANONICAL MODE*/ /* new_attr.c_iflag &= 0xFF; */ if(tcsetattr(STDIN_FILENO,TCSANOW,&new_attr)<0) {perror("tcsetattr"); exit(EXIT_FAILURE); } modo_gia_settato=1; } } void unset_raw() {if (modo_gia_settato==1){ if(tcsetattr(STDIN_FILENO,TCSANOW,&old_attr)<0) { perror("tcsettattr"); exit(EXIT_FAILURE); } } modo_gia_settato=0; } #ifndef Unset_raw #define Unset_raw() unset_raw() #endif char Getch(){ char pippo; set_raw(); pippo=getchar(); unset_raw(); printf("%c",pippo); return pippo; } char getche(){ char pippo; set_raw(); pippo=getchar(); unset_raw(); return pippo; } #ifndef Getche #define Getche() getche() #endif /*Funzione nuova: GOTOXY :non piu bacata*/ void gotoxy(int X,int Y){printf("\e[%d;%dH",Y,X);} #ifndef Gotoxy #define Gotoxy(x,y) gotoxy(x,y) #endif /*Funzione nuova: DELAY*/ void delay(int t){int i; while(t>0){ for (i=0;i<100000;i++); t--;} } #ifndef Delay #define Delay(t) delay(t) #endif /*Funzione nuova: RETARD*/ void retard(int t,int c){ int i; while(t>0){ for (i=0;i<c;i++); t--;} } #ifndef Retard #define Retard(t,c) retard(t,c) #endif /*Funzione implementata per la gioia di fulvio*/ void Gets(char stringa[],int n){ int i=0; while(n-1>i++){ stringa[i-1]=Getch(); if (stringa[i-1]==127){i-=2; printf("\b \b"); } if (stringa[i-1]=='\n'){i--; break; } } printf("i-%d",i); stringa[i]='\0'; } /*riconosce se la stringa e' un intero(non fa il bounds control)*/ bool isNatural(char str[]){ int i; for(i=0;;i++){ if (str[i]=='\0')return true; if (str[i] > '9' || str[i] < '0') return false; } } #ifndef Isnatural #define Isnatural(s) isNatural(s) #endif /*>>aggiunto funzioni di random e randomize*/ #ifndef randomize #define randomize() srand(time(NULL)); #endif #ifndef Randomize #define Randomize() randomize() #endif long Random(long max){ return rand()%max+1; }/*random da 1 a max*/ long Random0(long max){ return rand()%max; }/*random da 0 a max*/ long Randomxy(long min,long max){ return rand()%max+min; } /*random da min a max*/ /*Modificatori di stringa*/ #define nor "\e[;m" #define norm "\e[0m"/*Normale*/ #define lumi "\e[1m"/*Luminoso*/ #define sott "\e[4m"/*Sottolineato*/ #define inte "\e[5m"/*Intermittente*/ #define inve "\e[7m"/*Invertito*/ #define conc "\e[8m"/*Nascosto?*/ /*Definizione 7 colori di Backgroung*/ #define bnero "\e[40m" /*NERO*/ #define brosso "\e[41m" /*ROSSO*/ #define bverde "\e[42m" /*VERDE*/ #define bgiallo "\e[43m" /*GIALLO*/ #define bblu "\e[44m" /*BLU*/ #define bmagenta "\e[45m" /*MAGENTA*/ #define bacqua "\e[46m" /*ACQUA*/ #define bbianco "\e[47m" /*BIANCO*/ /*Definizione 7 colori Foreground*/ #define nero "\e[30m" /*NERO*/ #define rosso "\e[31m" /*ROSSO*/ #define verde "\e[32m" /*VERDE*/ #define giallo "\e[33m" /*GIALLO*/ #define blu "\e[34m" /*BLU*/ #define magenta "\e[35m" /*MAGENTA*/ #define acqua "\e[36m" /*ACQUA*/ #define bianco "\e[37m" /*BIANCO*/ /**/ #define Nor "\e[;m" #define Norm "\e[0m"/*Normale*/ #define Lumi "\e[1m"/*Luminoso*/ #define Sott "\e[4m"/*Sottolineato*/ #define Inte "\e[5m"/*Intermittente*/ #define Inve "\e[7m"/*Invertito*/ #define Conc "\e[8m"/*Nascosto?*/ /*Definizione 7 colori di Backgroung*/ #define Bnero "\e[40m" /*NERO*/ #define Brosso "\e[41m" /*ROSSO*/ #define Bverde "\e[42m" /*VERDE*/ #define Bgiallo "\e[43m" /*GIALLO*/ #define Bblu "\e[44m" /*BLU*/ #define Bmagenta "\e[45m" /*MAGENTA*/ #define Bacqua "\e[46m" /*ACQUA*/ #define Bbianco "\e[47m" /*BIANCO*/ /*Definizione 7 colori Foreground*/ #define Nero "\e[30m" /*NERO*/ #define Rosso "\e[31m" /*ROSSO*/ #define Verde "\e[32m" /*VERDE*/ #define Giallo "\e[33m" /*GIALLO*/ #define Blu "\e[34m" /*BLU*/ #define Magenta "\e[35m" /*MAGENTA*/ #define Acqua "\e[36m" /*ACQUA*/ #define Bianco "\e[37m" /*BIANCO*/ #ifndef Cls #define Cls() printf("\e[2J\e[H") #endif #ifndef Fcls #define Fcls() fprintf(stderr,"\033[2J\033[H") #endif /*Clear Screen!*/ #ifndef cls #define cls() printf("\e[2J\e[H") #endif #ifndef fcls #define fcls() fprintf(stderr,"\033[2J\033[H") #endif /** * Real Programmers aren't afraid to use GOTO's. * Real Programmers can write five-page-long DO loops without getting confused. * Real Programmers like Arithmetic IF statements-- they make the code more interesting. * Real Programmers write self-modifying code, especially if they can save 20 nanoseconds in the middle of a tight loop. * Real Programmers don't need comments--the code is obvious. **/


