Sábado 14 de Diciembre de 2024, 11:40
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Juego
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Juego (Leído 1359 veces)
gdan_m
Nuevo Miembro
Mensajes: 13
Juego
«
en:
Viernes 2 de Diciembre de 2005, 00:51 »
0
hola lo que debo de hacer es un juego de domino que tenga dos jugadores, un pozo, y que sea pormedio de lista de apuntadores
#include "stdafx.h"
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <process.h>
#include <stdio.h>
struct ficha
{
struct ficha *izq;
int num,num1;
struct ficha *der;
};
struct ficha *p,*inicio,*q;
struct ficha *nvoele()
{return((struct ficha *)malloc(sixeof(struct ficha)));}
void juego()
{
q=nvoele();
cin>>q->num;
q->izq=NULL;
q->der=NULL;
if(inicio->izq==q->der || inicio->izq==q->izq)
{
inicio->izq=q;
q->der=inicio || q->izq=inicio;
inicio=q;
q->izq=NULL;
}
else
{
if(fin->izq==q->der || fin->izq==q->izq)
{
p->der=q;
q->izq=p;
p=q;
q->der=NULL;
}
else
cout<<"No encuentra combinacion\n";
}
inicio=q; p=q;
while (resp=='s')
{
q=nvoele();
cin>>q->num;
p->der=q;
q->izq=p;
q->der=NULL;
p=q;
}
}
void asigna()
{
bool si(int* fi,int j)
{
for(int i=0;i<15;i++){
if (*(fi+i)==j)
return true;
}
return false;
}
}
void main()
{
jugador jug[2];
srand(time(NULL));
Ficha cant[28]={Ficha(0,0),Ficha(0,1),Ficha(0,2),Ficha(0,3),Ficha(0,4),Ficha(0,5),Ficha(0,6),
Ficha(1,1),Ficha(1,2),Ficha(1,3),Ficha(1,4),Ficha(1,5),Ficha(1,6),
Ficha(2,2),Ficha(2,3),Ficha(2,4),Ficha(2,5),Ficha(2,6),
Ficha(3,3),Ficha(3,4),Ficha(3,5),Ficha(3,6),
Ficha(4,4),Ficha(4,5),Ficha(4,6),
Ficha(5,5),Ficha(5,6),
Ficha(6,6)};
int a=0;
int k=0;
int fi[15];
for (int i=0;i<15;i++)
ya
=-1;
for(int i=0;i<2;i++)
{
for(int j=0;j<7;j++)
{
a=rand()%28;
jug
.RecibeFicha(cant[a]);
while(si(fi,a))
{
a=rand()%28;
jug
.fichas(cant[a],j);
}
fi[k]=a;
k++;
}
char resp='s';
int opc;
while (resp=='s')
{
cout<<"*******************DOMINO********************\n";
cout<<"1. Jugar\n";
cout<<"2. Salir\n";
cout<<"Selecciona una opcion\n";
cin>>opc;
switch opc;
{
case 1: {juego();break;}
case 2: resp='n';
}
}
system("pause");
}
Tweet
pitukilloloco
Miembro MUY activo
Mensajes: 104
Re: Juego
«
Respuesta #1 en:
Viernes 2 de Diciembre de 2005, 04:01 »
0
Pensando un poco en tu programa aquí está una idea de cómo hacerlo. Necesitas tener una estructura como la que pusiste pero además debes de indicar en los números qué parte de la ficha es. Lo que quiero decir es que cuando coloques una ficha en la lista debes de poder identificar cual parte es la que se une y cual queda libre. Por esto yo pondría la estructura así
Código: Text
struct ficha {
int numder;
struct ficha *der;
int numizq;
struct ficha *izq;
};
Después definiría un arreglo de 28 objetos de esta estructura, las cuales representarían las fichas del dominó. Definiría un jugador como teniendo 7 apuntadores a estas estructuras, y como puedo tener hasta cuatro jugadores, entonces definiría un arreglo de 4 de estos. Definiría una variable
Monton
que tuviera 28 apuntadores a esta estructura para que contenga las fichas que no se repartan entre los jugadores. Por último definiría dos variables que apunten a esta estructura para que contengan la cabeza y la cola de la lista del juego, o sea, de las fichas que se vayan poniendo en la mesa.
Esto en código sería
Código: Text
typedef struct ficha FICHA;
typedef struct ficha *PTRFICHA;
FICHA Ficha[28];
PTRFICHA Jugador[4][7], Monton[28], cabeza, cola;
Ahora necesito varias funciones.
Una función
InicializaFichas
que me inicialize el arreglo
Ficha
con los números de la 28 fichas del dominó. Esta función se llamaría una sólo vez en el programa.
Una función
NuevoJuego
que llamaría cada vez que se comienze un juego y que inicializaría las variables
Monton
,
Jugador
,
cabeza
y
cola
.
Una función
EscogeFicha
que me regresaría aleatoreamente un apuntador a una ficha del montón.
Una función
ReparteFichas
que escogería aleatoreamente 7 fichas del montón para el jugador que yo le indicara
Bueno, esto es sólo una idea para comenzar, no se que te parezca. Hice un pequeño programa para que veas como trabajan estas funciones
Código: Text
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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][7], Monton[28], cabeza, cola;
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[i].der = Ficha[i].izq = NULL;
Monton[i] = Ficha + i;
}
for (i = 0; i < 4; i++)
for (j = 0; j < 7; j++)
Jugador[i][j] = NULL;
cabeza = cola = NULL;
}
PTRFICHA EscogeFicha ()
{
int i;
PTRFICHA p;
while (1) {
i = random (28);
if (Monton[i] != NULL) {
p = Monton[i];
Monton[i] = NULL;
return p;
}
}
}
void ReparteFichas (int numjugador)
{
int i;
for (i = 0; i < 7; i++)
Jugador[numjugador][i] = EscogeFicha ();
}
void ImprimeFichasJugador (int numjugador)
{
int i;
printf ("\n\n");
for (i = 0; i < 7; i++)
printf ("%d ", Jugador[numjugador][i]->numizq);
printf ("\n");
for (i = 0; i < 7; i++)
printf ("- ");
printf ("\n");
for (i = 0; i < 7; i++)
printf ("%d ", Jugador[numjugador][i]->numder);
}
int main ()
{
int i;
InicializaFichas ();
NuevoJuego ();
for (i = 0; i < 4; i++)
ReparteFichas (i);
for (i = 0; i < 4; i++)
ImprimeFichasJugador (i);
}
Si te interesa la idea podemos seguir para ver como se programaría más en detalle. Si tienes otra idea de cómo hacerlo, bueno, al menos ya más o menos con esto te podrás hacer una idea de como hacerlo.
gdan_m
Nuevo Miembro
Mensajes: 13
Re: Juego
«
Respuesta #2 en:
Viernes 2 de Diciembre de 2005, 06:59 »
0
Gracias por ayudarme!! y la verdad si me interesa, me agrada la idea que tuviste, pero como lo seguirias programando?
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Juego