| |
|
1
|
Programación / Programación C/C++ / ¿Qué es más conveniente?[Sockets]
|
en: Hoy a las 18:51
|
|
A la hora de realizar un juego en C que permita interconexión de dos jugadores en diferentes computadores, ¿Qué es más conveniente, desarrollar en el servidor todo el juego y crear dos clientes que realicen peticiones al servidor, o un servidor-cliente, el cual haga papel de jugador 1 el servidor y jugador 2 el cliente?
Gracias, un saludo.
PD: Hablando de juegos como tic-tac-toe, hundir la flota...
|
|
|
|
|
5
|
Programación / Programación C/C++ / Re: Ayuda con unas funciones que no se inician(hundir la flota)
|
en: 04 Septiembre 2008, 13:43
|
Hola es el juego de hundir la flota, estoy haciendo las flotas, pero lo que pasa es que me genera los barquitos, pero los que quiere y cuando quiere el programa, algo tendra q ver con la funcion rand, porque lafuncion esta bien, se trata de barco_( uno dos tres y cuatro ) son las funciones, quisiera saber si saben arreglar ese problema, gracias.
#define M 10 #define N 10 #include <stdio.h> #include <stdlib.h> #include <time.h> time_t time( time_t *time ); int rand( void );
char rellena ( char matriz[][N]){ char cadena[1]="."; int i,j; for (i=0; i<M; i++){ for(j=0; j<N; j++){ matriz[j]=cadena[0]; } } }
char barco_cuatro ( char matriz1[M][N] ){ char cad[1]="#"; int numero, num; int vert;
do{ numero=rand()%7; num = rand()%10; vert = rand()%2; } while ((matriz1[numero][num-1]==cad[0] && matriz1[numero][num+1]==cad[0] && matriz1[numero-1][num]==cad[0] && matriz1[numero][num]==cad[0] && matriz1[numero+1][num]==cad[0] && matriz1[numero+1][num+1]==cad[0] && matriz1[numero+1][num-1]==cad[0] && matriz1[numero+2][num]==cad[0] && matriz1[numero+2][num-1]==cad[0] && matriz1[numero+2][num+1]==cad[0] && matriz1[numero+3][num]==cad[0] && matriz1[numero+3][num-1]==cad[0] && matriz1[numero+3][num+1]==cad[0] && matriz1[numero+4][num]==cad[0]) || ( matriz1[num][numero]==cad[0] && matriz1[num][numero-1]==cad[0] && matriz1[num-1][numero]==cad[0] && matriz1[num+1][numero]==cad[0] && matriz1[num][numero+1]==cad[0] && matriz1[num+1][numero+1]==cad[0] && matriz1[num-1][numero+1]==cad[0] && matriz1[num][numero+2]==cad[0] && matriz1[num+1][numero+2]==cad[0] && matriz1[num-1][numero+2]==cad[0] && matriz1[num][numero+3]==cad[0] && matriz1[num-1][numero+3]==cad[0] && matriz1[num+1][numero+3]==cad[0] && matriz1[num][numero+4]==cad[0])); { }
if ( matriz1[numero][num-1]!=cad[0] && matriz1[numero][num+1]!=cad[0] && matriz1[numero-1][num]!=cad[0] && matriz1[numero][num]!=cad[0] && matriz1[numero+1][num]!=cad[0] && matriz1[numero+1][num+1]!=cad[0] && matriz1[numero+1][num-1]!=cad[0] && matriz1[numero+2][num]!=cad[0] && matriz1[numero+2][num-1]!=cad[0] && matriz1[numero+2][num+1]!=cad[0] && matriz1[numero+3][num]!=cad[0] && matriz1[numero+3][num-1]!=cad[0] && matriz1[numero+3][num+1]!=cad[0] && matriz1[numero+4][num]!=cad[0] && vert<=0){ matriz1[numero][num]=cad[0]; matriz1[numero+1][num]=cad[0]; matriz1[numero+2][num]=cad[0]; matriz1[numero+3][num]=cad[0]; } else if ( matriz1[num][numero]!=cad[0] && matriz1[num][numero-1]!=cad[0] && matriz1[num-1][numero]!=cad[0] && matriz1[num+1][numero]!=cad[0] && matriz1[num][numero+1]!=cad[0] && matriz1[num+1][numero+1]!=cad[0] && matriz1[num-1][numero+1]!=cad[0] && matriz1[num][numero+2]!=cad[0] && matriz1[num+1][numero+2]!=cad[0] && matriz1[num-1][numero+2]!=cad[0] && matriz1[num][numero+3]!=cad[0] && matriz1[num-1][numero+3]!=cad[0] && matriz1[num+1][numero+3]!=cad[0] && matriz1[num][numero+4]!=cad[0] && vert>0){ matriz1[num][numero]=cad[0]; matriz1[num][numero+1]=cad[0]; matriz1[num][numero+2]=cad[0]; matriz1[num][numero+3]=cad[0]; }
}
char barco_tres ( char matriz[M][N] ){ char cad[1]="#"; int numero, num; int vert; do{ numero=rand()%8; num = rand()%10; vert = rand()%2;
} while ((matriz[numero][num-1]==cad[0] && matriz[numero][num+1]==cad[0] && matriz[numero-1][num]==cad[0] && matriz[numero][num]==cad[0] && matriz[numero+1][num]==cad[0] && matriz[numero+1][num+1]==cad[0] && matriz[numero+1][num-1]==cad[0] && matriz[numero+2][num]==cad[0] && matriz[numero+2][num-1]==cad[0] && matriz[numero+2][num+1]==cad[0] && matriz[numero+3][num]==cad[0]) || ( matriz[num][numero]==cad[0] && matriz[num][numero-1]==cad[0] && matriz[num-1][numero]==cad[0] && matriz[num+1][numero]==cad[0] && matriz[num][numero+1]==cad[0] && matriz[num+1][numero+1]==cad[0] && matriz[num-1][numero+1]==cad[0] && matriz[num][numero+2]==cad[0] && matriz[num+1][numero+2]==cad[0] && matriz[num-1][numero+2]==cad[0] && matriz[num][numero+3]==cad[0])); { }
if ( matriz[numero][num-1]!=cad[0] && matriz[numero][num+1]!=cad[0] && matriz[numero-1][num]!=cad[0] && matriz[numero][num]!=cad[0] && matriz[numero+1][num]!=cad[0] && matriz[numero+1][num+1]!=cad[0] && matriz[numero+1][num-1]!=cad[0] && matriz[numero+2][num]!=cad[0] && matriz[numero+2][num-1]!=cad[0] && matriz[numero+2][num+1]!=cad[0] && matriz[numero+3][num]!=cad[0] && vert<=0){ matriz[numero][num]=cad[0]; matriz[numero+1][num]=cad[0]; matriz[numero+2][num]=cad[0]; } else if ( matriz[num][numero]!=cad[0] && matriz[numero][numero-1]!=cad[0] && matriz[num-1][numero]!=cad[0] && matriz[num+1][numero]!=cad[0] && matriz[num][numero+1]!=cad[0] && matriz[num+1][numero+1]!=cad[0] && matriz[num-1][numero+1]!=cad[0] && matriz[num][numero+2]!=cad[0] && matriz[num+1][numero+2]!=cad[0] && matriz[num-1][numero+2]!=cad[0] && matriz[num][numero+3]!=cad[0] && vert>0){ matriz[num][numero]=cad[0]; matriz[num][numero+1]=cad[0]; matriz[num][numero+2]=cad[0]; }
}
char barco_dos ( char matriz[M][N] ){ char cad[1]="#"; int numero, num; int vert; do{ numero=rand()%9; num = rand()%10; vert = rand()%2;
} while ((matriz[numero][num-1]==cad[0] && matriz[numero][num+1]==cad[0] && matriz[numero-1][num]==cad[0] && matriz[numero][num]==cad[0] && matriz[numero+1][num]==cad[0] && matriz[numero+1][num+1]==cad[0] && matriz[numero+1][num-1]==cad[0] && matriz[numero+2][num]==cad[0]) || ( matriz[num][numero]==cad[0] && matriz[num][numero-1]==cad[0] && matriz[num-1][numero]==cad[0] && matriz[num+1][numero]==cad[0] && matriz[num][numero+1]==cad[0] && matriz[num+1][numero+1]==cad[0] && matriz[num-1][numero+1]==cad[0] && matriz[num][numero+2]==cad[0])); { }
if ( matriz[numero][num-1]!=cad[0] && matriz[numero][num+1]!=cad[0] && matriz[numero-1][num]!=cad[0] && matriz[numero][num]!=cad[0] && matriz[numero+1][num]!=cad[0] && matriz[numero+1][num+1]!=cad[0] && matriz[numero+1][num-1]!=cad[0] && matriz[numero+2][num]!=cad[0] && vert<=0){ matriz[numero][num]=cad[0]; matriz[numero+1][num]=cad[0]; } else if ( matriz[num][numero]!=cad[0] && matriz[num][numero-1]!=cad[0] && matriz[num-1][numero]!=cad[0] && matriz[num+1][numero]!=cad[0] && matriz[num][numero+1]!=cad[0] && matriz[num+1][numero+1]!=cad[0] && matriz[num-1][numero+1]!=cad[0] && matriz[num][numero+2]!=cad[0] && vert>0){ matriz[num][numero]=cad[0]; matriz[num][numero+1]=cad[0]; }
}
char barco_uno ( char matriz[M][N] ){ char cad[1]="#"; int numero, num; do{ numero = rand() % 10; num = rand()%10;
} while (matriz[numero][num-1]==cad[0] && matriz[numero][num+1]==cad[0] && matriz[numero-1][num]==cad[0] && matriz[numero][num]==cad[0] && matriz[numero+1][num]==cad[0]); { }
if ( matriz[numero][num-1]!=cad[0] && matriz[numero][num+1]!=cad[0] && matriz[numero-1][num]!=cad[0] && matriz[numero][num]!=cad[0] && matriz[numero+1][num]!=cad[0]){ matriz[numero][num]=cad[0]; }
}
char imprimir_tablero ( char matriz1[M][N], char matriz2[M][N]){ int i, j; printf (" |0123456789\t\t |0123456789\n"); printf ("------------\t\t------------\n"); for (i=0; i<M; i++){ printf ("%d|", i); for (j=0; j<N; j++){ printf ("%c", matriz1[j]); } printf("\t\t"); printf ("%d|", i); for (j=0; j<N; j++){ printf ("%c", matriz2[j]); } printf ("\n"); } printf ("\n\n"); }
char barcos ( char matriz[M][N] ){ barco_uno (matriz); barco_uno (matriz); barco_uno (matriz); barco_uno (matriz); barco_dos (matriz); barco_dos (matriz); barco_dos (matriz); barco_tres (matriz); barco_tres (matriz); barco_cuatro (matriz); }
main (){ int i, j; char miflota[M][N]; char mistiradas[M][N]; char suflota[M][N]; char sustiradas[M][N]; srand( time(NULL) ); rellena (miflota); rellena (mistiradas); rellena (suflota); rellena (sustiradas); barcos(miflota); imprimir_tablero (miflota, mistiradas); }
Como dice flaquito, tu código es muy ininteligible... Intenta depurarlo y dejarlo más claro.
|
|
|
|
|
9
|
Programación / Programación C/C++ / Re: Error de aplicación... :-S
|
en: 02 Septiembre 2008, 16:59
|
Si compilas con g++: main.cc: In function ‘void Binario(long unsigned int)’: main.cc:34: aviso: la comparación siempre es verdadera debido al rango limitado del tipo de datos
Solución: poner int j en lugar de unsigned short int j; Sigue haciendo lo mismo, pero en vez de mostrar 10 dígitos antes de los correctos muestra más, ya que le estás ampliando el rango de datos. Esa no es la solución a lo que ocurre.
|
|
|
|
|
11
|
Programación / Programación C/C++ / Error de aplicación... :-S
|
en: 02 Septiembre 2008, 16:33
|
Hola, muy buenas, como estan: Esta tarde estoy aburrido y estoy intentando hacer un conversor decimal a binario, octal...etc. He creado una simple función para convertir de decimal a binario, y al compilar no muestra ningun signo de error ni warning. Pero al ejecutarlo hace algo extraño que no logro comprender muy bien. El caso esque introduzco por ejemplo el numero 504, me salta el error, y al principio de la impresión de resultado aparecen unos números que no se de donde provienen y al final se puede comprobar que está el numero correctamente convertido a binario. Ejemplo: 504 en binario es 111111000. El programa me muestra esto: 5242800000 111111000. Como veis al final el número binario esta correcto pero antes muestra algo que no logro saber que es. Aqui os enseño una imagen del problema: http://img239.imageshack.us/img239/9803/errorcy5.jpgSaludos y gracias de antemano. PD: Aquí va el código. #include <iostream> using namespace std; void Binario (unsigned long int); int main (){ unsigned long int Ndecimal; cout << "Introduzca decimal para posterior conversion: "; cin >> Ndecimal; Binario (Ndecimal); return 0; } void Binario (unsigned long int Decimal){ unsigned short int i, j, matriz[15]; unsigned long int Ndecimal; Ndecimal = Decimal; for (i=0; i<14; i++){ matriz[i] = Ndecimal % 2; Ndecimal = Ndecimal / 2; } cout << Ndecimal << "en binario equivale a: "; for(j=14;j>=0;j--){ cout << matriz[j]; } }
|
|
|
|
|
12
|
Forums Generales / Foro Libre / Re: Porfin algo de informatica decente en el instituto
|
en: 02 Septiembre 2008, 14:13
|
|
Respecto a lo que dices, quiero añadir que en mi instituto nos implantaron Ofimática, que es todo el hardware, software y sistemas de numeración. (Convertir de decimal a binario, octal, hezadecimal...) y a la inversa. De esa base no queda nada, donde yo me quejo es en el sector de la programación. No dimos nada!
|
|
|
|
|
13
|
Forums Generales / Foro Libre / Re: Porfin algo de informatica decente en el instituto
|
en: 02 Septiembre 2008, 13:56
|
Se centran mas en la ofimática que en la informática  o por lo menos a mí me pasó eso, mucho Office y nada de programación (ni un 'hola mundo' xD) Es cierto, pero no por nada, creo, sino porque la programación del curso lo establece así. Pero ya era para que se mojaran un poco y nos dieran algo de más...
|
|
|
|
|
14
|
Forums Generales / Foro Libre / Re: Que precio le dan a elhacker?
|
en: 02 Septiembre 2008, 13:54
|
no, yo no me lo creo porque la de microsoft no vale ni 10€...  pero google en realidad tiene que ser muy muy muy cara... Jajajaja xDDD que antimicrosoft eres xD No estoy ni en un bando ni otro pero esto no es ser anti-microsoft, es decir estupideces... jaja era una broma! Jaja, vale buena onda men! 
|
|
|
|
|
15
|
Forums Generales / Foro Libre / Re: Que precio le dan a elhacker?
|
en: 02 Septiembre 2008, 00:56
|
no, yo no me lo creo porque la de microsoft no vale ni 10€...  pero google en realidad tiene que ser muy muy muy cara... Jajajaja xDDD que antimicrosoft eres xD No estoy ni en un bando ni otro pero esto no es ser anti-microsoft, es decir estupideces...
|
|
|
|
|
|
| |
|