Advertisement
lucasiano97

Tetris

Jan 23rd, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void generacampo(char campo[][12]);
  6. void visualizzacampo(char campo[][12],int righe,int colonne);
  7. int main()
  8. {
  9.     char campo[20][12];
  10.     char cubo[2][2] ={{'X','X'},{'X','X'}};
  11.     char linea[3] = {'X','X','X'};
  12.     int i,j;
  13.     int rigacubo,colonnacubo;
  14.     int colonnalinea,rigalinea;
  15.     srand(time(NULL));
  16.     generacampo(campo);
  17.     int scelta = 0;
  18.     int rigaverifica =1;
  19.     int npezzi = 0;
  20.     int qualepezzo = 0;
  21.     int punti = 0;
  22.     int verificarigapiena = 0;
  23.  
  24.  
  25.  
  26. do{
  27.     qualepezzo = rand()%2+1;
  28.     //riga
  29.     if(qualepezzo == 1){
  30.         colonnalinea = rand()%8 + 1; //genera una colonna compresa tra 1 e 8
  31.         rigalinea = 1;
  32.         rigaverifica = 1;
  33.         if((campo[rigalinea+1][colonnalinea] = ' ')||(campo[rigalinea+1][colonnalinea+1] == ' ')||(campo[rigalinea+1][colonnalinea+2] == ' ')){
  34.             campo[rigalinea][colonnalinea] = linea[0];
  35.             campo[rigalinea][colonnalinea+1] = linea[1];
  36.             campo[rigalinea][colonnalinea+2] = linea[2];
  37.         }
  38.         visualizzacampo(campo,20,12);
  39.         do{
  40.             do{
  41.                 printf("Premi 1 per far scendere il pezzo\n");
  42.                 printf("Premi 2 per spostare a sinistra il pezzo\n");
  43.                 printf("Premi 3 per spostare a destra il pezzo\n");
  44.                 printf("Premi 4 per ruotare il pezzo\n");
  45.                 scanf("%d\n",&scelta);
  46.             }while(scelta <= 0 || scelta > 4);
  47.             if(scelta == 1){
  48.                 if(campo[rigalinea][colonnalinea] == 'X' && campo[rigalinea][colonnalinea+1] == 'X' && campo[rigalinea][colonnalinea+2] == 'X'){
  49.                     if(campo[rigalinea+1][colonnalinea] == 'X' || campo[rigalinea+1][colonnalinea+1] == 'X' || campo[rigalinea+1][colonnalinea+2] == 'X'){
  50.                         break;
  51.                     }
  52.                     campo[rigalinea][colonnalinea] = ' ';
  53.                     campo[rigalinea][colonnalinea+1] = ' ';
  54.                     campo[rigalinea][colonnalinea+2] = ' ';
  55.                     campo[rigalinea+1][colonnalinea] = linea[0];
  56.                     campo[rigalinea+1][colonnalinea+1] = linea[1];
  57.                     campo[rigalinea+1][colonnalinea+2] = linea[2];
  58.                     rigalinea++;
  59.                     rigaverifica++;
  60.                 }else{
  61.                 if(campo[rigalinea][colonnalinea+3] == 'X'){
  62.                     break;
  63.                 }
  64.                     if(campo[rigalinea+3][colonnalinea] == ' '){
  65.                         campo[rigalinea][colonnalinea] = ' ';
  66.                         campo[rigalinea+3][colonnalinea] = 'X';
  67.                         rigalinea++;
  68.                         rigaverifica++;
  69.                     }
  70.                 }
  71.             }
  72.             if(scelta == 2){
  73.                 if(campo[rigalinea][colonnalinea] == 'X' && campo[rigalinea][colonnalinea+1] == 'X' && campo[rigalinea][colonnalinea+2] == 'X'){
  74.                     if(campo[rigalinea][colonnalinea-1] == ' '){
  75.                         campo[rigalinea][colonnalinea+2] = ' ';
  76.                         campo[rigalinea][colonnalinea-1] = 'X';
  77.                         colonnalinea = colonnalinea -1;
  78.                     }else{
  79.                         printf("Impossibile spostare a sinistra\n");
  80.                     }
  81.                 }else{
  82.             if(campo[rigalinea][colonnalinea-1] == ' '){
  83.                 campo[rigalinea][colonnalinea] = ' ';
  84.                 campo[rigalinea+1][colonnalinea] = ' ';
  85.                 campo[rigalinea+2][colonnalinea] = ' ';
  86.                 campo[rigalinea][colonnalinea-1] = 'X';
  87.                 campo[rigalinea+1][colonnalinea-1] = 'X';
  88.                 campo[rigalinea+2][colonnalinea-1] = 'X';
  89.                 colonnalinea = colonnalinea-1;
  90.             }else{
  91.                 printf("Impossibile spostare a sinsitra\n");
  92.             }
  93.           }
  94.         }
  95.         if(scelta == 3){
  96.             if(campo[rigalinea][colonnalinea] == 'X' && campo[rigalinea][colonnalinea+1] == 'X' && campo[rigalinea][colonnalinea+2] == 'X')
  97.                 if(campo[rigalinea][colonnalinea+3] == ' '){
  98.                     campo[rigalinea][colonnalinea] = ' ';
  99.                     campo[rigalinea][colonnalinea+3] = 'X';
  100.                     colonnalinea = colonnalinea+1;
  101.                 }else{
  102.                     printf("Impossibile spostare a destra\n");
  103.                 }
  104.         else{
  105.              if(campo[rigalinea][colonnalinea+1] == ' '){
  106.                 campo[rigalinea][colonnalinea] = ' ';
  107.                 campo[rigalinea+1][colonnalinea] = ' ';
  108.                 campo[rigalinea+2][colonnalinea] = ' ';
  109.                 campo[rigalinea][colonnalinea+1] = 'X';
  110.                 campo[rigalinea+1][colonnalinea+1] = 'X';
  111.                 campo[rigalinea+2][colonnalinea+1] = 'X';
  112.                 colonnalinea = colonnalinea+1;
  113.             }else{
  114.                 printf("Impossibile spostare a destra\n");
  115.             }
  116.         }
  117.         }
  118.         if (scelta == 4){
  119.             if(campo[rigalinea][colonnalinea] == 'X' && campo[rigalinea][colonnalinea+1] == 'X' && campo[rigalinea][colonnalinea+2] == 'X'){
  120.                 if((campo[rigalinea+1][colonnalinea] == ' ')||(campo[rigalinea+2][colonnalinea])== ' '){
  121.                     campo[rigalinea][colonnalinea+1] = ' ';
  122.                     campo[rigalinea][colonnalinea+2] = ' ';
  123.                     campo[rigalinea+1][colonnalinea] = 'X';
  124.                     campo[rigalinea+2][colonnalinea] = 'X';
  125.                     rigaverifica = rigaverifica+2;
  126.                 }
  127.             }
  128.             else{
  129.                 if((campo[rigalinea][colonnalinea+1] == ' ')||(campo[rigalinea][colonnalinea+2])== ' '){
  130.                     campo[rigalinea+1][colonnalinea] = ' ';
  131.                     campo[rigalinea+2][colonnalinea] = ' ';
  132.                     campo[rigalinea][colonnalinea+1] = 'X';
  133.                     campo[rigalinea][colonnalinea+2] = 'X';
  134.                     rigaverifica = rigaverifica-2;
  135.                     }
  136.                 }
  137.             }
  138.             visualizzacampo(campo,20,12);
  139.             scelta = -1;
  140.         }while(rigaverifica<18);
  141.     }
  142.     if(qualepezzo == 2){
  143.     //cubo
  144.         colonnacubo = rand()%9 + 1; //genera una colonna compresa tra 1 e 9
  145.         rigacubo = 1;
  146.         if((campo[rigacubo+1][colonnacubo] = ' ')||(campo[rigacubo+1][colonnacubo+1] == ' ')){
  147.             campo[rigacubo][colonnacubo] = cubo[0][0];
  148.             campo[rigacubo+1][colonnacubo] = cubo[1][0];
  149.             campo[rigacubo][colonnacubo+1] = cubo[0][1];
  150.             campo[rigacubo+1][colonnacubo+1] = cubo[1][1];
  151.         }
  152.         visualizzacampo(campo,20,12);
  153.         do{
  154.             do{
  155.                 printf("Premi 1 per far scendere il pezzo\n");
  156.                 printf("Premi 2 per spostare a sinistra il pezzo\n");
  157.                 printf("Premi 3 per spostare a destra il pezzo\n");
  158.                 scanf("%d\n",&scelta);
  159.             }while(scelta <= 0 || scelta > 3);
  160.             if(scelta == 1){
  161.                 if(campo[rigacubo+2][colonnacubo] == 'X' || campo[rigacubo+2][colonnacubo+1] == 'X'){
  162.                     break;
  163.                 }
  164.                 if(campo[rigacubo+2][colonnacubo] == ' ' && campo[rigacubo+2][colonnacubo+1] == ' '){
  165.                     campo[rigacubo][colonnacubo] = ' ';
  166.                     campo[rigacubo+2][colonnacubo] = 'X';
  167.                     campo[rigacubo][colonnacubo+1] = ' ';
  168.                     campo[rigacubo+2][colonnacubo+1] = 'X';
  169.                     rigacubo++;
  170.                 }
  171.             }
  172.             if(scelta == 2){
  173.                 if(campo[rigacubo][colonnacubo-1] == ' '){
  174.                     campo[rigacubo][colonnacubo+1] = ' ';
  175.                     campo[rigacubo+1][colonnacubo+1] = ' ';
  176.                     campo[rigacubo][colonnacubo-1] = 'X';
  177.                     campo[rigacubo+1][colonnacubo-1] = 'X';
  178.                     colonnacubo = colonnacubo -1;
  179.                 }else{
  180.                     printf("Impossibile spostare a sinistra\n");
  181.                 }
  182.             }
  183.             if(scelta == 3){
  184.                 if(campo[rigacubo][colonnacubo+2] == ' '){
  185.                     campo[rigacubo][colonnacubo] = ' ';
  186.                     campo[rigacubo+1][colonnacubo] = ' ';
  187.                     campo[rigacubo][colonnacubo+2] = 'X';
  188.                     campo[rigacubo+1][colonnacubo+2] = 'X';
  189.                     colonnacubo = colonnacubo +1;
  190.                 }else{
  191.                     printf("Impossibile spostare a destra\n");
  192.                 }
  193.             }
  194.             visualizzacampo(campo,20,12);
  195.             scelta = -1;
  196.         }while(rigacubo<17);
  197.     }
  198.     int contc;
  199.  
  200.     for(i=18;i>0;i--){
  201.         for(j=1;j<11;j++){
  202.             if(campo[i][j] == 'X'){
  203.                 verificarigapiena++;
  204.             }
  205.             if(verificarigapiena == 10){
  206.                 punti++;
  207.                 for(j=1;j<11;j++){
  208.                     campo[i][j] = ' ';
  209.                 }
  210.                 for(contc=i;contc>1;contc--){
  211.                     for(j=1;j<11;j++){
  212.                         campo[contc][j] = campo[contc-1][j-1];
  213.                     }
  214.                 }
  215.             }
  216.         }
  217.         verificarigapiena = 0;
  218.     }
  219.     printf("Punti: %d\n",punti);
  220. }while(npezzi <20 || punti <10);
  221.     system("pause");
  222.     return 0;
  223. }
  224.  
  225. //funzioni
  226.  
  227. void generacampo(char campo[][12]){
  228.     int i,j;
  229.     for(i=0;i<20;i++){
  230.         for(j=0;j<12;j++){
  231.             campo[i][j] = ' ';
  232.         }
  233.     }
  234.     for(j=0;j<12;j++){
  235.         campo[0][j] = '0';
  236.         campo[19][j]= '0';
  237.     }
  238.     for(i=0;i<20;i++){
  239.         campo[i][0] = '0';
  240.         campo[i][11] = '0';
  241.     }
  242. }
  243.  
  244. void visualizzacampo(char campo[][12],int righe,int colonne){
  245. int i,j;
  246.     for(i=0;i<righe;i++){
  247.         for(j=0;j<colonne;j++){
  248.             printf("%c",campo[i][j]);
  249.         }
  250.         printf("\n");
  251.     }
  252.  
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement