|
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define ESC 27
void BuildCampo();
void gotoxy(int x, int y);
int main()
{
int tasto=0,riga1=14,riga2=14,riga3=14,col1=10,col2=8,col3=6,v1=0,v2=0,v3=0,k1=0,k2=0,k3=0;
int vel1=0,vel2=0,vel3=0,giri1=0,fgiri1=0,giri2=-0,fgiri2=0,giri3=-0,fgiri3=0,turno=0,giri=0;
int benz1=0,benz2=0,benz3=0,turn1=0,turn2=0,turn3=0,benzmin=0,i=0,min=0,t=0;
srand(time(NULL));
BuildCampo();
benz1 = 3 + rand() % 3;
benz2 = 3 + rand() % 3;
benz3 = 3 + rand() % 3;
do
{
if(kbhit()) tasto = getch();
if(t==0)
{
gotoxy (col1 , riga1 ); printf(" ");
gotoxy (col2 , riga2 ); printf(" ");
gotoxy (col3 , riga3 ); printf(" ");
riga1 += v1; riga2 += v2; riga3 += v3;
col1 += k1; col2 += k2; col3 += k3;
gotoxy (col1 ,riga1 ); printf("X");
gotoxy (col2 ,riga2 ); printf("Y");
gotoxy (col3 ,riga3 ); printf("Z");
gotoxy (0 ,0 ); printf(" X(%d,%d) Y(%d,%d) Z(%d,%d) ", col1 , riga1 , col2 , riga2 , col3 , riga3 );
gotoxy (0 ,1 ); printf(" vX:%d kX:%d vY:%d kY:%d vZ:%d kZ:%d giriX:%d giriY:%d giriZ:%d giri:%d turno: %d ", v1 , k1 , v2 , k2 , v3 , k3 , giri1 ,giri2 ,giri3 ,giri , turno );
gotoxy (0 ,2 ); printf("benzX:%d benzY:%d benzZ:%d benzmin:%d ",benz1 ,benz2 ,benz3 ,benzmin );
if(giri1 >= giri2 && giri1 >= giri3) { giri = giri1; }
else if(giri2 >= giri1 && giri2 >= giri3) { giri = giri2; }
else if(giri3 >= giri1 && giri3 >= giri2) { giri = giri3; }
if(giri1 <= giri2 && giri1 <= giri3) min = giri1;
else if(giri2 <= giri2 && giri2 <= giri3) min = giri2;
else if(giri3 <= giri1 && giri3 <= giri2) min = giri3;
if(benz1 <= benz2 && benz1 <= benz3) benzmin = benz1;
else if(benz2 <= benz1 && benz2 <= benz3) benzmin = benz2;
else if(benz3 <= benz1 && benz3 <= benz2) benzmin = benz3;
if(benz1 > 0 && giri1 < 20)
{
vel1 = 2 + rand() % 5;
if(benz1 == benzmin && giri1 == min) if(vel1 < 6) vel1++;
if(riga1 <= 12 && col1 <= 61) { if(fgiri1 == 1) { giri1++; benz1--; fgiri1 = 0;} v1 = 0; k1 = vel1; }
if(riga1 > 15 && col1 >= 10) { fgiri1 = 1; k1 = -vel1; v1 = 0; }
if(col1 > 61 && riga1 <= 16) { k1 = 0; v1 = vel1; }
if(col1 < 17 && riga1 >= 13) { k1 = 0; v1 = -vel1;}
}
else
{
if(turn1 == 1)
{
benz1 = 3 + rand() % 3;
turn1 = 0;
}
else { turn1 = 1; k1 = 0; v1 = 0; }
}
if(benz2 > 0 && giri2 < 20)
{
vel2 = 2 + rand() % 5;
if(benz2 == benzmin && giri2 == min) if(vel2 < 6) vel2++;
if(riga2 <= 12 && col2 <= 61) { if(fgiri2 == 1) { giri2++; benz2--; fgiri2 = 0;} v2 = 0; k2 = vel2; }
if(riga2 > 15 && col2 >= 10) { fgiri2 = 1; k2 = -vel2; v2 = 0; }
if(col2 > 61 && riga2 <= 16) { k2 = 0; v2 = vel2; }
if(col2 < 17 && riga2 >= 13) { k2 = 0; v2 = -vel2;}
}
else
{
if(turn2 == 1)
{
benz2 = 3 + rand() % 3;
turn2 = 0;
}
else { turn2 = 1; k2 = 0; v2 = 0; }
}
if(benz3 > 0 && giri3 < 20)
{
vel3 = 2 + rand() % 5;
if(benz3 == benzmin && giri3 == min) if(vel3 < 6) vel3++;
if(riga3 <= 12 && col3 <= 61) { if(fgiri3 == 1) { giri3++; benz3--; fgiri3 = 0;} v3 = 0; k3 = vel3; }
if(riga3 > 15 && col3 >= 10) { fgiri3 = 1; k3 = -vel3; v3 = 0; }
if(col3 > 61 && riga3 <= 16) { k3 = 0; v3 = vel3; }
if(col3 < 17 && riga3 >= 13) {k3 = 0; v3 = -vel3;}
}
else
{
if(turn3 == 1)
{
benz3 = 3 + rand() % 3;
turn3 = 0;
}
else { turn3 = 1; k3 = 0; v3 = 0; }
}
if(giri1 < 20 || giri2 < 20 || giri3 < 20)
{
if(giri1 >= 20 && giri2 < 20 && giri3 < 20)
{
}
else if(giri2 >= 20 && giri1 < 20 && giri3 < 20)
{
}
else if(giri3 >= 20 && giri1 < 20 && giri2 < 20)
{
}
turno++;
}
else tasto = ESC;
t=1200;
}else t--;
} while(tasto != ESC);
getch();
return 0;
}
void BuildCampo()
{
int i;
system("color F0");
//Angoli circuto
///--------------------------------
//Angoli Circuito interno
//----------------
//Creazione righe circuito orizzontali
for(i=5; i<74; i++)
{
if(i <=60 && i >= 18 ) { gotoxy (i , 13 ); printf("Ü"); }
if(i <=60 && i >= 18 ) { gotoxy (i , 15 ); printf("Ü"); }
}
//------------------------------------------------------------
//Creazione righe circuito verticali
for(i=4; i<23; i++)
{
}
//----------------------
}
void gotoxy(int x,int y)
{
COORD coor;
HANDLE hOutput;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
coor.X = x;
coor.Y = y;
SetConsoleCursorPosition(hOutput,coor);
}
|
|