Aquí les traigo un código de un juego que estoy empezando a desarrollar.
Citar
// Pequeño juego en C++ - 2012
// Versión: 0.1
// http://www.cplus-facilito.blogspot.mx/
// Compilado con DevC++
// Teclas de movimiento: W,S,A,D
// Si no desean crear gotoxy, pueden usar un bucle
// Un contador, que cuente el valor de Y y otro de X
// Cada vez que de vuelta pasa línea
// Para cambiar velocidad de movimiento
// cambia el valor del eje X y Y
// en sus respectivas funciones
// Funciona igual con un bucle pero se necesita más código
// Lo desarrolle así para facilitar el entendimiento
//Librerías que ocuparemos
#include <iostream> // Librería básica C++
#include <conio.h> // Librería extra para usar getch
#include <windows.h> // Librería para poder desarrollar gotoxy
using namespace std; // Evitar la escritura de std en iostream
// Declarar todos los objetos
void personaje_arriba();
void personaje_abajo();
void personaje_izquierda();
void personaje_derecha();
void gotoxy();
void juego();
// Personaje Arriba
char personaje_arriba1[]={' ','X',' ',0};
char personaje_arriba2[]={'X','X','X',0};
char personaje_arriba3[]={'X',' ','X',0};
// Personaje Abajo
char personaje_abajo1[]={'X',' ','X',0};
char personaje_abajo2[]={'X','X','X',0};
char personaje_abajo3[]={' ','X',' ',0};
// Personaje Izquierda
char personaje_izquierda1[]={' ','X','X',0};
char personaje_izquierda2[]={'X','X',' ',0};
char personaje_izquierda3[]={' ','X','X',0};
// Personaje Derecha
char personaje_derecha1[]={'X','X',' ',0};
char personaje_derecha2[]={' ','X','X',0};
char personaje_derecha3[]={'X','X',' ',0};
// Variable tecla
char tecla;
// Eje X y Y
int x=0, y=0;
// Creando función gotoxy
void gotoxy(int x,int y)
{
HANDLE hCon;
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon,dwPos);
}
// Función principal - MENU
int main() {
printf("\n\n\n");
printf(" -------------------------------------------------------\n");
printf(" - JUEGO EN C++ -\n");
printf(" -------------------------------------------------------\n");
printf(" - -\n");
printf(" - -\n");
printf(" - Presione cualquier tecla para iniciar -\n");
printf(" - -\n");
printf(" - -\n");
printf(" - -\n");
printf(" - -\n");
printf(" -------------------------------------------------------\n");
gotoxy(0,0); // Cursor al inicio
int menu = getch();
juego();
return 0;
}
// Función Juego
void juego() {
x=37; //Iniciamos en el centro
y=12;
personaje_arriba(); // Mostramos el personaje
do {
tecla = getch();
if (tecla == 'w' || tecla == 's' || tecla == 'a' || tecla == 'd' || tecla == 'W' || tecla == 'S' || tecla == 'A' || tecla == 'D') {
if (tecla == 'w' ||tecla == 'W')
personaje_arriba();
if (tecla == 's' || tecla == 'S')
personaje_abajo();
if (tecla == 'a' || tecla == 'A')
personaje_izquierda();
if (tecla == 'd' || tecla == 'D')
personaje_derecha();
}
}while(1); // Mientras sea verdadero se repite (siempre)
cin.get();
}
// Posibles movimientos de nuestro personaje
void personaje_arriba() {
if (y>=3) {
system("cls");
y-=3;
}
gotoxy(x,y); puts(personaje_arriba1); //Situar en el eje
gotoxy(x,y+1); puts(personaje_arriba2); // Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_arriba3); // Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_abajo() {
if (y<=18) {
system("cls");
y+=3;
}
gotoxy(x,y); puts(personaje_abajo1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_abajo2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_abajo3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_izquierda() {
if (x>=3) {
x-=3;
system("cls");
}
gotoxy(x,y); puts(personaje_izquierda1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_izquierda2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_izquierda3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_derecha() {
if (x<75) {
x+=3;
system("cls");
}
gotoxy(x,y); puts(personaje_derecha1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_derecha2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_derecha3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
// Versión: 0.1
// http://www.cplus-facilito.blogspot.mx/
// Compilado con DevC++
// Teclas de movimiento: W,S,A,D
// Si no desean crear gotoxy, pueden usar un bucle
// Un contador, que cuente el valor de Y y otro de X
// Cada vez que de vuelta pasa línea
// Para cambiar velocidad de movimiento
// cambia el valor del eje X y Y
// en sus respectivas funciones
// Funciona igual con un bucle pero se necesita más código
// Lo desarrolle así para facilitar el entendimiento
//Librerías que ocuparemos
#include <iostream> // Librería básica C++
#include <conio.h> // Librería extra para usar getch
#include <windows.h> // Librería para poder desarrollar gotoxy
using namespace std; // Evitar la escritura de std en iostream
// Declarar todos los objetos
void personaje_arriba();
void personaje_abajo();
void personaje_izquierda();
void personaje_derecha();
void gotoxy();
void juego();
// Personaje Arriba
char personaje_arriba1[]={' ','X',' ',0};
char personaje_arriba2[]={'X','X','X',0};
char personaje_arriba3[]={'X',' ','X',0};
// Personaje Abajo
char personaje_abajo1[]={'X',' ','X',0};
char personaje_abajo2[]={'X','X','X',0};
char personaje_abajo3[]={' ','X',' ',0};
// Personaje Izquierda
char personaje_izquierda1[]={' ','X','X',0};
char personaje_izquierda2[]={'X','X',' ',0};
char personaje_izquierda3[]={' ','X','X',0};
// Personaje Derecha
char personaje_derecha1[]={'X','X',' ',0};
char personaje_derecha2[]={' ','X','X',0};
char personaje_derecha3[]={'X','X',' ',0};
// Variable tecla
char tecla;
// Eje X y Y
int x=0, y=0;
// Creando función gotoxy
void gotoxy(int x,int y)
{
HANDLE hCon;
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon,dwPos);
}
// Función principal - MENU
int main() {
printf("\n\n\n");
printf(" -------------------------------------------------------\n");
printf(" - JUEGO EN C++ -\n");
printf(" -------------------------------------------------------\n");
printf(" - -\n");
printf(" - -\n");
printf(" - Presione cualquier tecla para iniciar -\n");
printf(" - -\n");
printf(" - -\n");
printf(" - -\n");
printf(" - -\n");
printf(" -------------------------------------------------------\n");
gotoxy(0,0); // Cursor al inicio
int menu = getch();
juego();
return 0;
}
// Función Juego
void juego() {
x=37; //Iniciamos en el centro
y=12;
personaje_arriba(); // Mostramos el personaje
do {
tecla = getch();
if (tecla == 'w' || tecla == 's' || tecla == 'a' || tecla == 'd' || tecla == 'W' || tecla == 'S' || tecla == 'A' || tecla == 'D') {
if (tecla == 'w' ||tecla == 'W')
personaje_arriba();
if (tecla == 's' || tecla == 'S')
personaje_abajo();
if (tecla == 'a' || tecla == 'A')
personaje_izquierda();
if (tecla == 'd' || tecla == 'D')
personaje_derecha();
}
}while(1); // Mientras sea verdadero se repite (siempre)
cin.get();
}
// Posibles movimientos de nuestro personaje
void personaje_arriba() {
if (y>=3) {
system("cls");
y-=3;
}
gotoxy(x,y); puts(personaje_arriba1); //Situar en el eje
gotoxy(x,y+1); puts(personaje_arriba2); // Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_arriba3); // Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_abajo() {
if (y<=18) {
system("cls");
y+=3;
}
gotoxy(x,y); puts(personaje_abajo1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_abajo2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_abajo3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_izquierda() {
if (x>=3) {
x-=3;
system("cls");
}
gotoxy(x,y); puts(personaje_izquierda1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_izquierda2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_izquierda3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}
void personaje_derecha() {
if (x<75) {
x+=3;
system("cls");
}
gotoxy(x,y); puts(personaje_derecha1);//Situar en el eje
gotoxy(x,y+1); puts(personaje_derecha2);// Situar un espacio después del eje(que no queden en el mismo renglon)
gotoxy(x,y+2); puts(personaje_derecha3);// Situar dos espacios después del eje
gotoxy(0,0); // Cursor siempre en el inicio
}