frenk88 (Normal User)
Rookie
Messaggi: 26
Iscritto: 02/07/2009
|
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
static int __BACKGROUND = BLACK;
static int __FOREGROUND = LIGHTGRAY;
void
clrscr ()
{
DWORD written;
FillConsoleOutputAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
__FOREGROUND + (__BACKGROUND << 4), 2000, (COORD) {0, 0},
&written);
FillConsoleOutputCharacter (GetStdHandle
(STD_OUTPUT_HANDLE), ' ',
2000, (COORD) {0, 0}, &written);
gotoxy (1, 1);
}
void
gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void
textbackground (int color)
{
__BACKGROUND = color;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
__FOREGROUND + (color << 4));
}
void
textcolor (int color)
{
__FOREGROUND = color;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
color + (__BACKGROUND << 4));
}
//Grafica Quadrato
void Quadrato(char a[], int z, int p, int w)
{clrscr();
int i=1;
int color=1;
int x=40;
int y=12;
gotoxy(x,y);
cout<<a[z];
int q=w;
while(i<=p*1/p)
{q=w;
while (x<=80 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
x++;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
q=w;
while (y<=25 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
y++;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
q=w;
while (x>=0 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
x--;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
q=w;
while (y>=0 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
y--;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
i++;
}
clrscr();
gotoxy(1,1);
textcolor(7);
}
//Grafica serpente
void Serpente(char a[], int z, int w)
{clrscr();
int i=1;
int color=1;
int x=40;
int y=12;
int r;
int q=w;
gotoxy(x,y);
cout<<a[z];
while(1)
{r=rand()%4+1;
switch (r)
{case 1: q=w;
while (x<=80 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
x++;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
break;
case 2: q=w;
while (y<=25 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
y++;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
break;
case 3: q=w;
while (x>=0 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
x--;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
break;
case 4: q=w;
while (y>=0 && q>0)
{if (color>15)
color=1;
gotoxy(x,y);
textcolor(0);
cout<<a;
y--;
gotoxy(x,y);
textcolor(color);
cout<<a;
Sleep(100);
color++;
q--;}
break;
}
clrscr();
gotoxy(1,1);
textcolor(7);
}
}
//Grafica Caduta
void Caduta(char a[], int z, int p)
{clrscr();
gotoxy(40-a[z]/2,0);
cout<<a[z];
int c=1;
int x=39;
int y=1;
int j=0;
for (int i=1;i<=z;i++)
{x++;
while(j<=p)
{if (c>15)
c=1;
if (y>25)
y=0;
gotoxy(x-a[z]/2,y);
textcolor(0);
cout<<a;
j++;
y++;
gotoxy(x-a[z]/2,y);
textcolor(c);
cout<<a;
Sleep(100);
c++;}
}
clrscr();
gotoxy(1,1);
textcolor(7);
}
//Grafica contornata
void Contornata(char a[], int z, int p)
{clrscr();
int time=300;
int x=40;
int y=13;
int i=1;
int t=1;
int j=0;
int l=1;
int w;
int color=0;
char ast='*';
gotoxy(x,y);
cout<<a;
x-=1; y-=1;
while(1)
//scrittura riquadro andata
{
for (j=1;j<=p;j++)
{color++;
textcolor(color);
gotoxy(x,y);
cout<<ast;
w=1;
for (t=1;t<=2;t++)
{for (i=1;i<=z+l;i++)
{cout<<ast;
x++;}
for (i=1;i<=l+1;i++)
{y++;
gotoxy(x,y);
cout<<ast;}
for (i=1;i<=z+l;i++)
{x--;
gotoxy(x,y);
cout<<ast;}
for (i=1;i<=l+1;i++)
{y--;
gotoxy(x,y);
cout<<ast;}
if (w)
Sleep(time);
textcolor(0);
w=0;}
x--;
y--;
l+=2;
}
//scrittura riquadro ritorno
for (j=1;j<=p;j++)
{color++;
textcolor(color);
gotoxy(x,y);
cout<<ast;
w=1;
for (t=1;t<=2;t++)
{for (i=1;i<=z+l;i++)
{cout<<ast;
x++;}
for (i=1;i<=l+1;i++)
{y++;
gotoxy(x,y);
cout<<ast;}
for (i=1;i<=z+l;i++)
{x--;
gotoxy(x,y);
cout<<ast;}
for (i=1;i<=l+1;i++)
{y--;
gotoxy(x,y);
cout<<ast;}
if (w)
Sleep(time);
if (j<p)
textcolor(0);
w=0;}
x++;
y++;
l-=2;
}
}
}
main()
{
//dichiarazione variabili
int w,p,b,z=0,i=1;
char a[z];
//titolo
gotoxy(1,5);
textcolor(90);
cout<<"-------------------------------------------------------------------------------\n";
cout<<"-------------------------------------------------------------------------------\n";
cout<<"***** ***** * * ***** ***** **** ***** **** * * * ***** *****\n";
cout<<" * * * * * * * * * * * * * * * * * \n";
cout<<" * * * * * * * * * * * * * * * * * \n";
cout<<" * *** * * * **** ***** *** ***** * * *****\n";
cout<<" * * * * * ** ** * * * * * * * *\n";
cout<<" * * * * * * * * * * * * * * * * *\n";
cout<<" * ***** * * * ***** * * * * * * * * ***** *****\n";
cout<<"_______________________________________________________________________________\n";
cout<<" By \n";
cout<<" XXXXXXXXXXXXXXXXXX \n";
cout<<" XXXXXXXXXXXXXXXXXX \n";
cout<<" XXXXXXXXXXXXXXXXXX \n";
cout<<" XXXXXXXXXXXXXXXXXX \n";
cout<<"----------------------<Copyright 2006 - all rights reserved>-------------------\n";
Sleep(3000);
//immissione della frase
textcolor(7);
clrscr();
cout<<"inserire il numero di lettere: ";
cin>>z;
cout<<"inserire la frase: ";
cin>>a;
//menù di scelta grafica
while (z>=a[z])
{textcolor(7);
clrscr();
cout<<"\nScegliere la grafica per la frase inserita:\n\n1.Caduta per lettere\n2.Contornata\n3.Quadrato\n4.Serpente\n\n";
cin>>b;
//casi di scelta
switch (b)
{
case 1 : cout<<"per quanto deve cadere? (inserire un numero): ";
cin>>p;
Caduta(a,z,p);break; //caso 1: le lettere della frase cadono una alla volta con velocità diverse
case 2 : cout<<"fino a che ampiezza? (numero tra 1 e 11): ";
cin>>p;
if (p<1 || p>11)
{cout<<"errore";
Sleep(500);break;}
Contornata(a,z,p);break; //caso 2: la frase viene contornata da una cornice di asterischi che si allarga e si restringe
case 3 : cout<<"quanti giri? (inserire un numero): ";
cin>>p;
cout<<"quanto ampio? (inserire un numero): ";
cin>>w;
for (i=1;i<=p;i++)
{Quadrato(a,z,p,w);}//caso 3: la frase si sposta per lo schermo formando un quadrato
break;
case 4 : cout<<"inserire la lunghezza del segmento: ";
cin>>w;
Serpente(a,z,w);break; //caso 4: la frase si sposta per lo schermo a random
default : cout<<"errore";break;
}
}
cout<<"errore";
cin>>b;
}
|