|
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 - Amilius
Páginas: 1 ... 20 21 [22] 23 24 ... 27
526
« en: Martes 20 de Julio de 2004, 17:30 »
.... y muchos muchos de ellos usan por lo general dos de estas librerias para usar graficos en 3D: OpenGL (multiplataforma) DirectX ("windows only") ahora hay otra menos "semiprofesional" llamada allegro muy buena y SDL......... Muy cierto, pero existe algo muy importante que hay que aclarar: OpenGl es la mejor opción si no realizarás un sistema comercial. ¿Alguna ves viste en los juegos que usan directX la lista de "Tarjetas aceleradoras soportadas"? Ese es el principal lío con directX, tienes que poner esfuerzo extra para que tu sistema soporte gran variedad de tarjetas aceleradoras de video. Por otra parte si las companías de juegos eligen DirectX es por que les permite un poco más de libertad de optimización para usar las características especiales de las tarjetas de cada compañia (a costa de mucho trabajo por el lío de soportar varias tarjetas aceleradoras). En muchos casos las compañias prefieren pagar por licencias de uso del "Engine 3D", por la cantidad de trabajo que supone crear uno propio, especialmente en DirectX por el problemilla indicado. Te aseguro que no es bonito ver como tu juego no funciona en otra máquina sólo por que tiene una tarjeta aceleradora fabricada por otra compañía.
527
« en: Martes 20 de Julio de 2004, 01:42 »
Segunda parte: Tienen que bajar las dos partes.
528
« en: Martes 20 de Julio de 2004, 01:36 »
Saludos a todos!!! Aqui va mi versión de Sokoban para Delphi3, (Abre archivos de colecciones, hasta 19x17 de tamaño) Para usar: Cursores, Retroceso, Avanzar y Retroceder página para cambiar de tablero, inicio para volver a comenzar, 1 al 8 para elegir personaje , M para cambiar música de fondo. Primera Parte:
529
« en: Sábado 17 de Julio de 2004, 04:15 »
Lo mejor es que crees un protocolo propio para enviar un archivo, así enviarás un .jpg como imagen y listo:
Mejor si habilitas otro puerto sólo para intercambio de archivos.
Como los datos te llegarán goteando o a veces de golpe tal vez bloque y medio, medio bloque, mitad de dos bloques (parte final de uno e inicial de otro), tendrás que realizar la recepción de tal forma que vaya acumulando los pedazos hasta completar lo que esperaba recibir.
Ejemplo: Envías una archivo jpg de 32kb:
Nota: Usa sendText, como en delphi se puede usar el #0, no hay problema. * 4BytesACadena es una función que convierte en cadena 4 bytes=cadena de 4 caracteres. "A" sería un prefijo, que indica que enviarás una archivo
- Enviar el nombre del archivo:
"A"+char(LongitudDeNombreArchivo)+NombreArchivoCompleto+4BytesACadena(LongitudArchivo)+
Varias llamadas a sendText() o sendbuffer() con los pedazos del archivo hasta completarlo. OJO cuidado, La longitud de la cadena del nombre de archivo DEBE SER EXACTAMENTE IGUAL a lo que indicas al inicio, igual debe pasar con la longitud del archivo que envías, con este método basta que envies un byte menos o demás para que todo se arruine (en ese caso desconecta todo y reinicia la conexión), pero si está bien hecho todo funciona bien.
Como las capas inferiores de software aseguran que TODO llegue en orden, no tendrás que realizar otras verificaciones adicionales.
Una vez que todo llegue completo, puedes seguir esperando más mensajes en tu puerto especial para archivos.
Para recepción:
reconoce la "A", luego sabes que DEBE llegar 1 byte con el tamaño de la cadena de archivo, ESPERA que gota a gota llegue todo el nombre de archivo, luego DEBEN llegar 4 bytes más con el tamaño del archivo, esperalos. Cuando los tengas sabrás cuantos bytes más deberás esperar e ir almacenando en algún lado hasta que lleguen completos, puede ser que puedas ir guardando en un archivo lo que llegue.
También puedes incorporar la opción de no recibir un archivo, para eso tendrías que tener otro prefijo: "O" digamos para ofrecer archivo, si acepta, cuando llegue el prefijo "A", recibes el archivo, si no esperabas el archivo y del tamaño indicado, simplemente cierras la conexión. (Por eso es mejor tener otro puerto y conexión para enviar archivos para simplificar las cosas)
Finalmente: Los detalles adicionales y controles/seguridad que quieras agregar complicarán enormemente el programa, un chat sencillo es una cosa y otra un programa tipo messenger.
530
« en: Jueves 15 de Julio de 2004, 18:45 »
que tengo que saber para programar un juego. Juank tiene toda la razón, programar VideoJuegos requiere aplicar casi todos los conocimientos que tengas, pero no te desanimes, esto es por que generalmente se quiere estar con la moda del "dulce gráfico y sonoro". Ponte en mente que realizarás un programa entretenido, recreativo y algo adictivo (no una película, ni un clon de otro juego que viste), con los recursos de programación que tengas a mano. Eso requiere mucha imaginación y mucha creatividad. Eso de "por algo se debe empezar", ya es empezar con el pie izquierdo. Tu primer juego no tiene por que ser aburrido, no tiene que ser una clon inferior a otro que ya existe. Puede ser increiblemente sencillo y ser entretenido. Es bueno que no sea un clon más por que muchos preferirían jugar la versión original, pero si tu juego tiene cosas que el otro juego no tiene y que lo hacen divertido la cosa cambia.
531
« en: Jueves 15 de Julio de 2004, 16:31 »
1.- Buscalo en algún reservatorio para juegos en peligro de extinción.
2.- Jugalo y si tienes mente de informático inmediatamente te darás cuenta de lo sencillo que es programarlo. La verdad si luego de jugarlo no te ubicas....bueno, una cosa es simplemente pasar a un lenguaje de prog. unas ecuaciones o algoritmos ya conocidos y otra es crear tus propios algoritmos... si no comienzas ahora a crearlos por tí mismo sin ayuda... no te esperan buenos días... en serio.
La verdad que es uno de los juegos más sencillos de programar y más divertidos, motivos suficientes para que ganara esos premios.
Si diseñas un buen programa podrá correr en modo texto, gráficos 2d y hasta en 3d sin mayores cambios (algo que sería interesante realizar para mostrar un buen ejemplo de separación de interfaz del motor de juego, ya que en este tipo de juego la cosa es bastante separable), debido a que todo se basa en cubos y el personaje(sokoban), podría ser una esfera con una sonrisa o algo así para simplificar. La verdad que sería un buen ejemplo hasta para comenzar con algo extremandamente sencillo y muy divertido en 3d.
Una pista: un arreglo estático es suficiente. No vale la pena una estructura más complicada para ahorrarse un puñado de bytes.
P.D.
No hacemos la tarea a nadie.
532
« en: Jueves 15 de Julio de 2004, 05:29 »
... una cabecera de alto nivel cualquiera uqe sea (hasta la que estoy intentando a hacer) es muchsisiisisisisisisimo más lenta que el lenguaje ensablador... Eso no siempre es cierto. De hecho para hacerlo mejor en ASM tienes que ser un programador de ASM que sepa buenos trucos, por lo menos con los compiladores actuales obtienes código ASM bastante bueno. (Verificado personalmente, luego de desensamblar mis programas) Para pisar terreno firme te aconsejo que hagas esto: verifica el tiempo que toma en la 486 las operaciones de la biblioteca math y compáralas a realizar una multiplicación en punto flotante: realizas con un ciclo "for", digamos, 10000 operaciones simples de coseno, seno, tangente y calculas cuanto tiempo pasó (mejor si lo haces unas 3 a 5 veces y tomas el promedio, mejor si el tiempo de prueba dura por lo menos unos 5 a 10 segundos (aumentas/disminuyes el número de cálculos para que tarde más/menos, más tiempo aburre, menos no es muy exacto) para notar diferencias) También sería bueno que midieras el tiempo que toma realizar la simple graficación en pantalla. Al final veremos en cuanto tiempo realiza digamos 10000 operaciones de coseno, 10000 puntos graficados en pantalla, 10000 líneas dibujadas, etc. Esas mediciones som imprescindibles para decir con certeza si se ha ganado algo (un 10% por lo menos diría que es algo) o nada con una optimización. Teniendo esos datos veremos si es conveniente volver a crear la rueda... Y una cosa... supongo que estará activado la opción de usar coprocesador matemático (y no emulación por software), por lo menos que sepa a partir de las 486 TODOS los procesadores incluyen un coprocesador.
533
« en: Miércoles 14 de Julio de 2004, 17:04 »
Simple: Reemplaza el caracter (existe una CONSTANTE que indica cual es el SEPARADOR DECIMAL en la config. de la máquina) por el que acepta la base de datos con una función tratamiento de cadena, LUEGO que extraes la cadena del control. Esto puede ser molesto ya que tendrás que hacerlo todo el tiempo y mejor si te creas una función para el resto de tu programa. Nota: Posiblemente se pueda configurar el caracter decimal en el manejador de BD, lo que sería una buena alternativa. Más simple: Requerimiento del sistema: configura el caracter de separador decimal a '.' y das una detenida explicación de por que es mejor que se olvide el usuario de usar la coma. Dices que no es estándar en BD (cierto), que si se acostumbra a la coma tendrá líos con otros sistemas de otros países (cierto), que se ve mejor el punto que la coma (cierto), que en las calculadoras vienen con punto y no coma (cierto) y que deje de tocar las pelotas por que no hay tiempo para esos detalles.. (cierto)
534
« en: Miércoles 14 de Julio de 2004, 16:48 »
.... quiero usar estas funciones en una cabecera grafica .....
.... al ser gráfica debo usar en lo mínimo otras cabeceras......
....sobre todo matematicas pues hace muy lento el proceso......
.....en un mdo o gráfico lo importante es la fluides del mismo....... Deja ver si entendí, lo que quieres es velocidad y las funciones que vienen con la biblioteca "math" te parecen un asco de lentas... Dependiendo del nivel de precisión que necesites, sería bueno que intentes usar tablas con los datos precalculados, no existe otra forma más rápida especialmente si las ecuaciones son algo "pesadas". Tendrías que analizar muy bien que resultados esperas para aplicar este método y si es factible o no. Si tu tabla ocupará más MB de RAM de lo que estás dispuesto a usar olvídate de este método. Otro punto que veo: Es posible que, por la forma que estés graficando (Sería bueno que expusieras como estás realizando esto para ver si existe desperdicio de recursos), las funciones de graficación te consuman más tiempo que el mismo cálculo matemático. De todas formas, como tu problema parece ser más de optimización que otra cosa, es vital que indiques información del compilador, versión, detalles del hardware máquina, etc que estás usando para tu programa para tener un panorama adecuado de por que va tan lenta la cosa.
535
« en: Martes 13 de Julio de 2004, 23:27 »
Aqui hay un lío: todo ok, pero con [j], no controlas que se salga de los límites del arreglo. en el caso que r*w sea mayor o igual a N escribirás en un sector de memoria "X", posiblemente pisando otras partes del tu mismo arreglo. Aunque en este caso no da problema es mejor controlar esa situación para evitar futuros problemas.
Otro lío es: [j-w-1], j va de 1 a r*w, cuando j sea 3 y teniendo w 15, sacas datos de una posición que sale de tu arreglo (posiciones negativas) y comienza todo a distorcionarse.
Sería bueno que primero pusieras todos los controles de rango de tu arreglo para asegurar que estén dentro de los límites 0..N-1, tanto al momento de asignar un valor y al momento de leer un valor.
for(j=1;j<=r*w;j++){ if(j<i || j>i*w){ matriz[i][j]=0; } else{ matriz[i][j] = matriz[i][j-1] + matriz[i-1][j-1] - matriz[i-1][j-w-1]; } } }
536
« en: Martes 13 de Julio de 2004, 15:56 »
La clave es o bien usar algun buffer del sistema operativo donde se registren que teclas estén presionadas o construir este buffer tu mismo:
Cuando una tecla se presiona (keydown) se marca como presionada y sólo se desmarca si ocurre el evento / mensaje que esta tecla es liberada (keyup). Así no tienes el problema de tu función actual q es mutuamente excluyente.
De todas formas algunas veces no funciona del todo bien (como sabrán los que jugaban mortal kombat en teclado entre jugadores, cuando por razones del juego necesitas mantener presionada la tecla durante largo tiempo)
Probe con mi programa y veo que cuando presionas cursor arriba y derecha y luego presionas izquierda, no sale presionado "izquierda", también ocurre con otras combinaciones de teclas. Sería bueno que diseñaras el juego de tal forma que no sea necesario mantener presionadas las teclas, o a lo mucho sólo una tecla por jugador sea necesario presionarla un buen rato.
537
« en: Martes 13 de Julio de 2004, 03:41 »
Aqui va la definición flojita: (de www.dicctionary.com) bmp <file format, graphics> Microsoft Windows bitmap format. Bmp files may use run-length encoding. This is the only graphics format where compression actually enlarges the file. The format is widely used nonetheless. (de www.wikipedia.org el mejor diccionario en línea que conozco) .BMP or .DIB (device-independent bitmap) is a bitmapped graphics format used internally by the Microsoft Windows graphics subsystem (GDI), and used commonly as a simple graphics file format on that platform. BMP files are usually not compressed, so they are typically much larger than compressed image file formats for the same image. The typical true-color bitmap size in bytes can be calculated as: (width in pixels)*(height in pixels)*3. So an 800x600 image will occupy almost 1.5 megabytes. As such they are generally unsuitable for transferring images on the Internet or other slow or capacity limited media. Nevertheless, the simplicity of BMP and its widespread familiarity in Windows and elsewhere, as well as the fact that this format is well documented, makes it a very common format that image processing programs from many operating systems can read and write. P.D. "This is the only graphics format where compression actually enlarges the file. The format is widely used nonetheless." JUAS JUA JUAS... De todas formas cualquiera puede "crear" su propio formato gráfico a nivel tan simple como lo es el .bmp.
538
« en: Lunes 12 de Julio de 2004, 22:09 »
Usar archivos para nada...
Mejor postea la parte del algoritmo que reserva memoria para el arreglo, la parte que libera la memoria reservada y la parte donde quieres asignar un valor a la posición[14][111] (sólo esas partes).
539
« en: Lunes 12 de Julio de 2004, 21:58 »
Definitivamente 1 a 100 que es un bug de memoria, la esencia del algoritmo puede estar perfecta, pero algo falla con la administración de memoria.
540
« en: Lunes 12 de Julio de 2004, 21:38 »
... no se si habra espacios en los arreglos en donde no se puedan guardar ciertos datos... ¿De cual fumaste para escribir eso? Si eres un experto en C++, realmente no se que pudo pasar (no cuentas muchos detalles de tu caso ) , pero si eres principiante... (Se nota que eres matemático, sólo los matemáticos le darían nombres tan... a sus variables como r,w y n y encima esperar que todos sepamos de que se trata o que usemos todos EXACTAMENTE la misma nomenclatura). Digamos que C++ no es para principiantes. P.D. Si los resultados salen algo caóticos e inesperados casi siempre es un bug con la administración de memoria, además recuerda que en programación existen pérdidas de precisión, desbordamientos, etc.
541
« en: Lunes 12 de Julio de 2004, 18:56 »
A regy:
Si realmente quieres que alguien te ayude tienes que explicar a todo detalle posible y claramente tu situación (que tipo de estructura estás usando, como llegan los datos a tu red neuronal, # de capas ocultas, tipo de entrenamiento aplicado, como decides cual es el resultado de tu red neuronal, etc. ), de esa forma es posible que alguien que hubiera tenido ese problema te origente con unos cuantos consejos.
542
« en: Sábado 10 de Julio de 2004, 04:33 »
Parece un lio de configuración de directorios... La verdad que el compilador debería indicar por que no pudo cargar el dll para dar más pistas....
543
« en: Sábado 10 de Julio de 2004, 03:13 »
"Pintando" el tablero es una buena opción, con un árbol de búsqueda, si llega a un punto muerto retrocede a un esta anterior y así en forma recursiva.
Una solución es , con Matriz de bits 8x8, 1=Reina, 0=Casilla vacía :
$40,$10, $4, $1,$20,$80, $2 , $8
(Noten la simetría del resultado, que no es casualidad)
544
« en: Viernes 9 de Julio de 2004, 17:34 »
¿Que no sería más práctico mostrar el buffer en hexadecimal?
Además sería bueno reemplazar TODOS los caracteres problemáticos, como neac lo planteo, por otro que te parezca...
Tal vez no sea muy recomendable MODIFICAR el buffer (depende del contexto de tu programa), puede que sea mejor que modifiques una copia del buffer.
545
« en: Jueves 8 de Julio de 2004, 16:09 »
La verdad que no es fácl hacer juegos, pero es muy divertido! Este es el juego de rol en línea que estoy haciendo: http://groups.msn.com/legadodelasartesarcanasYa es totalmente jugable en red y por internet con un servidor en una máquina con un buen ancho de banda. En el manual en .html incluido en los archivos .rar (sólo 3MB de descarga) están mayores detalles acerca del juego.
546
« en: Jueves 8 de Julio de 2004, 15:58 »
Fijate en los ejemplos que vienen con delphi de los componentes para sockets, (tipo chat). Puedes usar ese ejemplo como modelo para tu aplicación, convirtiéndolo de "chat" en lo que necesites.
547
« en: Miércoles 7 de Julio de 2004, 04:18 »
549
« en: Jueves 1 de Julio de 2004, 16:09 »
Para Hades: ¿ Blanco y Negro: 1 bit por pixel (O BLANCO O NEGRO) o Escala de Grises: 8 bits por pixel(256 colores)? Para Eternal: Aunque se desperdicie memoria, es mucho más cómodo trabajar con 8bits que con 1bit, (con unas buenas memorias se puede ganar velocidad al evitar los molestos desplazamientos y máscaras necesarios para tratar bits.). Y aunque, como dices, no se pueden inferir los grises generalmente mapean a 0 y 255. Al guardar nuevamente la imagen a disco, no sería problema volver a 1 bit por pixel, si es deseable y no "aparecieron" grises como consecuencia del tratamiento de la imagen.
550
« en: Martes 29 de Junio de 2004, 22:46 »
Páginas: 1 ... 20 21 [22] 23 24 ... 27
|
|
|