Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - andres_jk

#1
Programación C/C++ / Re: [Capitulo III]Threads.
28 Octubre 2010, 15:41 PM
excelente :D, solo que el primer ejemplo cuando lo pongo me tira un error
"undefined reference to `_imp__pthread_create'" en C::B, O:,

Saludos!
#2
Bueno, ya lo arregle, este e smi nuevo codigo, xdd.

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>


struct cuerpo
{
   char sprite;
   int x, y;
};

struct plano
{
   char sprite;
   int x, y;
};

struct proy
{
   char sprite;
   int x, y;
   int rango;
};


int main()
{
   int m, n, i, j, k, l, e=30, b=3;
   char c;
   struct cuerpo nave, player;
   struct proy bala;
   struct plano a[20][20];


   nave.sprite=1;
   player.sprite=2;
   bala.sprite='`';
   bala.rango=5;

   void start()
   {
       for(i=0; i<20; i++)
       {
           for(j=0; j<20; j++)
           {
               a[i][j].sprite=' ';
               a[i][j].x=i;
               a[i][j].y=j;
           }
       }
   }

   void pspawn()
   {
       player.x=19;
       player.y=10;
   }
   void bspawn()
   {
       bala.x=player.x-1;
       bala.y=player.y;
   }

   void ppos()
   {
       a[player.x][player.y].sprite=player.sprite;
   }
   void bpos()
   {
       a[bala.x][bala.y].sprite=bala.sprite;
   }
   void epos()
   {
       for(l=0; l<20; l++)
       {
           a[0][l].sprite=nave.sprite;
       }
   }

   void chkp()
   {
       if(player.x==0)
       {
           m=player.y;
           pspawn();
           b--;
           a[0][m].sprite='X';
       }
   }
   void chke()
   {
       if(bala.x==0)
       {
           m=bala.y;
           bspawn();
           a[0][m].sprite='X';
       }
   }

   void disp()
   {
       system("cls");
       for(i=0; i<20; i++)
       {
           for(j=0; j<20; j++)
           {
               if(i==player.x && j==player.y)
               {
                   ppos();
               }
               else if (i==bala.x && j==bala.y)
               {
                   bpos();
               }
               else if (a[i][j].sprite!=nave.sprite && a[i][j].sprite!='X')
               {
                   a[i][j].sprite=' ';
               }
               printf("%c ", a[i][j].sprite);
           }
           printf("\n");
       }
       printf("\nVidas: %i Ammo: %i\n", b, e);
   }

   void mov()
   {
       c='1';
       k=0;
       c=getch();

       switch(c)
       {
       case 'w':
           if(player.x>0)
               player.x=(player.x)-1;
           break;

       case 'd':
           if(player.y<19)
               player.y=(player.y)+1;
           break;

       case 's':
           if(player.x<19)
               player.x=(player.x)+1;
           break;

       case 'a':
           if(player.y>0)
               player.y=(player.y)-1;
           break;
       case ' ':
           bala.x=player.x-1;
           bala.y=player.y;
           a[bala.x][bala.y].sprite='*';
           while(k<bala.rango)
           {
               bala.x=bala.x-1;
               chke();
               disp();
               k++;
           }
           e--;
           break;

       default:
           break;
       }
   }

   start();
   epos();
   pspawn();
   disp();

   while(b!=0 && e!=0)
   {
       disp();
       mov();
       chkp();
       bspawn();
   }

   if(b==0 || e==0)
    {
       system("cls");
       printf("\t\t\tGAME OVER!\n\n");
    }

   system("pause");
   return 0;
}
#3
Cita de: do-while en 27 Octubre 2010, 02:56 AM
¡Buenas!

¡¡¡¡Olvida el goto!!!!, haz el programa utilizando programacion estructurada (estructuras de control) y luego lo vuelves a colgar.

¡Saludos!

Gracias, pero sin el goto pasa lo mismo, yo creo que tiene que ver con el teclado, sabes alguna otra forma de identificar si apreto una tecla o no?.

Saludos!
#4
Hola, estoy aprendiendo a programar en C y queria hacer un jueguito pero tengo un problema con el movimiento que derrepente se hecha  a perder, le meti fflush por todas partes y ni asi se arreglo, xdd, asi que no he seguido avanzando. Por favor si alguien lo puede revisar y hecharme una manito :).

(Como hago un spoiler?? :D?)


Este es el codigo.

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>


struct nave{
      char sprite;
      int x, y;
      };

int main(){
   int i, j, b=3;
   char a[20][20];
   char c;

start:
struct nave nave1;
      nave1.sprite=1;
      nave1.x=9;
      nave1.y=9;

struct nave nave2;
      nave2.sprite=2;
      nave2.x=3;
      nave2.y=3;

while(b!=0){
   for(i=0; i<20;i++){
            for(j=0; j<20; j++){
                     if(i==nave1.y && j==nave1.x && i==nave2.y && j==nave2.x){
                          b--;
                          system("cls");
                          goto start;
                          }
                     else if(i==nave1.y && j==nave1.x){
                                   a[i][j]=nave1.sprite;
                                   }
                     else if(i==nave2.y && j==nave2.x){
                                   a[i][j]=nave2.sprite;
                                   }
                     
                     else{
                          a[i][j]=' ';
                          }
                         
                           printf("%c ", a[i][j]);
                           }
                           printf("\n");
                           }
                           printf("\nVidas: %i\n", b);
                         
                         
                          system("pause");           //probe con getch() pero agrava el bug
                         
                          if(GetKeyState(38))        //37-40 son las flechitas
                          if(nave1.y>0)
                          nave1.y=nave1.y-1;
                         
                          if(GetKeyState(40))
                          if(nave1.y<19)
                          nave1.y=nave1.y+1;
                         
                          if(GetKeyState(37))
                          if(nave1.x>0)
                          nave1.x=nave1.x-1;
                         
                          if(GetKeyState(39))
                          if(nave1.x<19)
                          nave1.x=nave1.x+1;
                                               
                         
                     system("cls");                    
}
printf("\t\t\tGAME OVER!\n\n");
   
system("pause");
return 0;
}