1. Tengo dos preguntas se puede cambiar el tamaño de la consola para que se vea el tamaño que deseo en tiempo de ejecución o ya está predefino por Windows.
Se puede usando:system("MODE ancho,alto");
2. y la segunda como hago para que una que un carácter quede inmóvil o no se mueva de ese lugar sin correr los espacios en consola.
Se puede usando una función, por comodidad más que nada:int gotoxy(int x, int y)
{
COORD coord;
HANDLE h_stdout;
coord.X = x;
coord.Y = y;
if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
return 0;
if (SetConsoleCursorPosition(h_stdout, coord) == 0)
return 0;
return 1;
}
Y en el programa usas por ejemplo goto(20,30) para situar el cursor en ese punto concreto de la pantalla.
E incluso cambiar el color.
Te pongo un código de muestra:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define FIL 7
#define COL 8
void color (int n);
int gotoxy(int x, int y);
int main (){
int i=0,j=0,k=0,fil=1,col=1;
system("MODE 60,35");
char a[7][8];
system ("pause");
system ("cls");
for (i=0;i<15;i++){
gotoxy (10+2*i,10);
printf ("*" );
}
Sleep (2000);
for (i=0;i<15;i++){
Sleep (250);
gotoxy (10+2*i,10);
printf ("X" );
}
puts("\n\n");
system ("pause");
system ("cls");
for (i=0;i<27;i++)
printf ( "* ");
putchar ('\n');
for (i=0;i<27;i++){
Sleep(150);
gotoxy (2*i,0);
printf ( "X ");
}
for (i=0;i<27;i++){
Sleep(100);
gotoxy (2*i,4);
printf ( "X");
}
for (i=0;i<6;i++){
for (j=0;j<6;j++){
gotoxy (2*j+6,i+6);
printf ( "* ");
}
}
for (i=0;i<6;i++){
for (j=0;j<6;j++){
Sleep(250);
gotoxy (2*j+6,i+6);
printf ( "X");
}
}
putchar ('\n');
system ("pause");
system ("cls");
for (i=0;i<7;i++){
a[i][7]='\0';
for (j=0;j<7;j++){
if(j>=i-1 && j<i+1 && j>0 && j<6 && i<6)
a[i][j]='X';
else if(i==0 || j==0 || i==6 || j==6 )
a[i][j]='*';
else
a[i][j]='0';
}
}
putchar ('\n');
for (i=0;i<7;i++){
a[i][7]='\0';
for (j=0;j<7;j++){
if((i==j || j==i-1) && i>0 && j<6 && j>0 && i<6)
a[i][j]='X';
else if(i==0 || j==0 || i==6 || j==6 )
a[i][j]='*';
else
a[i][j]='0';
}
}
gotoxy (0,10);
for (i=0;i<7;i++){
for (j=0;j<7;j++){
printf ("%c ",a[i][j]);
}
putchar ('\n');
}
system ("pause");
for (i=0;i<7;i++)
printf ("%s\n",a[i]);
system ("pause");
gotoxy (0,0);
for (i=0;i<7;i++){
for (j=0;j<7;j++){
printf ("%c ",a[i][j]);
}
putchar ('\n');
}
fil=1,col=1;
while (1){
Sleep(1000);
if (fil==FIL-2 && col==COL-3){
gotoxy (2*col,fil);
printf("%c ",'F');
break;
}
else if (a[fil+1][col]=='X' && fil<FIL){
color(215);
gotoxy (2*col,fil);
printf("%c ",'F');fil++;
}
else if (a[fil][col+1]=='X' && col<COL){
color(215);
gotoxy (2*(col),fil);
printf("%c ",'F');col++;
}
else if (a[fil-1][col]=='X' && fil>0){
color(215);
gotoxy (2*(col),fil);
printf("%c ",'F');fil--;
}
else if (a[fil][col-1]=='X' && col>0){
color(215);
gotoxy (2*col,fil);
printf(" %c ",'F');col--;
}
}
color(7);
gotoxy (0,30);
printf ( "Final!");
putchar ('\n');
system("pause");
return 0;
}
void color (int n)
{
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
}
int gotoxy(int x, int y)
{
COORD coord;
HANDLE h_stdout;
coord.X = x;
coord.Y = y;
if ((h_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
return 0;
if (SetConsoleCursorPosition(h_stdout, coord) == 0)
return 0;
return 1;
}
¡¡¡¡ Saluditos! ..... !!!!