taniagalans
Becerro
- Desde
- 6 Dic 2015
- Mensajes
- 1
- Tema Autor
- #1
Tengo 3 codigos de juegos (snake, gato y ahorcado), necesito unirlos en un solo programa con un menu, ya lo intente con funciones pero no puedo. Alguien me podria ayudar?
Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include<string.h>
using namespace std;
void primero(void);
void segundo(void);
void tercero (void);
int main(void)
{
int x;
printf("\t\t\tElija una opcion\n\n");
printf(" 1 Ahorcado\n");
printf(" 2 Gato\n");
printf(" 3 Snake\n");
cin>>x;
if (x==1)
{primero();}
else
if (x==2)
{segundo();}
else
if (x==3)
{
tercero ();
}
return EXIT_SUCCESS;
}
void primero(void)
{
char frase[60],rep[100],temporal[100];
char pal;
int longitud,i,j,inicial,acertado=0,temp=0,oportunidades=5;
int repetido=0,gano=0;
printf("\tJuego del Ahorcado\n");
printf("Introduzca la palabra a adivinar: ");
gets(frase);
system("cls");
longitud = 0;
inicial = 0;
j = 0;
rep[0] = ' ';
rep[1] = '\0';
do {
system("cls");
temp=0;
if(inicial == 0) {
for(i=0;i<strlen(frase);i++) {
if(frase[i] == ' ') {
temporal[i] = ' ';
longitud++;
}
else {
temporal[i] = '_';
longitud++;
}
}
}
inicial = 1;
temporal[longitud] = '\0';
for(i=0;i<strlen(rep);i++) {
if(rep[i] == pal) {
repetido = 1;
break;
}
else {
repetido = 0;
}
}
if(repetido == 0) {
for(i=0;i<strlen(frase);i++) {
if(frase[i] == pal) {
temporal[i] = pal;
acertado++;
temp=1;
}
}
}
if(repetido == 0) {
if(temp == 0) {
oportunidades = oportunidades - 1;
}
}
else {
printf("Ya se ha introducido este caracter");
printf("\n\n");
}
printf("\n");
for(i=0;i<strlen(temporal);i++) {
printf(" %c ",temporal[i]);
}
printf("\n");
if(strcmp(frase,temporal) == 0) {
gano = 1;
break;
}
printf("\n");
printf("Letras Acertadas: %d",acertado);
printf("\n");
printf("Oportunidades Restantes: %d",oportunidades);
printf("\n");
rep[j] = pal;
j++;
if (oportunidades==0)
{
break;
}
printf("Introduzca una letra:");
scanf("\n%c",&pal);
}while(oportunidades != 0);
if(gano) {
printf("\n\n");
printf("Enhorabuena, has ganado.");
}
else {
printf("\n\n");
printf("Has perdido.");
}
printf("\n\n");
system("PAUSE");
}
void segundo(void)
{
int jugador=1,error,empate=0,ganar=0;
char c1='1',c2='2',c3='3',c4='4',c5='5',c6='6',c7='7',c8='8',c9='9',tiro,marca,respuesta='y';
do{
error=1;
system("cls");
printf("JUEGO DEL TRES EN RAYA\n");
printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);
if(jugador==1)
{
marca='X';
}
else
{
marca='O';
}
printf("Turno del Jugador %d.",jugador);
printf("\nEscribe la posicion donde colocas la ficha: ");
fflush(stdin);
scanf("%c",&tiro);
if (tiro=='1' && c1=='1') {c1=marca;}
else if (tiro=='2' && c2=='2') {c2=marca;}
else if (tiro=='3' && c3=='3') {c3=marca;}
else if (tiro=='4' && c4=='4') {c4=marca;}
else if (tiro=='5' && c5=='5') {c5=marca;}
else if (tiro=='6' && c6=='6') {c6=marca;}
else if (tiro=='7' && c7=='7') {c7=marca;}
else if (tiro=='8' && c8=='8') {c8=marca;}
else if (tiro=='9' && c9=='9') {c9=marca;}
else {printf("Error! Movimiento No Valido\n"); error=2;}
if(c1=='X'||c1=='O')
{
if(c2==c1&&c3==c1)
{
ganar=1;
}
if(c4==c1&&c7==c1)
{
ganar=1;
}
}
if(c5=='X'||c5=='O')
{
if (c1 == c5 && c9 == c5)
{ganar=1;}
if (c2 == c5 && c8 == c5)
{ganar=1;}
if (c4 == c5 && c6 == c5)
{ganar=1;}
if (c3 == c5 && c7 == c5)
{ganar=1;}
}
if(c9=='X'||c9=='O')
{
if (c6 == c9 && c3 == c9)
{ganar=1;}
if (c7 == c9 && c8 == c9)
{ganar=1;}
}
if ((c1 != '1' && c2 != '2' && c3 != '3' &&
c4 != '4' && c5 != '5' && c6 != '6' &&
c7 != '7' && c8 != '8' && c9 != '9') &&
ganar == 0)
{
empate=1;
}
if (ganar==1||empate==1)
{
system("cls");
if (ganar==1)
{
printf("Jugador: %d Gana!\n\n",jugador);
printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);
}
if (empate==1)
{
printf("Empate!\n",jugador);
printf("\n %c | %c | %c\n",c1,c2,c3);
printf("---+---+---\n");
printf("\n %c | %c | %c\n",c4,c5,c6);
printf("---+---+---\n");
printf("\n %c | %c | %c\n\n",c7,c8,c9);
}
printf("Jugar de Nuevo: Y/N ?\n");
fflush(stdin);
scanf("%c",&respuesta);
if (respuesta=='y'||respuesta=='Y')
{
empate=0;
jugador=2;
ganar=0;
c1='1';
c2='2';
c3='3';
c4='4';
c5='5';
c6='6';
c7='7';
c8='8';
c9='9';
}
}
if(error==1)
{
if (jugador==1)
{
jugador=2;
}
else
{
jugador=1;
}
}
}while(respuesta=='y'||respuesta=='Y');
}
void tercero(void)
{
#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27
using namespace std;
int cuerpo[200][2];
int n = 1, tam = 10, dir = 3;
int x = 10, y = 12;
int xc = 30, yc = 15;
int velocidad = 60;
char tecla;
void gotoxy(int x, int y)
{
HANDLE hCon;
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon,dwPos);
}
void OcultaCursor() {
CONSOLE_CURSOR_INFO cci = {100, FALSE};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
void pintar(){
for(int i=2; i < 78; i++){
gotoxy (i, 3); printf ("%c", 205);
gotoxy(i, 23); printf ("%c", 205);
}
for(int v=4; v < 23; v++){
gotoxy (2,v); printf ("%c", 186);
gotoxy(77,v); printf ("%c", 186);
}
gotoxy (2,3); printf ("%c", 201);
gotoxy (2,23); printf ("%c", 200);
gotoxy (77,3); printf ("%c", 187);
gotoxy(77,23); printf ("%c", 188);
}
void guardar_posicion(){
cuerpo[n][0] = x;
cuerpo[n][1] = y;
n++;
if(n == tam) n = 1;
}
void dibujar_cuerpo(){
for(int i = 1; i < tam; i++){
gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
}
}
void borrar_cuerpo(){
gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
}
void teclear(){
if(kbhit()){
tecla = getch();
switch(tecla){
case ARRIBA : if(dir != 2) dir = 1; break;
case ABAJO : if(dir != 1) dir = 2; break;
case DERECHA : if(dir != 4) dir = 3; break;
case IZQUIERDA : if(dir != 3) dir = 4; break;
}
}
}
void comida()
{
if(x == xc && y == yc)
{
xc = (rand() % 73) + 4;
yc = (rand() % 19) + 4;
tam++;
gotoxy(xc, yc); printf("%c", 4);
}
}
bool game_over()
{
if(y == 3 || y == 23 || x == 2 || x == 77) return false;
for(int j = tam - 1; j > 0; j--){
if(cuerpo[j][0] == x && cuerpo[j][1] == y)
return false;
}
return true;
}
int main()
{
OcultaCursor();
pintar();
gotoxy(xc, yc); printf("%c", 4);
while(tecla != ESC && game_over())
{
borrar_cuerpo();
guardar_posicion();
dibujar_cuerpo();
comida();
teclear();
teclear();
if(dir == 1) y--;
if(dir == 2) y++;
if(dir == 3) x++;
if(dir == 4) x--;
Sleep(velocidad);
}
pintar();
return 0;
}
}