Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Corsa 3 Auto - prova.c

prova.c

Caricato da: Carmine
Scarica il programma completo

  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5. #include <time.h>
  6.  
  7. #define ESC 27
  8.                
  9. void BuildCampo();
  10. void gotoxy(int x, int y);
  11.  
  12. int main()
  13. {
  14.     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;
  15.     int vel1=0,vel2=0,vel3=0,giri1=0,fgiri1=0,giri2=-0,fgiri2=0,giri3=-0,fgiri3=0,turno=0,giri=0;
  16.     int benz1=0,benz2=0,benz3=0,turn1=0,turn2=0,turn3=0,benzmin=0,i=0,min=0,t=0;
  17.     srand(time(NULL));
  18.    
  19.     BuildCampo();
  20.     benz1 = 3 + rand() % 3;
  21.     benz2 = 3 + rand() % 3;
  22.     benz3 = 3 + rand() % 3;
  23.    
  24.    
  25.  
  26.     do
  27.     {  
  28.        
  29.         if(kbhit()) tasto = getch();
  30.         if(t==0)
  31.         {
  32.             gotoxy(col1, riga1); printf(" ");
  33.             gotoxy(col2, riga2); printf(" ");
  34.             gotoxy(col3, riga3); printf(" ");
  35.        
  36.             riga1 += v1; riga2 += v2; riga3 += v3;
  37.             col1 += k1; col2 += k2;  col3 += k3;
  38.        
  39.             gotoxy(col1,riga1); printf("X");
  40.             gotoxy(col2,riga2); printf("Y");
  41.             gotoxy(col3,riga3); printf("Z");
  42.          
  43.    
  44.        
  45.             gotoxy(0,0); printf(" X(%d,%d) Y(%d,%d) Z(%d,%d) ", col1, riga1, col2, riga2, col3, riga3);
  46.             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);
  47.             gotoxy(0,2); printf("benzX:%d benzY:%d benzZ:%d benzmin:%d     ",benz1,benz2,benz3,benzmin);
  48.        
  49.             if(giri1 >= giri2 && giri1 >= giri3)      { giri = giri1; }
  50.             else if(giri2 >= giri1 && giri2 >= giri3) { giri = giri2; }
  51.             else if(giri3 >= giri1 && giri3 >= giri2) { giri = giri3; }
  52.        
  53.             if(giri1 <= giri2 && giri1 <= giri3) min = giri1;
  54.             else if(giri2 <= giri2 && giri2 <= giri3) min = giri2;
  55.             else if(giri3 <= giri1 && giri3 <= giri2) min = giri3;
  56.        
  57.             if(benz1 <= benz2 && benz1 <= benz3) benzmin = benz1;
  58.             else if(benz2 <= benz1 && benz2 <= benz3) benzmin = benz2;
  59.             else if(benz3 <= benz1 && benz3 <= benz2) benzmin = benz3;
  60.        
  61.             if(benz1 > 0 && giri1 < 20)
  62.             {
  63.            
  64.                 vel1 = 2 + rand() % 5;
  65.                 if(benz1 == benzmin && giri1 == min) if(vel1 < 6) vel1++;
  66.                 if(riga1 <= 12 && col1 <= 61) { if(fgiri1 == 1) { giri1++; benz1--; fgiri1 = 0;} v1 = 0; k1 = vel1; }
  67.                 if(riga1 > 15 && col1 >= 10) { fgiri1 = 1; k1 = -vel1; v1 = 0; }        
  68.                 if(col1 > 61 && riga1 <= 16) { k1 = 0; v1 = vel1; }
  69.                 if(col1 < 17 && riga1 >= 13) {  k1 = 0; v1 = -vel1;}
  70.             }
  71.             else
  72.             {
  73.                 if(turn1 == 1)
  74.                 {
  75.                     benz1 = 3 + rand() % 3;
  76.                     turn1 = 0;
  77.                 }
  78.                 else { turn1 = 1; k1 = 0; v1 = 0; }
  79.             }
  80.        
  81.             if(benz2 > 0 && giri2 < 20)
  82.             {
  83.                 vel2 = 2 + rand() % 5;
  84.                 if(benz2 == benzmin && giri2 == min) if(vel2 < 6) vel2++;
  85.                 if(riga2 <= 12 && col2 <= 61) { if(fgiri2 == 1) { giri2++; benz2--; fgiri2 = 0;}  v2 = 0; k2 = vel2; }
  86.                 if(riga2 > 15 && col2 >= 10) {  fgiri2 = 1; k2 = -vel2; v2 = 0; }
  87.                 if(col2 > 61 && riga2 <= 16) { k2 = 0; v2 = vel2; }
  88.                 if(col2 < 17 && riga2 >= 13) { k2 = 0; v2 = -vel2;}
  89.             }
  90.             else
  91.             {  
  92.                 if(turn2 == 1)
  93.                 {
  94.                     benz2 = 3 + rand() % 3;
  95.                     turn2 = 0;
  96.                 }
  97.                 else { turn2 = 1; k2 = 0; v2 = 0; }
  98.             }
  99.        
  100.             if(benz3 > 0 && giri3 < 20)
  101.             {
  102.  
  103.                 vel3 = 2 + rand() % 5;
  104.                 if(benz3 == benzmin && giri3 == min) if(vel3 < 6) vel3++;
  105.                 if(riga3 <= 12 && col3 <= 61) {  if(fgiri3 == 1) { giri3++; benz3--; fgiri3 = 0;} v3 = 0; k3 = vel3; }
  106.                 if(riga3 > 15 && col3 >= 10) { fgiri3 = 1; k3 = -vel3; v3 = 0; }
  107.                 if(col3 > 61 && riga3 <= 16) { k3 = 0; v3 = vel3; }
  108.                 if(col3 < 17 && riga3 >= 13) {k3 = 0; v3 = -vel3;}            
  109.             }
  110.             else
  111.             {  
  112.            
  113.                 if(turn3 == 1)
  114.                 {
  115.                     benz3 = 3 + rand() % 3;
  116.                     turn3 = 0;
  117.                 }
  118.                 else {  turn3 = 1; k3 = 0; v3 = 0; }
  119.             }
  120.    
  121.        
  122.             if(giri1 < 20 || giri2 < 20 || giri3 < 20)
  123.             {
  124.                 if(giri1 >= 20 && giri2 < 20 && giri3 < 20)
  125.                 {
  126.                     printf("VINCE X");  
  127.                 }
  128.                 else if(giri2 >= 20 && giri1 < 20 && giri3 < 20)
  129.                 {
  130.                     printf("VINCE Y");
  131.                 }
  132.                 else if(giri3 >= 20 && giri1 < 20 && giri2 < 20)
  133.                 {
  134.                     printf("VINCE Z");  
  135.                
  136.                 }
  137.                 turno++;
  138.             }
  139.             else tasto = ESC;
  140.             t=1200;
  141.         }else t--;
  142.        
  143.        
  144.     } while(tasto != ESC);
  145.     getch();
  146.     return 0;
  147. }
  148.  
  149.  
  150. void BuildCampo()
  151. {
  152.     int i;
  153.     system("color F0");
  154.     //Angoli circuto
  155.     gotoxy(4,3); printf("°");
  156.     gotoxy(4,23); printf("°");
  157.     gotoxy(74,3); printf("°");
  158.     gotoxy(74,23); printf("°");
  159.     ///--------------------------------
  160.    
  161.     //Angoli Circuito interno
  162.     gotoxy(17,15); printf("°");
  163.     gotoxy(17,13); printf("°");
  164.     gotoxy(61,15); printf("°");
  165.     gotoxy(61,13); printf("°");
  166.     //----------------
  167.    
  168.     //Creazione righe circuito orizzontali
  169.     for(i=5; i<74; i++)
  170.     {
  171.         gotoxy(i, 3); printf("Ü");
  172.         gotoxy(i,23); printf("Ü");
  173.         if(i<=60 && i >= 18) { gotoxy(i, 13); printf("Ü"); }
  174.         if(i<=60 && i >= 18) { gotoxy(i, 15); printf("Ü"); }
  175.     }
  176.     //------------------------------------------------------------
  177.    
  178.     //Creazione righe circuito verticali
  179.     for(i=4; i<23; i++)
  180.     {
  181.         gotoxy(4,i); printf("Ü");
  182.         gotoxy(74,i); printf("Ü");
  183.         gotoxy(17,14); printf("Ü");
  184.         gotoxy(61,14); printf("Ü");
  185.     }
  186.     //----------------------
  187. }
  188.  
  189.  
  190.  
  191. void gotoxy(int x,int y)
  192. {
  193.     COORD coor;
  194.     HANDLE hOutput;
  195.     hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
  196.     coor.X = x;
  197.     coor.Y = y;
  198.     SetConsoleCursorPosition(hOutput,coor);
  199. }