• Viernes 8 de Noviembre de 2024, 17:58

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - jotacorredo

Páginas: [1]
1
C/C++ / nesecito hacer juego domino en lenguaje C
« en: Martes 17 de Mayo de 2011, 00:54 »
NECESITO QUE ME AYUDEN DE NUEVO HACER EL JUEGO DEL DOMINO... QUE JUEGUE EL USUARIO CONTRA LA PC
QUE DEJE HACER TAPICU ETC..PERO QUE NO TENGA LA LIBRERIA WINDOWS.H.. GRAACIAS ESPERO RESPUES PRONTAMENTE..

2
C/C++ / s.o.s juego domino...
« en: Miércoles 4 de Mayo de 2011, 17:25 »
estoy tratando de realizar un domino en c, pero necesito la ayuda de ustedes, el programa debe jugar domino contra la maquina, normal no necesita ser inteligente, solo que juegue, mi pregunta es la siguiente: ¿hay forma de eliminar las librerias windows.h y #define max fichas??? solo q utilic stdio.h,stdlib.h y time.h???... Gracias.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define MAXFICHASXJUGADOR 21
 
struct ficha {
  int numder;
  struct ficha *der;
  int numizq;
  struct ficha *izq;
};
typedef struct ficha FICHA;
typedef struct ficha *PTRFICHA;
 
FICHA Ficha[28];
PTRFICHA Jugador[4][MAXFICHASXJUGADOR], Monton[28], cabeza, cola;
HANDLE hConsoleOut, hConsoleIn;
 
void randomize ()
{
  srand (time (NULL));
}
 
int random (int num)
{
  return rand () % num;
}
 
void clrscr ()
{
  AllocConsole();
  hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
  hConsoleIn = GetStdHandle(STD_INPUT_HANDLE);
}
 
void gotoxy (int x, int y)
{
  COORD coordScreen;
  coordScreen.X = x - 1;
  coordScreen.Y = y - 1;
  SetConsoleCursorPosition (hConsoleOut, coordScreen);
}
void InicializaFichas ()
{
  int i, j;
 
  for (i = 0; i < 7; i++)
     for (j = i; j < 7; j++) {
        int k, m;
        for (k = m = 0; m < i; m++)
           k += 7 - m;
        Ficha[k + j - i].numder = i;
        Ficha[k + j - i].numizq = j;
        Ficha[k + j - i].der = Ficha[k + j - i].izq = NULL;
     }
  randomize ();
}
 
void NuevoJuego ()
{
  int i, j;
 
  for (i = 0; i < 28; i++) {
      Ficha.der = Ficha.izq = NULL;
     Monton = Ficha + i;
  }
  for (i = 0; i < 4; i++)
     for (j = 0; j < 7; j++)
        Jugador[j] = NULL;
  cabeza = cola = NULL;
}
 
PTRFICHA EscogeFicha ()
{
  int i, bandera;
  PTRFICHA p;
 
  for (bandera = i = 0; i < 28; i++)
     if (Monton != NULL) {
        bandera = 1;
        break;
     }
  if (!bandera)   /* no hay fichas en el monton */
     return NULL;
 
  while (1) {
     i = random (28);
     if (Monton != NULL) {
        p = Monton;
        Monton = NULL;
        return p;
     }
  }
}
 
void ReparteFichas (int numjugador)
{
  int i;
  for (i = 0; i < 7; i++)
     Jugador[numjugador] = EscogeFicha ();
}
 
void ImprimeFichasJugador (int numjugador, int pantalla)
{
  int i, startcol;
 
  startcol = !pantalla ? 1 : 41;
  gotoxy (startcol + 11, 5 + numjugador*4);
  for (i = 0; i < MAXFICHASXJUGADOR; i++)
     if (Jugador[numjugador] != NULL)
        printf ("%d ", Jugador[numjugador]->numizq);
  gotoxy (startcol, 5 + numjugador*4 + 1);
  printf ("Jugador #%d ", numjugador + 1);
  for (i = 0; i < MAXFICHASXJUGADOR; i++)
     if (Jugador[numjugador] != NULL)
        printf ("- ");
  gotoxy (startcol + 11, 5 + numjugador*4 + 2);
  for (i = 0; i < MAXFICHASXJUGADOR; i++)
     if (Jugador[numjugador] != NULL)
        printf ("%d ", Jugador[numjugador]->numder);
}
 
void ImprimeMonton (int pantalla)
{
  int i, startcol;
 
  startcol = !pantalla ? 1 : 41;
  gotoxy (startcol + 11, 21);
  for (i = 0; i < 28; i++)
     if (Monton != NULL)
        printf ("%d ", Monton->numizq);
  gotoxy (startcol, 22);
  printf ("Mont¢n     ");
  for (i = 0; i < 28; i++)
     if (Monton != NULL)
        printf ("- ");
  gotoxy (startcol + 11, 23);
  for (i = 0; i < 28; i++)
     if (Monton != NULL)
        printf ("%d ", Monton->numder);
}
 
void ImprimeJuego ()
{
  int i;
  PTRFICHA ptr;
 
  gotoxy (12, 1);
  for (ptr = cabeza; ptr != NULL; ptr = ptr->der)
     printf ("%d ", ptr->numizq);
  gotoxy (1, 2);
  printf ("Juego      ");
  for (ptr = cabeza; ptr != NULL; ptr = ptr->der)
     printf ("- ");
  gotoxy (12, 3);
  for (ptr = cabeza; ptr != NULL; ptr = ptr->der)
     printf ("%d ", ptr->numder);
}
 
void ImprimeEstadoDelJuego (int numjugadores, int paso)
{
  int i, j, startcol;
  static int mitad_pantalla = 0;
 
  for (i = 3; i < 24; i++) {
     gotoxy (40, i + 1);
     printf ("³");
  }
  startcol = !mitad_pantalla ? 1 : 41;
  for (i = 3; i < 24; i++) {
     gotoxy (startcol, i + 1);
     for (j = 0; j < 39; j++) printf (" ");
  }
  gotoxy (startcol, 4);
  for (i = 0; i < 14; i++) printf ("#");
  printf (" Paso: %3d ", paso);
  for (i = 0; i < 14; i++) printf ("#");
  if (numjugadores < 4)
     ImprimeMonton (mitad_pantalla);
  for (i = 0; i < numjugadores; i++)
     ImprimeFichasJugador (i, mitad_pantalla);
  ImprimeJuego ();
  mitad_pantalla = !mitad_pantalla;
  gotoxy (1, 25);
  printf ("tpresiones una tecla para continuar...");
  getchar ();
}
 
int Ganador (int numjugadores)
{
  int i, j, bandera;
 
  for (i = 0; i < numjugadores; i++) {
     for (bandera = j = 0; j < MAXFICHASXJUGADOR; j++)
        if (Jugador[j] != NULL) {
           bandera = 1;
           break;
        }
     if (!bandera)
        return i + 1;
  }
  return 0;
}
 
int JuegoCerrado ()
{
  int contador;
  PTRFICHA ptr;
 
  if (cabeza == NULL || cabeza->numizq != cola->numder)
     return 0;
  contador = 0;
  for (ptr = cabeza; ptr != NULL; ptr = ptr->der) {
     if (ptr->numizq == cabeza->numizq)
        contador++;
     if (ptr->numder == cabeza->numizq)
        contador++;
  }
  return contador == 8;
}
 
void Juega (int jugadoractual)
{
  int i;
  PTRFICHA ptr;
  if (cabeza == NULL) {
     cola = cabeza = Jugador[jugadoractual][6];
     Jugador[jugadoractual][6] = NULL;
     return;
  }
  for (i = 0; i < MAXFICHASXJUGADOR; i++)
     if (Jugador[jugadoractual] == NULL)
        continue;
     else if (Jugador[jugadoractual]->numder == cabeza->numizq ||
         Jugador[jugadoractual]->numizq == cabeza->numizq) {
        if (Jugador[jugadoractual]->numizq == cabeza->numizq) {
           int intercambio = Jugador[jugadoractual]->numizq;
           Jugador[jugadoractual]->numizq = Jugador[jugadoractual]->numder;
           Jugador[jugadoractual]->numder = intercambio;
        }
        cabeza->izq = Jugador[jugadoractual];
        Jugador[jugadoractual]->der = cabeza;
        cabeza = Jugador[jugadoractual];
        Jugador[jugadoractual] = NULL;
        return;
     } else if (Jugador[jugadoractual]->numizq == cola->numder ||
                Jugador[jugadoractual]->numder == cola->numder) {
        if (Jugador[jugadoractual]->numder == cola->numder) {
           int intercambio = Jugador[jugadoractual]->numder;
           Jugador[jugadoractual]->numder = Jugador[jugadoractual]->numizq;
           Jugador[jugadoractual]->numizq = intercambio;
        }
        cola->der = Jugador[jugadoractual];
        Jugador[jugadoractual]->izq = cola;
        cola = Jugador[jugadoractual];
        Jugador[jugadoractual] = NULL;
        return;
     }
 
  while (1) {
     if ((ptr = EscogeFicha ()) == NULL)
        return;
     if (ptr->numder == cabeza->numizq || ptr->numizq == cabeza->numizq) {
        if (ptr->numizq == cabeza->numizq) {
           int intercambio = ptr->numizq;
           ptr->numizq = ptr->numder;
           ptr->numder = intercambio;
        }
        cabeza->izq = ptr;
        ptr->der = cabeza;
        cabeza = ptr;
        return;
     } else if (ptr->numizq == cola->numder || ptr->numder == cola->numder) {
        if (ptr->numder == cola->numder) {
           int intercambio = ptr->numder;
           ptr->numder = ptr->numizq;
           ptr->numizq = intercambio;
        }
        cola->der = ptr;
        ptr->izq = cola;
        cola = ptr;
        return;
     }
     for (i = 0; i < MAXFICHASXJUGADOR; i++)
        if (Jugador[jugadoractual] == NULL) {
           Jugador[jugadoractual] = ptr;
           break;
        }
  }
}
 
int main ()
{
  int i, paso = 0, jugadoractual, numjugadores = 2;
 
  clrscr ();
  InicializaFichas ();
  NuevoJuego ();
 
  for (i = 0; i < numjugadores; i++)
     ReparteFichas (i);
  ImprimeEstadoDelJuego (numjugadores, paso);
  jugadoractual = random (numjugadores);
  while (1) {
     if (Ganador(numjugadores) || JuegoCerrado())
        break;
     Juega (jugadoractual);
     if (jugadoractual < numjugadores - 1)
        jugadoractual++;
     else
        jugadoractual = 0;
     paso++;
     ImprimeEstadoDelJuego (numjugadores, paso);
  }
  if (Ganador(numjugadores))
     printf ("nEl ganador es el jugador #%d", Ganador(numjugadores));
  else if (JuegoCerrado())
     printf ("nEl juego se cerr¢");
  getchar();
}

3
C/C++ / Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« en: Domingo 1 de Mayo de 2011, 04:24 »
amigos... no entiendo para que es esta parte...
printf("Volver al menu? (s o n) ");
scanf("%s", &denuevo);
if (denuevo>=97) denuevo-=32;
if ((denuevo!='s')&&(denuevo!='n'))
for (h=0;h<=8;h++) c[h]=0;
}
while (denuevo=='S');
getchar();
por qué se colocan estos valores entre 97 y 32????
Gracias

Páginas: [1]