A free template from Joomlashack

A free template from Joomlashack




Descargar todos los ejemplos c de esta web + el manual c
Moviles TDT, relojes movil, boligrafo espia y + en la Tienda de electronica

Home arrow Juegos arrow Arkanoid programado en C. Se puede compilar con Borland C++ o Turbo C
Arkanoid programado en C. Se puede compilar con Borland C++ o Turbo C PDF Imprimir E-Mail
Calificación del usuario: / 38
MaloBueno 


/*********************************/
/*                               */
/*                               */
/*     EMULACION DEL JUEGO       */
/*         \"ARKANOID\"          */
/*                               */
/*  -CREADOR POR:                */
/*                               */
/*  -DORIAN BUTRON C.            */
/*                               */
/*********************************/

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

#define tcol 50
#define tfil 50

/*Tipo de definicion para crear un registro */

typedef struct registro
{
 char nom[20];
 long int puntos;
} puntaje;

/* Funcion de ordenamieto de registro de mayor a menor segun el puntaje */

void burbuja(puntaje v[],int M)
{
 int i,j;
 puntaje p[5];

 for(i=0;i<M;i++)
  for(j=M-1;j>=0;j--)
   {
    if (v[j].puntos > v[j-1].puntos)
    {
    p[0] = v[j];
    v[j] = v[j-1];
    v[j-1] = p[0];
    }
   }
}

/* Lee el archivo creado */

int leer(puntaje v[],char arch[])
{
 int i=0;
 FILE *fp;

 fp=fopen (arch,\"rt\");

 if(fp==NULL) { printf(\"El archivo %s no existe\",arch); getch(); exit(0); }
 while(!feof(fp))
  {
   fscanf (fp,\"%s %lin\",&v[i].nom,&v[i].puntos);
   i++;
  }
 fclose (fp);
 return i;
}

/* Graba los records en el archivo */

void grabar(puntaje v[],int i,char arch[])
{
 FILE *fp;

 fp=fopen (arch,\"a\");

 if (fp==NULL) { printf(\"no se pudo abrir %s ...\",arch); getch(); exit(0);}
 fprintf (fp,\"%s %lin\",v[i].nom,v[i].puntos);
 fclose (fp);
}

/* Lee el nombre del usuario para guardarlo */

void registrar_nom(int puntos)
{
int i;
puntaje v[50];
clrscr();
i=leer(v,\"puntaje.txt\");
printf(\"nNombre: \"); scanf(\"%s\",&v[i].nom); fflush(stdin);
v[i].puntos=puntos*100;
grabar(v,i,\"puntaje.txt\");
}

/* Imprime en pantalla los records */

void ver(puntaje v[],int A)
{
 int i;
 clrscr();
 printf(\"TABLA DE PUNTAJEn\");
 for(i=0;i<A;i++)
  printf(\"n(%i) %st%litpts.\",i+1,v[i].nom,v[i].puntos);
getch();
}

/* Imprime el menu del juego y retorna un caracter */

char menu_juego()
{
 char x;
do{
 clrscr();
 {
   printf(\"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\");
 printf(\"nº      -=[ARKANOID]=-     º\");
 printf(\"nÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\");
 printf(\"nº                         º\");
 printf(\"nº 1.- Jugar               º\");
 printf(\"nº 2.- Crear Mundo         º\");
 printf(\"nº 3.- Ver Records         º\");
 printf(\"nº 4.- Salir               º\");
 printf(\"nº                         º\");
 printf(\"nÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\");
 printf(\"nº Elija una opcion[ ]     º\");
 printf(\"nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\");
 gotoxy(20,11);
 x=getch();
 }
} while(x<\'1\'||x>\'4\');
return x;
}

/* Crea los bordes del mundo, al centro espacios y bloques predeterminados */

void cargar_m1(char m[][tcol],int F,int C,int B)
{
 int i,j;

 for(i=0;i<C;i++)    m[0][i]=\'Ü\';
 for(i=1;i<F;i++)    m[i][C-1]=\'Þ\';
 for(i=0;i<C;i++)    m[F-1][i]=\'ß\';
 for(i=1;i<F-1;i++)  m[i][0]=\'Ý\';

 for(i=1;i<F-1;i++)
   for(j=1;j<C-1;j++)   m[i][j]=32;

 for(i=3;i<B;i++)
    for(j=3;j<C-3;j++)   m[i][j]=1;

}

/* Crea solo los bordes del mundo y los espacios del centro */

void cargar_m2(char m[][tcol],int F,int C)
{
 int i,j;

 for(i=0;i<C;i++)    m[0][i]=\'Ü\';
 for(i=1;i<F;i++)    m[i][C-1]=\'Þ\';
 for(i=0;i<C;i++)    m[F-1][i]=\'ß\';
 for(i=1;i<F-1;i++)  m[i][0]=\'Ý\';

 for(i=1;i<F-1;i++)
   for(j=1;j<C-1;j++)   m[i][j]=32;

}

/* Controla de que en el relleno no queden bloques y retorna 1 o 0 */

int ganador(char m[][tcol],int F,int C)
{
 int i,j;

 for(i=1;i<F-1;i++)
   for(j=1;j<C-3;j++) if(m[i][j]==1) return 0;
 return 1;
}


/* Imprime el contenido de toda la matriz */

void mostrar_m(char m[][tcol],int F,int C,long int puntos,int vidas)
{
 int i,j;
 clrscr();
 for(i=0;i<F;i++)
  {
   for(j=0;j<C;j++) printf(\"%c\",m[i][j]);


   printf(\"n\");
  }
printf(\"n< %i vidas>\",vidas);
printf(\"n< %i puntos >\",puntos*100);
}


/* Funcion para que el usuario pueda crear su mundo */

void crear_m(char m[][tcol],int F,int C)
{
 int i=1,j=1,salir,puntos=0,vidas=3;
 char c;

 m[i][j]=\'_\';

 while(1)
  {
   mostrar_m(m,F,C,puntos,vidas);

   if(kbhit())
     {
       c=getch();
       if(c==0) c=getch();
       switch(c)
  { case 75: {
       if(j>1)
      {
        if(m[i][j]!=1) m[i][j]=\' \';
        j--;
        if(m[i][j]!=1) m[i][j]=\'_\';
      }
       break;
      }
    case 77: {
       if(j<C-2) {
     if(m[i][j]!=1) m[i][j]=\' \';
     j++;
     if(m[i][j]!=1) m[i][j]=\'_\';
          }
        break;
       }
    case 72: {
       if(i>1) {
        if(m[i][j]!=1) m[i][j]=\' \';
        i--;
        if(m[i][j]!=1) m[i][j]=\'_\';
      }
       break;
      }
    case 80: {
       if(i<F-4) {
     if(m[i][j]!=1) m[i][j]=\' \';
     i++;
     if(m[i][j]!=1) m[i][j]=\'_\';
          }
        break;
       }

    case 13: { m[i][j]=1; break; }

    case 27: salir=0;
  }

       }
     if(salir==0) {if(m[i][j]!=1) m[i][j]=\' \'; break;}
   }

}


/* Funcion que le da movimiento a la bola y a la barra */

void palo_bola(char m[][tcol],int F,int C,int nivel)
{
 int li=(C/2)-1,me=(C/2),ld=(C/2)+1,x,y,b=1,salir,puntos=0,g=0,vidas;
 char c;

for(vidas=3;vidas>0;vidas--)
{
 if(g==1) break;
 if(salir==0) break;
 b=1;
 y=F-3;
 x=me;

 m[F-2][li]=\'*\';
 m[F-2][ld]=\'*\';
 m[F-2][me]=\'*\';
 m[y][x]=\'ø\';

 for(;;)
  {
   m[F-2][li]=\'*\';
   m[F-2][ld]=\'*\';
   m[F-2][me]=\'*\';
   g=ganador(m,F,C);
   mostrar_m(m,F,C,puntos,vidas);

   if(kbhit())
     {
       c=getch();
       if(c==0) c=getch();
       switch(c)
  { case 75: {
       if(li>1)
      {
        m[F-2][ld]=\' \';
        li--;
        ld--;
        me--;
      }
       break;
      }
    case 77: {
       if(ld<C-2) {
     m[F-2][li]=\' \';
     li++;
     ld++;
     me++;
    }
        break;
       }
    case 27: salir=0;
  }
      }

   if(b==1)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y--;
    if(m[y][x]==1) { puntos++; b=4+random(3); if(nivel>=5) nivel=nivel-5;}
    m[y][x]=\'ø\';
    if(y==1) b=5+random(2);
    delay(nivel);
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(b==2)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y--;
    x--;
    if(m[y][x]==1) { puntos++; b=4+random(3); if(nivel>=5) nivel=nivel-5;}
    m[y][x]=\'ø\';
    if(x==1) b=3;
    if(y==1) b=5+random(2);
    delay(nivel);
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(b==3)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y--;
    x++;
    if(m[y][x]==1) { puntos++; b=4+random(3); if(nivel>=5) nivel=nivel-5;}
    m[y][x]=\'ø\';
    if(x==C-2) b=2;
    if(y==1) b=5+random(2);
    delay(nivel);
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(b==4)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y++;
    if(m[y][x]==1) { puntos++; b=2+random(2);}
    m[y][x]=\'ø\';
    if(y==F-2&&x==me) b=1;
    if(y==F-2&&x==li) b=2;
    if(y==F-2&&x==ld) b=3;
    delay(nivel);
    if(y==F-1) {m[y][x]=\'X\'; mostrar_m(m,F,C,puntos,vidas); printf(\"perdiste\"); getch(); break;}
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(b==5)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y++;
    x--;
    if(m[y][x]==1) { puntos++; b=2;}
    m[y][x]=\'ø\';
    if(y==F-2&&x==me) b=1;
    if(y==F-2&&x==li) b=2;
    if(y==F-2&&x==ld) b=3;
    if(x==1) b=6;
    delay(nivel);
    if(y==F-1) {m[y][x]=\'X\'; mostrar_m(m,F,C,puntos,vidas); printf(\"perdiste\"); getch(); break;}
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(b==6)      {
    if(m[y][x]!=\'*\') m[y][x]=\' \';
    y++;
    x++;
    if(m[y][x]==1) { puntos++; b=3;}
    m[y][x]=\'ø\';
    if(y==F-2&&x==me) b=1;
    if(y==F-2&&x==li) b=2;
    if(y==F-2&&x==ld) b=3;
    if(x==C-2) b=5;
    delay(nivel);
    if(y==F-1) {m[y][x]=\'X\'; mostrar_m(m,F,C,puntos,vidas); printf(\"perdiste\"); getch(); break;}
    mostrar_m(m,F,C,puntos,vidas);
   }
   if(salir==0) break;
   if(g==1) { printf(\"ganaste\"); if(puntos!=0) registrar_nom(puntos); break;}
  }
 }
 if(vidas==0) registrar_nom(puntos);
}

/* Tipo de juego 1 para que los bloques se creen solos */

void tipo1(char m[][tcol])
{
 int F,C,B,nivel;
 clrscr();
 printf(\"tPRESIONE 0 PARA PARA VOLVER AL MENU\");
 printf(\"nnTama¤o de filas(10-%i): \",tfil); scanf(\"%i\",&F); fflush(stdin);
 if(F!=0)
  {
   printf(\"nTama¤o de columnas(10-%i): \",tcol); scanf(\"%i\",&C); fflush(stdin);
   if(C!=0)
    {
     do{
     printf(\"nNumero de filas de bloques(1-%i): \",F-7); scanf(\"%i\",&B); fflush(stdin);
     } while(B<0||B>F-7);
     if(B!=0) {printf(\"nElija el nivel en el que desea comenzar: \"); scanf(\"%i\",&nivel); fflush(stdin);}
    }
  }
 if(F!=0&&C!=0&&B!=0)
 {
  cargar_m1(m,F,C,B+3);
  palo_bola(m,F,C,nivel);
 }
}

/* Tipo de juego 2 donde el usuario crea sus bloques */

void tipo2(char m[][tcol])
{
 int i,F,C,nivel;
 clrscr();
 printf(\"tPRESIONE 0 PARA PARA VOLVER AL MENU\");
 printf(\"nTama¤o de filas: \"); scanf(\"%i\",&F); fflush(stdin);
 if(F!=0)
  {
   printf(\"nTama¤o de columnas: \"); scanf(\"%i\",&C); fflush(stdin);
   if(C!=0) {printf(\"nElija el nivel en el que desea comenzar: \"); scanf(\"%i\",&nivel); fflush(stdin);}
  }
 if(F!=0&&C!=0)
 {
 cargar_m2(m,F,C);
 crear_m(m,F,C);
 palo_bola(m,F,C,nivel);
 }
}

FILE *fp;

main()
{
 int i;
 puntaje v[50];
 char menu;
 char m[tfil][tcol];
 char arch[]=\"puntaje.txt\";
 randomize();

 fp=fopen (arch,\"a+\");

 if (fp==NULL) { printf(\"No se puede crear %s\",arch); getch(); exit(0); }

while(1)
{
 menu=menu_juego();
 switch(menu)
 {
  case \'1\': {
      tipo1(m);
      break;
     }

  case \'2\': {
      tipo2(m);
      break;
     }

  case \'3\': {
      i=leer(v,arch);
      burbuja(v,i);
      ver(v,i);
      break;
     }

  case \'4\': exit(0);
 }
}
fclose (fp);
}

http://www.programacion.com/codigo/73/

Comentarios
Añadir nuevo Buscar
http://www.abercrombiewienonli  - http://www.abercrombiewienonline.at/ 98708-schmuck   |112.5.234.xxx |2014-04-18 23:43:40
schmucke Einfamilie nh?F
Borse Gucci Milano  - Bracciale Tiffany Roma 68133-ore 21Romantink Spo   |110.81.12.xxx |2014-04-18 20:42:55
ore 21Romantin k
Sporting Hotell Villa MariaContr ad link:http ://www.fee ling.com.t w/node/110 150
a PetraroFra ncavilla a Mare (Pe)Niko Romito
- Reale - Rivisondol iGelato di  link:http ://www.tif fanyoutlet milano.eu/ piselli con
 pancetta croccante, Ora anche Slow
Food Abruzzo scende in campo per dare
una piccola "scoss a" positiva all'econom 
ia locale.
  dice dallalto di un albero, che di link:http ://www.tif fanyoutlet milano.eu/ a
Borse Gucci Tuscany  - http://www.tiffanyoutletmilano.eu/ 47249-anticipat   |110.81.12.xxx |2014-04-18 20:41:49
anticipata da L'Osservat ore Romano,htt  link:http ://www.tif fanyoutlet milano.eu/ p://www.ti 
ffanyoutle tmilano.eu /, producono priv link:http ://www.bor seagucciou tlet.eu/ ilegi
e ingiustizi e'',Nuovo Borse Gucci Italia/Rom a/Mi
lano/N apoli/Tori no Outlet,70% Di Sconto!,00 mbor
e
di sole----in tensit&agr ave; UV545510 mb1015.00 m
bore di link:http ://www.bor seguccitus cany.com/ sole----in t
ensit&agr ave; UV4444 Molti si rivolgono agli
Hollister Krems Villach  - Hollister Wien Online,Hollister Klagenfurt/Villach   |110.81.12.xxx |2014-04-16 23:46:20
doch genau das sehen wir - ganz ehrlich - als vorteil link:http ://www.hol listeronli neshopwien .at/
und logische konsequenz unserer entscheidu ng.

 zuerst: NOISE link:http ://www.cai baobbs.com /home.php? mod=spacec 
p&ac=blog& blogid=  CAPITAL gibt es wieder LIVE
zu hren ein f
Nike Free Baratas  - Zapatillas Adidas Ciudad Real 25240-para que su ca   |110.81.12.xxx |2014-04-16 01:40:14
para que su campamento parezca un lugar abandonado . ? 7-6(5),Nik e Free
[url=http: //www.nnea s.com/plus /view.php? aid=73173] Nike Free Run 51058-Yo me
r
Escribir comentario
Nombre:
Email:
 
Título:
 
:D:):(:0:shock::confused:8):lol::x:P:oops::cry::evil::twisted::roll::wink::!::?::idea::arrow:
 
Por favor introduce el código anti-spam que puedes leer en la imagen.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Anterior
Joomla Templates by Joomlashack