Autor Tema: ayuda con errores de estructuras en pic para hacer un tetris con matrices 7*5.  (Leído 1020 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado GastonPeredo

  • PIC10
  • *
  • Mensajes: 2
Bueno, ya la verdad intente realizar cualquier cosa para arreglarlo, lo minimo que consegui fueron 4 errores consecutivos, pero cambiando una o dos cosas me salta desde 32 a 56 errores, aunque la mayoria siempre son en dos o tres lineas del codigo. Alguien podria ver mi programa y decirme que tengo que cambiar para que me compile ? ahora como esta el programa, el pic c compiler directamente me crashea.




#include <18f452.h>
#use delay(clock=4M)
#fuses XT,NOWDT
#use standard_io(a)
#use standard_io(b)
#use standard_io(c)
#use standard_io(d)
#use standard_io(e)
#DEFINE APA1 output_c(0b11111111);
#DEFINE APA2 output_d(0b11111111);
#DEFINE APA3 output_b(0b11111111);

struct cord{
const int x;
const int y;
};
struct pieza {
struct cord orig;
struct cord perif[3];
};

void tm(){delay_ms(10);}
void tm2(){delay_ms(150);}

void cuadradoc(int x, int y){
char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};

output_c(vecx
  • );output_a(vecy[y]);tm();APA1;APA2;APA3;

}
void cuadradod(int x, int y){
char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};

output_d(vecx
  • );output_a(vecy[y]);tm();APA1;APA2;APA3;

}
void cuadradob(int x, int y){
char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};

output_b(vecx
  • );output_a(vecy[y]);tm();APA1;APA2;APA3;

}

void pintapiezac(struct pieza P){
 
 int i;
 cuadradoc(P.orig.x,P.orig.y);
 for(i=0;i<3;i++){
 cuadradoc(P.orig.x+P.perif.x,P.orig.y+P.perif.y);
 }}
struct cord rotaderecha(struct cord c){

struct cord ret={-c.y,c.x};
 return ret;
}
 void rotaderecha(struct pieza P){
 int i;
for(i=0;i<3;i++){
P.perif=rotaderecha(P.perif);
}
 }
 
void main(){
while(true){
struct pieza s1={{2,2},{{-1,-1},{0,-1},{1,0}}};
rotaderecha(s1);
pintapiezac(s1);
}
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: ayuda con errores de estructuras en pic para hacer un tetris con matrices 7*5.
« Respuesta #1 en: 25 de Septiembre de 2015, 12:28:37 »
uff lo complicado que algunos se hacen los programas para algo que parece tan simple.

#DEFINE APA1 output_c(0b11111111);
#DEFINE APA2 output_d(0b11111111);
#DEFINE APA3 output_b(0b11111111);

quitale los ; a eso

Por que ya lo tienen:
APA1;APA2;APA3;

Tu programa tabulado es mas facil de encontrar el error:

Código: C
  1. #include <18f452.h>
  2. #use delay(clock=4M)
  3. #fuses XT,NOWDT
  4. #use standard_io(a)
  5. #use standard_io(b)
  6. #use standard_io(c)
  7. #use standard_io(d)
  8. #use standard_io(e)
  9. #DEFINE APA1 output_c(0b11111111);
  10. #DEFINE APA2 output_d(0b11111111);
  11. #DEFINE APA3 output_b(0b11111111);
  12.  
  13. struct cord{
  14.         const int x;
  15.         const int y;
  16. };
  17. struct pieza {
  18.         struct cord orig;
  19.         struct cord perif[3];
  20. };
  21.  
  22. void tm(){delay_ms(10);}
  23. void tm2(){delay_ms(150);}
  24.  
  25. void cuadradoc(int x, int y){
  26.         char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
  27.         char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};
  28.  
  29.         output_c(vecx[x]);
  30.         output_a(vecy[y]);
  31.         tm();
  32.         APA1;
  33.         APA2;
  34.         APA3;
  35. }
  36.  
  37. void cuadradod(int x, int y){
  38.         char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
  39.         char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};
  40.  
  41.         output_d(vecx[x]);
  42.         output_a(vecy[y]);
  43.         tm();
  44.         APA1;
  45.         APA2;
  46.         APA3;
  47. }
  48.  
  49. void cuadradob(int x, int y){
  50.         char vecx[7]={0b00111111,0b01011111,0b01101111,0b01110111,0b01111011,0b01111101,0b01111110};
  51.         char vecy[5]={0b00000001,0b00000010,0b00000100,0b00001000,0b00100000};
  52.  
  53.         output_b(vecx[x]);
  54.         output_a(vecy[y]);
  55.         tm();
  56.         APA1;
  57.         APA2;
  58.         APA3;
  59. }
  60.  
  61. void pintapiezac(struct pieza P){
  62.  
  63.         int i;
  64.         cuadradoc(P.orig.x,P.orig.y);
  65.         for(i=0;i<3;i++){
  66.                 cuadradoc(P.orig.x+P.perif[i].x,P.orig.y+P.perif[i].y);
  67.         }
  68. }
  69.  
  70. struct cord rotaderecha(struct cord c){
  71.  
  72.         struct cord ret={-c.y,c.x};
  73.         return ret;
  74. }
  75.  
  76. void rotaderecha(struct pieza P){
  77.         int i;
  78.         for(i=0;i<3;i++){
  79.                 P.perif[i]=rotaderecha(P.perif[i]);
  80.         }
  81. }
  82.  
  83. void main(){
  84.  
  85.         while(true){
  86.                 struct pieza s1={{2,2},{{-1,-1},{0,-1},{1,0}}};
  87.                 rotaderecha(s1);
  88.                 pintapiezac(s1);
  89.         }
  90. }

Desconectado GastonPeredo

  • PIC10
  • *
  • Mensajes: 2
Re: ayuda con errores de estructuras en pic para hacer un tetris con matrices 7*5.
« Respuesta #2 en: 25 de Septiembre de 2015, 13:10:50 »
Ojala fuera simple jajajaj el programa muy bien le saque las comillas (aunque no importaba ya compilaba antes), después gracias por la tabulacion, aunque sigo encontrando los problemas.
la parte:-------------------------------------------- si le pongo barras laterales como comentario a lo que hay adentro de la funcion y al principio le quito los const a los int x,y , compila lo mas bien.

           struct cord rotaderecha(struct cord c){
 
               struct cord ret={-c.y,c.x};
               return ret;
               }

Gracias igual.