¿Cómo escribir un juego sencillo usando lenguaje C?
El lenguaje C es una materia básica que todo estudiante de informática debe aprender. En términos generales, es relativamente aburrido. Entonces, ¿podemos hacerlo más interesante programando algunos juegos pequeños? De esta manera, aprender a programar no será algo difícil y aburrido, se volverá como un juego de computadora, ¿igual de curioso y lleno de cosas? divertido.
Por ejemplo, el juego 2048:
Método/pasos:
#includelt; .hgt;
#includelt;time.hgt;
#includelt;conio.hgt;
#includelt;windows.hgt;
#define TAMAÑO 4
static int puntuación=0;
void putn(int n[][TAMAÑO]);
void getn(int n [ ][TAMAÑO]);
int isempty(int n[][TAMAÑO]);
int isfull(int n[][TAMAÑO]);
void math(int n[][TAMAÑO], char c);
void tow(int n[][TAMAÑO]);
void toa(int n[] [ TAMAÑO]);
void tos(int n[][TAMAÑO]);
void tod(int n[][TAMAÑO]);
//Función principal
int main()
{
int i,j;
int n[TAMAÑO][TAMAÑO]
char c=' ';
for(i=0; ilt; TAMAÑO; i )
{
for( j =0;jlt;TAMAÑO;j )
{
n[i][j]=0;
}
}
printf( "******************************\n"
" ?2048(dXd) ? \n"
" ? control: W/A/S/D \n"
"presiona cualquier tecla para comenzar \n" p>
"** **********************\n",TAMAÑO,TAMAÑO);
getch();
sistema( "cls");
//n[0][1]=2048;
//n[0][3]=2048 ;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)amp;amp;isfull(n))
descanso;
dormir(200) );
c=getch();
mientras(c!='w'amp;amp;c!='a'amp;amp;c!='s' amp;amp;c!=' d')
c=getch();
math(n, c);
system("cls" );
}
printf(" ?¡Se acabó el juego!\n", puntuación
return 0; /p>
// Función
void putn(int n[][TAMAÑO])
{
int i, j;
>for(i=0; ilt; TAMAÑO; i )
{
for(j=0; jlt; TAMAÑO; j )
printf(" | ");
printf("|\n");
for(j=0;jlt;SIZE;j)
{
if(n[i][j]==0)
printf("| ");
else
printf("| 4d ",n[i][j]);
}
printf("|\n");
for(j=0;jlt ; TAMAÑO; j )
printf("|_____");
printf("|\n");
}
printf("puntuación: d", puntuación);
}
void getn(int n[][TAMAÑO])
{
int a, b;
a=rand()TAMAÑO;
b=rand()TAMAÑO
mientras(n[a][ b]!=0)
{
a=rand()TAMAÑO
b=rand()TAMAÑO
}
n[a][b]=2;
}
int isempty(int n[][TAMAÑO])
{
int i,j,count=0;
for(i=0;ilt;SIZE;i)
for(j=0;jlt ; TAMAÑO; j )
if(n[i][j]==0)
recuento ;
recuento de retornos;
}
int isfull(int n[][TAMAÑO])
{
int i, j, count=0
for(i=0; ilt; TAMAÑO; i )
{
for(j=1; jlt; TAMAÑO-1; j )
{
if(n[i][j]==n[i][j 1]||n[i][j]==n[i][j-1])
cuenta;
}
}
for(j=0;jlt;SIZE;j)
{
for(i=1; ilt; TAMAÑO-1; i )
{
if(n[i][j]==n[i 1 ][j]||n[i][j]==n[i-1][j])
cuenta;
}
}
return countgt;0?0:1;
}
void math(int n[][TAMAÑO], char c)
{
interruptor(c)
{
caso 'w':remolque(n);
caso ' a': toa(n);
caso 's': tos(n);
caso 'd': tod(n); p>
p>
predeterminado:;
}
}
remolque nulo(en
t n[][TAMAÑO])
{
int i, j, a
int m[TAMAÑO]
para (a=0; alt; TAMAÑO; a )
m[a]=0
for(j=0; jlt; TAMAÑO; j )
{
para(a=0; alt; TAMAÑO; a )
{
para(i=0; ilt; TAMAÑO-1; i )
{
si(n[i][j]==0)
{
n[i][j] =n[i 1][j];
n[i 1][j]=0;
}
}
}
}
for(j=0;jlt;SIZE;j)
{
for(a=0, i=0; ilt; TAMAÑO; i )
{
if(n[i][j]!=n[i 1][j]amp;amp;n[ i][j]!=0||n[i][j]==2048)
{
m[a ]=n[i][j];
n[i][j]=0;
}
si no(n[i][j]==n[i 1][j ])
{
m[a ]=n[i][j] n[i 1][j];
puntuación =m[a -1];
n[i][j]=0, n[i 1][j]=0;
}
} p>
for(i=0; ilt; TAMAÑO; i )
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void toa(int n[][TAMAÑO] )
{
int i, j, a;
int m[TAMAÑO]
for(a=0; alt ;TAMAÑO;a)
m[a]=0;
for(i=0;ilt;TAMAÑO;i)
{
for(a=0; alt; TAMAÑO; a )
{
for(j=0; jlt; TAMAÑO-1; j )
{
si(n[i][j]==0)
{
n[i][j]=n[i][ j 1];
n[i][j 1]=0;
}
}
}
}
for(i=0; ilt; TAMAÑO; i )
{
for(a=0, j=0; jlt; TAMAÑO; j )
{
if(n[i][j]!=n[i][j 1]amp;amp;n[i][j]! =0||n[i][j]==2048)
{
m[a ]=n[i][j];
n[i][j]=0;
}
si no(n[i][j]==n[i][j 1])
{
m[a ]=n[i][j] n[i][j 1];
puntuación =m[a-1]; p> p>
n[i][j]=0, n[i][j 1]=0;
}
}
for(j=0;jlt;SIZE;j)
{
n[i][j]=m[j] ;
m[j]=0;
}
}
}
void tos(int n[][TAMAÑO])
{
int i, j, a
int m[TAMAÑO]
para (a=0; alt; TAMAÑO; a )
m[a]=0;
for(j=TAMAÑO-1;jgt;=0;j--)
{
for(a=TAMAÑO-1; agt; =0; a--)
{
for(i= TAMAÑO-1;igt;0;i--)
{
if(n[i][j]==0)
{ p>
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=TAMAÑO-1;jgt;=0;j--) p> p>
{
for(a=TAMAÑO-1,i=TAMAÑO-1;igt;=0;i--)
{
if(n[i][j]!=n[i-1][j]amp;amp;n[i][j]!=0||n[i][j]==2048) p>
{
m[a--]=n[i][j];
n[i][j]=0;
}
si no(n[i][j]==n[i-1][j])
{
m [a --]=n[i][j] n[i-1][j];
puntuación =m[a 1];
n[i][ j] =0, n[i-1][j]=0;
}
}
for(i=SIZE-1;igt; =0 ;i--)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void tod(int n[][TAMAÑO])
{
int i, j, a;
int m[TAMAÑO]
for(a=0; alt; TAMAÑO; a)
m[a]=0;
for(i=TAMAÑO-1;igt;=0;i--)
{
for( a= TAMAÑO-1; agt; = 0; a--)
{
for(j=TAMAÑO-1; jgt; 0; j--)
{
si(n[i][j]==0)
{
n[i][j]=n[i ][ j-1];
n[i][j-1]=0;
}
}
} p>
}
for(i=TAMAÑO-1;igt;=0;i--)
{
for(a =TAMAÑO -1,j=TAMAÑO-1;jgt;=0;j--)
{
if(n[i][j]!=n[i] [j -1]amp;amp;n[i][j]!=0||n[i][j]==2048)
{
m[a -- ]=n[i][j];
n
[i][j]=0;
}
si no(n[i][j]==n[i][j-1])
{
m[a--]=n[i][j] n[i][j-1];
puntuación =m[a 1];
n[i][j]=0, n[i][j-1]=0
}
}
<; p>for(j=TAMAÑO-1;jgt;=0;j--){
n[i][j]=m[j];
m[j]=0;
}
}
}