#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
#define MAXBLOQUE 80
int tiempos=1;
char num_vidas=3;
int repeticio=0,nivel=10;
using namespace System;
void Colorletras(int numero)
{
if(numero==1)
Console::ForegroundColor = ConsoleColor::Blue;
else
if(numero==2)
Console::ForegroundColor = ConsoleColor::Green;
else
if(numero==3)
Console::ForegroundColor = ConsoleColor::Cyan;
else
if(numero==4)
Console::ForegroundColor = ConsoleColor::Red;
else
if(numero==5)
Console::ForegroundColor = ConsoleColor::Magenta;
else
Console::ForegroundColor = ConsoleColor::Yellow;
}
void mostrar_movil(int Px, int Py)
{ System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py-1);
printf("%c",2);
System::Console::SetCursorPosition(Px,Py);
printf("%c",221);
System::Console::SetCursorPosition(Px+1,Py);
printf("%c",47);
System::Console::SetCursorPosition(Px-1,Py);
printf("%c",92);
System::Console::SetCursorPosition(Px,Py+1);
printf("%c",221);
System::Console::SetCursorPosition(Px,Py+2);
printf("%c",186);
}
void borrar_movil(int Px, int Py)
{ System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py-1);
printf(" ");
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px+1,Py);
printf(" ");
System::Console::SetCursorPosition(Px-1,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
}
void vidas(int vidas)
{ int Px,Py;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px+1,Py+1);
printf("Vidas %c",vidas);
System::Console::SetCursorPosition(Px+5,Py+1);
printf("%c",vidas--);
}
void tiempo(int vidas)
{
int hora,minuto,segundo,Px,Py;
for(int i=0;i<=1;i++)
System::Console::SetCursorPosition(Px+35,Py+1);
hora=minuto=segundo=0;
do
{System::Console::SetCursorPosition(Px+35,Py+1);
segundo++;
if(segundo>59)
{segundo=0;
minuto++;
}
if(minuto>59)
{minuto=0;
hora++;
}
if(hora>23)
hora=0;
if(kbhit())
break;
printf("%d:%d:%d", hora,minuto,segundo);
Sleep(1800);
}while(true);
}
int main(array<System::String ^> ^args)
{
int hora,minuto,segundo,x,y,dx,dy,vi,i;
char c;
x=15;
y=12;
dx=dy=1;
vidas(num_vidas);
system("color c7");
System::Console::CursorVisible=false;
System::Random^r= gcnew
System::Random(System::DateTime::Now.Ticks);
///Variables del bloque
int Vecfila[MAXBLOQUE],VecColI[MAXBLOQUE];
int VecColf[MAXBLOQUE],VecColor[MAXBLOQUE];
int NBloques=50;
///variables del muñeco
int Px=5,Py=12;
int estado;///importantisimo
int contador_salto;
////inicial el 1er bloque
Vecfila[0]=15; VecColI[0]=0; VecColf[0]=25;
VecColor[0]=10;
////Pintar
//System::Console::ForegroundColor=System::ConsoleColor(VecColor[0]);
//for(int x=VecColI[0];x<=VecColf[0];x++)
// {int y=Vecfila[0];
// System::Console::SetCursorPosition(x,y);
// printf("#");
// }
///inicializar el resto de bloques
for(int i=1;i<NBloques;i++)
{ int siguiente_fila=r->Next(7);
if(siguiente_fila==0)
Vecfila[i]=Vecfila[i-1]+3;
if(siguiente_fila==1)
Vecfila[i]=Vecfila[i-1]+2;
if(siguiente_fila==2)
Vecfila[i]=Vecfila[i-1]+1;
if(siguiente_fila==3)
Vecfila[i]=Vecfila[i-1]-0;
if(siguiente_fila==4)
Vecfila[i]=Vecfila[i-1]-1;
if(siguiente_fila==5)
Vecfila[i]=Vecfila[i-1]-2;
if(siguiente_fila==6)
Vecfila[i]=Vecfila[i-1]-3;
///inicializar la columna de inicio
VecColI[i]=VecColf[i-1]+4;
///inicializar la columna de fin
VecColf[i]=VecColI[i]+7;
///inicializar el color
VecColor[i]=r->Next(1,15);
}
estado=0;///estado de reposo
contador_salto=0;
while(1) //while(true)
{
while(!kbhit())//mientras que no presiones nada
{ //pintar todos los bloques
for(int i=0;i<NBloques;i++)
{System::Console::ForegroundColor=System::ConsoleColor(VecColor[i]);
for(int x=VecColI[i];x<=VecColf[i];x++)
{int y=Vecfila[i];
if(x>=0 && x<80 && y>=0 && y<25)
{System::Console::SetCursorPosition(x,y);
printf("%c",219);
}
}
}
///Pintar muñeco
mostrar_movil(Px,Py);
//Pintar tiempo
System::Console::SetCursorPosition(35,1);
segundo++;
if(segundo>59)
{segundo=0;
minuto++;
}
if(minuto>59)
{minuto=0;
hora++;
}
if(hora>23)
hora=0;
if(kbhit())
break;
printf("%d:%d:%d", hora,minuto,segundo);
///Sleep
Sleep(150);
///Borrar bloques
for(int i=0;i<NBloques;i++)
{System::Console::ForegroundColor=System::ConsoleColor(VecColor[i]);
for(int x=VecColI[i];x<=VecColf[i];x++)
{int y=Vecfila[i];
if(x>=0 && x<80 && y>=0 && y<25)
{System::Console::SetCursorPosition(x,y);
printf(" ");
}
}
}
///Borrar muñeco
borrar_movil(Px,Py);
///Calcular nueva posicion de bloques
for(int i=0;i<NBloques;i++)
{
VecColI[i]--;
VecColf[i]--;
}
///Calcular nuevo estado del muñeco
if(estado==1)
{
Py--;
contador_salto++;
if(contador_salto==5)
estado=2;
}
else if(estado==2)
{
Py++;//actualizo coordenadas
}
//si debajo del muñeco hay un bloque
//entonces cambio el estado a 0
bool encontrado=false;
for(int i=0;i<NBloques;i++)
{
if((Py+2)+1==Vecfila[i]&&(Px>=VecColI[i]&&Px<=VecColf[i]))
{
encontrado=true;
}
}
if(encontrado)
estado=0;
else
estado=2;
}
//Reconocer la tecla que he presionado
char tecla=getch();
//en esta parte solo modificamos estados, no pintamos
if(tecla==75)
{borrar_movil(Px,Py);
if(x>2)
x=x-dx;
mostrar_movil(Px,Py);
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" %c",1);
System::Console::SetCursorPosition(Px,Py+1);
printf("-|-");
System::Console::SetCursorPosition(Px,Py+2);
printf("( (");
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" %c",1);
System::Console::SetCursorPosition(Px,Py+1);
printf("-|-");
System::Console::SetCursorPosition(Px,Py+2);
printf("||");
}
if(tecla==77)
{borrar_movil(Px,Py);
if(x<77)
x=x+dx;
mostrar_movil(Px,Py);
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" %c",1);
System::Console::SetCursorPosition(Px,Py+1);
printf("-|-");
System::Console::SetCursorPosition(Px,Py+2);
printf(") )");
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" %c",1);
System::Console::SetCursorPosition(Px,Py+1);
printf("-|-");
System::Console::SetCursorPosition(Px,Py+2);
printf("| |");
}
if(tecla==72)
{
if(estado==0)//solo si estoy en reposo
{
estado=1;//lo hago saltar
contador_salto++;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
Py--;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
Py--;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
Py--;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
Py--;
System::Console::ForegroundColor=System::ConsoleColor::White;
System::Console::SetCursorPosition(Px,Py);
printf(" ");
System::Console::SetCursorPosition(Px,Py+1);
printf(" ");
System::Console::SetCursorPosition(Px,Py+2);
printf(" ");
Py--;
}
}
}
_getch();
return 0;
}