Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - eferion

#781
En esta vida nadie te va a dar de comer... deberías aprender a buscarte un poco la vida mirando en Internet o en libros.

Esto es algo tan sumamente básico que cualquier tutorial, por simplón que sea, lo trata.
#782
toda comunicación por red, ya sea las páginas web, el servidor FTP, ... va por sockets.

Lo que tienes que hacer es  lo siguiente (recuerdo, por si acaso, que es un ejemplo):

Pensarte con tranquilidad la funcionalidad del servidor. Por ejemplo:
* Registrar nueva marca: se necesita nick y marca
* enviar ranking: se necesita posición de inicio y envía los 10 siguientes.

Ahora, en el servidor:
* Creas una página, por ejemplo "registro.php" que reciba por get el nick y la marca... coges esos argumentos y se los enchufas a la base de datos
* Creas otra pagina web "ranking.php" que reciba por get la posición de inicio y genera un XML, por ejemplo, con las diez posiciones de ranking recibidas.

En el cliente:
* Preparas el código para que sea capaz de lanzar peticiones http. Estas peticiones se hacen usando sockets (si no usas ninguna librería específica) por TCP y tienen que ir dirigidas al puerto 80 del servidor.
* Implementas una función que sea capaz de enviarle al servidor la marca conseguida por el usuario ( a registro.php ) y pasándole los argumentos por GET.
* Implementas una función que sea capaz de enviarle al servidor la posición a mostrar del ranking ( a ranking.php ) y pasándole la posición de inicio por GET.

Y ya está!!! vale, esto lleva algo más de tiempo que el que he empleado para describir el ejemplo... pero estos son los pasos básicos.

Puedes diseñar soluciones más elegantes... pero eso ya depende de tus ganas, tus recursos y tus conocimientos.
#783
A ver, esto es como los mensajes de whatsapp... no vale solo con leer el último párrafo, hay que leerlo todo.

Te he comentado que para disponer de una solución factible, tu servidor ha de soportar el uso de páginas dinámicas, ya sea con java, php, asp.net ... si tu servidor no tiene soporte para eso deberías buscarte otro servidor.

Cuando tengas un servidor que de soporte para páginas dinámicas, entonces tienes que programarte un servicio web que haga de pasarela entre tu aplicación y la base de datos que utilizarás para guardar los rankings.

La pasarela debería permitir, al menos, dos tipos de peticiones:

* Registrar una nueva marca
* Devolver el ranking de usuarios ( o al menos los X primeros ).

Si no sabes de qué estoy hablando deberías plantearte bajar el listón una temporada y afianzar conocimientos al respecto.
#784
En programación acostúmbrate a hacer las cosas sencillas... sobretodo porque luego te puede tocar volver a pasar por ellas y entonces agradecerás tener un código legible.
#785
Hablas de un servidor... imagino que será un servidor web.

Los servidores web escuchan peticiones por defecto por el puerto 80.

Obviamente esa configuración no vas a poder tocarla salvo que pagues... pero sí que puedes meter páginas en ese servidor web para que el servidor sea "útil".

Para poder montar un servicio web necesitas que tu servidor disponga de algún tipo de lenguaje de servidor ( php o asp.net son algunos ejemplos ).

Si tu servidor no soporta la ejecución de páginas dinámicas entonces yo te recomendaría buscarte otro servidor.

Como te he comentado, la opción del servidor ftp no la veo muy viable por varias razones:

* Al dar acceso vía ftp tienes que publicar en tu programa los datos de acceso vía FTP al servidor web... eso significa que en menos de una semana te han llenado el servidor FTP de ***** varia.

* Al forzar todas las conexiones por FTP no vas a poder usar el mismo archivo para almacenar las puntuaciones de varios jugadores.... puedes acabar machacando resultados en caso de concurrencia.

* Si optas por que cada usuario utilice un archivo diferente necesitarás algún mecanismo en tu código para poder recuperar todos los archivos y mostrar a cada usuario un ranking... además tendrías que garantizar que los nombres de archivos no se solapan para evitar machacar resultados.

* El punto de acceso FTP es un cuello de botella

* El tráfico FTP de un servidor gratuito suele estar más restringido que el acceso web, por lo que puedes acabar con facilidad con problemas para mantener el servicio en pie.

Yo solo veo un montón de inconvenientes y ninguna ventaja...
#786
Cita de: SCUMM en 12 Febrero 2014, 15:32 PM
tengo el siguiente array de dos dimensiones:
Código (cpp) [Seleccionar]

typedef char Ejex [80];
typedef Ejex Ejey [25];

lo he inicializado como
Código (cpp) [Seleccionar]

Ejey pantalla[25][80];


¿Y no sería más sencillo quitar esas líneas y dejarlo como sigue?

char pantalla[25][80];

Entre otras cosas, no tiene sentido que en el typedef definas un tamaño y a la hora de crear la variable asignes tamaños nuevos... realmente eres consciente de lo que estás haciendo ahí??

Nunca se me ha ocurrido hacer algo semejante... pero no me extrañaría nada que la línea:

Ejey pantalla[25][80];

Quedase una vez explotada como:

char pantalla[25][80][25][80];

o algo similar... la verdad es que mucho sentido no tiene.
#787
Cita de: amchacon en 12 Febrero 2014, 12:00 PM
No si eso lo he entendido. Quitar el include y dejar la "forward declaration".

El problema es el siguiente:

Código (cpp) [Seleccionar]
class punto;

class Linea
{
   punto Punto[100];

   void Dibujar()
   {
       for (int i = 0; i < 100;i++)
       {
               Punto[i].Dibujar();
       }
   }

}


¿Como sabe el compilador que Punto tiene un método dibujar? :huh:
Cita de: eferion en 11 Febrero 2014, 12:46 PM
* Cuando el miembro de una clase es un puntero:
  ...

* Clases pasadas como argumento, se pase la clase por valor, referencia o puntero:
  ...

* Clases retornadas en un método:
  ...

No he mencionado para nada los miembros definidos por valor en mi lista. Obviamente en esos casos no se puede aplicar. Al igual que tampoco funciona si implementas las funciones en el archivo de cabecera...
#788
Cita de: yoel_alejandro en 11 Febrero 2014, 22:11 PM
Excelente eferion  ;-)

En lo particular yo soy un purista de C (y la programación de bajo nivel), pero voy a a tratar de incursionar un poco en las clases contenedoras predefinidas de C++. Si son estándares y altamente conocidas, vale la pena empezar a usarlas jeje.

Si eres un purista de C, programa en C, si programas en C++ usando únicamente las características de C... no estás programando en C++.

Una cosa es que C++ admita las características de C y otra es anteponer las características de C a las propias de C++.

Para sacarle todo el jugo a C++ hay que usarlo olvidándose por completo de la forma de trabajar en C... el código resultante será, por norma general, más legible, corto y exento de errores.

Antes de que me salten al cuello, lo de corto lo digo porque hay características de C++ que implementan algoritmos que en C requieren el uso de una o varias decenas de líneas.
#789
La forma común de afrontar este problema es tener un servicio web escuchando en una dirección y puerto determinados. El cometido del servicio es recibir las puntuaciones de tu juego y almacenarlas en una base de datos para que sean accesibles vía web y/o vía el propio juego.

Lo que tiene que hacer tu juego en este caso es conectarse a dicho servicio para enviar la puntuación. Dicho proceso debería disponer de ciertas medidas de seguridad para, por lo menos, ponérselo difícil al que se quiera adjudicar una puntuación de mil trillones de puntos.

Para la comunicación con el servicio Web sería recomendable utilizar algún protocolo de comunicación independiente de la arquitectura del equipo ( JSON, XDR, ASN.1, protocol buffers, ... ). Aplicando un protocolo de estas características te ahorrarás quebraderos de cabeza futuros.


#790
Cita de: leosansan en 12 Febrero 2014, 08:39 AM
Lo de eferion no termino de entender lo último... En cualquier caso alabo tu "ocurrencia" para no hablar de métodos que consideras más sofisticados. ;)

Simplemente intento ponerme en la piel del que tiene que resolver una práctica de academia / universidad.

Para bien o para mal, el nivel de los contenidos suele ser más bien bajo... aunque de eso te das cuenta cuando terminas y te pegas con el mundo real.

Podía haberme puesto a rebuscar entre mis libros de algoritmia recursos eficientes y precisos para calcular raíces cuadradas... o bien haber mirado en google... pero eso también podía haberlo hecho el autor del hilo.

Para mí un ejercicio de este tipo no es válido si no comprendes la solución. Si copias y pegas pero luego eres incapaz de comprender cómo has llegado a esa solución no has aprendido absolutamente nada.

Cita de: leosansan en 12 Febrero 2014, 08:39 AM
Como vaya a calcular la raíz de 10000000 va a tener que iterar 10000000 de veces antes de empezar las aproximaciones propiamente dichas. Y lo del incremento arbitrario que tomas lo admito, como lo anterior, como ejemplo.

Te alejas un poco... para calcular la raíz de 10.000.000 se emplearían unas 40 iteraciones... ya que la idea es reproducir la forma que te enseñan para hacer raíces cuadradas a mano.

Además, para un ejercicio tipo cuando estás aprendiendo no te suelen pedir que calcules la raíz cuadrada de un número de 200 dígitos... más bien te suelen pedir la raíz de un int... y la raíz de 20.000.000 por ejemplo se puede realizar en un tiempo razonablemente corto con el algoritmo que he propuesto... que hay algoritmos ya hechos??? sí, pero no es mi competencia buscarlos para que él resuelva su práctica.

En base a todo esto, y resumiendo, cuando alguien, como en este caso el autor del hilo, es incapaz de hacer una simple búsqueda en google y se limita a esperar a que alguien le sirva la solución en bandeja no espero que cuente con que yo le de dicha solución. Yo le aporto ideas o posibles caminos... pero no le voy a dar la solución porque ese no es el camino...