|
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 ... 11 12 [13] 14 15 ... 27
301
« en: Domingo 9 de Octubre de 2005, 22:35 »
Actualmente casi todas las máquinas tienen tarjeta de red. para una solución más efectiva podrías chequear la dirección Ethernet (dirección física) de la tarjeta de red. Y mejor que usar un archivo es unar el registro de windows, delphi viene con funciones para ello y en lugar de guardar una clave estática podrías generar una especial camuflada que cambie siempre así sea el mismo número (una parte aleatoria que enmascara el resto, los bits aleatorios sólo los conocería tu programa) Y para asegurarte algo más de protección puedes comprimir tu .exe con el UPX ( www.sourceforge.net)
302
« en: Domingo 9 de Octubre de 2005, 16:03 »
No, está bien... habría que ver qué hace el ArbolVacío(), porque quizás estés con un problema ahí.. pero hasta ahora está perfecto.
Sobre pasar los punteros por valor, Pascal hace una copia del puntero en esa variable. Si hacés un Dispose(ptr), entonces esa memoria se libera, y el puntero pasa a ser nil... pero el puntero original, todavía está apuntando a una zona de memoria, que ya fue liberada, por ende, cuidado con eso.
Es preferible pasarlos siempre por referencia, de modo que siempre se trabaje con el mismo puntero... Bah, por lo menos así pienso yo.
---
Te incluyo como lo haría yo, usaría sólo un procedimiento.
procedure VaciarArbol(var A: Arbol); begin if A <> nil then begin VaciarArbol(A^.HI); VaciarArbol(A^.HD); Dispose(A); end; end;
Sólo porque pasaba.. xD Definitivamente faltaba ese A<>nil y queda bastante elegante.
303
« en: Domingo 9 de Octubre de 2005, 15:58 »
Puede ser lio de configuración regional. Escribe el número en el formato de configuración regional en tu edit.
304
« en: Sábado 8 de Octubre de 2005, 14:29 »
Pues no soy un guru en esto de programar videojuegos, y siempre que hago un "engine" de tiles, redibujo todo en pantalla, entonces, se me ocurrio algo para "mejorar" el performance, talvez asi se haga ya profesionalmente o los que saben mas no se, solo quiero ver si le ven ventajas a esto:
En vez de re-dibujar todo, solo se redibujan los 8 tiles (o 9 incluyendo el del sprite) alrededor del sprite que se mueve, si son varios pues solo los tiles de los sprites que se mueven... en caso de que algun tile sea animado pues el tile animado tambien, dejando intactos los demas tiles... no se si me di a entender... no sean muy duros con sus criticas
La idea es buena, sería mejor que lo generalices a rectángulos en lugar de grupos de tiles. Si tu algoritmo principal puede dibujar la escena de tu juego limitándose al área de un rectángulo entonces podrías optimizar bastante al evitar transferencias de memoria innecesarias. En el juego de rol que hice, aunque se mueve con scroll, esta es una parte esencial tanto para evitar dibujar en vano en zonas que están tapadas por ejemplo por un menú opaco y además que garantiza control de límites: en los algoritmos que realizan transferencia de memoria ya no tengo que preocuparme si el elemento que estoy dibujando está saliendo de la zona donde puedo dibujar. Si la zona rectangular que voy a dibujar se "sale" de la zona de la pantalla (en general la zona que hay que redibujar), un algoritmo lo recorta y actualiza su posición y dimensiones: Este código también sirve si aplicarás efecto de reflejo vertical a tus imágenes: function EstaEnPantalla(var rDestino,rOrigen:Trect;const espejo:bytebool):bytebool; // Determina si la imagen que debe ser dibujada aparece en pantalla y modifica //los rectángulos origen y destino si estos exceden las dimensiones adecuadas. begin with rDestino do if (left<Limites_Lienzo.right) and (right>=Limites_Lienzo.left) and (top<Limites_Lienzo.bottom) and (bottom>=Limites_Lienzo.top) then begin result:=true; //Reducir el tamaño del cuadro si sale de pantalla if espejo then begin//caso del espejo if right>Limites_Lienzo.right then begin right:=Limites_Lienzo.right; rOrigen.Left:=rOrigen.Right-right+left; end; if left<Limites_Lienzo.left then begin left:=Limites_Lienzo.left; rOrigen.right:=rOrigen.left+right-left; end; end else begin// caso normal if right>Limites_Lienzo.right then begin right:=Limites_Lienzo.right; rOrigen.Right:=rOrigen.Left+right-left; end; if left<Limites_Lienzo.left then begin left:=Limites_Lienzo.left; rOrigen.Left:=rOrigen.Right-right+left; end; end; if bottom>Limites_Lienzo.bottom then begin bottom:=Limites_Lienzo.bottom; rOrigen.Bottom:=rOrigen.top+bottom-top; end; if top<Limites_Lienzo.top then begin top:=Limites_Lienzo.top; rOrigen.top:=rOrigen.Bottom-bottom+top; end; end else result:=false; end;
305
« en: Sábado 8 de Octubre de 2005, 14:08 »
Hola a todos!!
la pregunta...
que tecnica usan o usaran para colocar los enemigos en una etapa...
o como le hacen para que aparezca el enemigo en el mismo lugar siempre...
estan tambien en un mapa de tiles?? En mi caso habilite una opción para poner "nidos" de bichos en una determinada posición con un editor de "mapas". Cada cierto tiempo van saliendo los bichos hasta llegar a cierto límite. Alguna vez sólo se quiere que aparezca uno otras veces que aparezcan unos 12.
306
« en: Sábado 8 de Octubre de 2005, 14:06 »
a mi la mayoria de los modos me apagan el monitor o me ponen el simbolito de "Hz?" pero algunos si andan en mi maquina, no se poeque el monitor no los soporta pero lo que hace el programa es ver que modos soporta la placa y por ahi al monitor no le gustan.
lo que me preocupa es que lo hice siguiendo al pie de la letra la especificacion de vesa 2.0
no se si soy yo o los monitores de ahora son muy "sensibles" En los monitores antiguos, si mandabas información al azar a los puertos de video podías ver como tu monitor parecía televisor mal sintonizado. No sólo como un mar de pixeles multicolores, sino realmente como televisor en mal estado...
307
« en: Viernes 7 de Octubre de 2005, 07:18 »
bueno, de abreviaciones está lleno el C... puede parecer código "raro" pero es precisamente esas capacidades y facilidades que han hecho tan popular al C y sus descendientes.
308
« en: Domingo 2 de Octubre de 2005, 15:16 »
...textualmente sale:
error C2440: 'initializing' : cannot convert from 'struct Estructura' to 'int'
309
« en: Sábado 1 de Octubre de 2005, 19:41 »
Como dice Alpha es darle la vuelta a la misma tortilla, lo unico que consigues es verla de diferente forma, o incluso que se te queme. Jajajajajajaj, tal cual. En mi opinión personal resulta muy repetitivo UML, pero útil para luego programar sin ambiguedades.
Para no irme demasiado del tema, diré que lo mismo pasa con los diagramas de clases... tienen 4 o 5 vistas que son lo mismo pero de distintos ángulos. Pues siempre es mejor que sobre a que falte, siempre y cuando las "vistas" sean del mismo sistema... ...es decir que no se contradigan...
310
« en: Lunes 26 de Septiembre de 2005, 03:32 »
Busca: "Huge BCD numbers"
311
« en: Lunes 26 de Septiembre de 2005, 03:20 »
yo he visto que sitios hacen eso con su web, con una imagen hace que pcupen todo el ancho y alto.
Saludos Pues pon los enlaces y aprenderemos como lo hicieron. Pero estoy seguro que es algún "truco" con javascript y css.
312
« en: Lunes 26 de Septiembre de 2005, 03:13 »
Pues puse un progressbar de ese tipo y siempre aparece animado, aún sin utilizar DoEvents() por que tiene un timer. Me parece que es un timer del tipo que se desactiva cuando tu formulario pierde foco, asi que el DoEvents() no tiene efecto en ese tipo de progressBar, asi que hay que evitar de alguna forma que el timer quede desactivado.
313
« en: Domingo 25 de Septiembre de 2005, 20:13 »
Pues, como suponía, con el VC++ 6 no compila ni uno ni otro.
314
« en: Domingo 25 de Septiembre de 2005, 19:58 »
En C#: Application.DoEvents(); En Delphi: Application.processMessages();
315
« en: Domingo 25 de Septiembre de 2005, 19:45 »
Pues lo baje y lo instale junto con tropocientos parches. Hasta ahora no se colgo o pasó nada "raro", está bastante bueno una gran herramienta RAD con lo mejor de Delphi, C, VBasic y Java. P.D. Lo único malo es que no es open source.
316
« en: Domingo 25 de Septiembre de 2005, 02:05 »
como hago para que una imagen ocupe todo el ancho y largo!
Saludos, Que sepa no existe posibilidad de "stretch", por lo menos en el estándar. Con Jscript, ASP, PHP o lo que tengas a mano puedes determinar la resolución de la pantalla del cliente y cargar uno u otro fondo.
317
« en: Sábado 24 de Septiembre de 2005, 14:46 »
Eso corresponde al usuario en Configuración Regional. Lo mejor es detertar la configuración al inicio y avisar si algo no va como se desea.
318
« en: Viernes 23 de Septiembre de 2005, 23:36 »
Usar otro arreglo de traducción:
vect=array[0..255] of byte;
vec[vect[ord('A')]]
o directamente, si no te importa tener posiciones no usadas:
vec[ord('A')]
319
« en: Viernes 23 de Septiembre de 2005, 14:50 »
a eso me refiero!
no ocultar propiamente tal...
sino que que no aparezca ARCHIVO.PNG o ARCHIVO.WAV
por lo mismo preguntaba...
tu me dices que es comun utilizar formatos propios... y como lo hiciste en tu juego??
no me imagino creando un nuevo formato de imagen mejor que un png... quizas un formato donde almacene muchos archivo... pero tampoco se me ocurre mucho como implementar algo asi...
tienes una idea de como hacer tales cosas??? para ya va mi pregunta...
y gracias por responde... lastima que no haya mucha gente que responda... Creas una clase a manera de stream, que pueda guardar/leer todos los archivos de tu juego en otro gigantesco, con una pequeña tabla que indica donde comienza cada archivo y como se llama. Puedes mejorarlo usando un algoritmo de compresión muy ligero y luego aplicando un nivel de encriptación de baja seguridad como un simpre xor a cada byte a partir de números pseudoaleatorios y te aseguro que a menos que sea un craker de verdad no podrá extraer tus archivos. Un lamer por definición no podría crear su propia herramienta para extraer los archivos de tu sistema personalizado, sólo de un sistema bastante extendido para el cual algún craker ya publicó una herramienta.
320
« en: Jueves 22 de Septiembre de 2005, 20:37 »
Si funciona correctamente tiene que apilar todo lo necesario, incluyendo variables locales y parámetros. Imaginate que tengas un "for i" dentro tu recursiva que comparta la variable i entre las llamadas anidadas, ¿Verdad que no funcionaría de la forma esperada?
321
« en: Jueves 22 de Septiembre de 2005, 20:11 »
¿Acaso Windows esta hecho en Java o .NET? ¿Acaso los juegos SERIOS que se venden en todos lados estan hechos en Java o .NET? ¿Acaso viste algun driver hecho en Java o .NET? Esto si es hilarante, desde el punto de vista de un Ingeniero de Sistemas. Cada herramienta tiene un propósito y es adecuada para ciertos casos. Si existe Java y el .NET es por que en estos tiempos no puedes darte el lujo de hacerlo todo en ASM o incluso en C++. Si no fuera así no existiría Delphi, Visual Foxpro, Visual Basic ni otras herramientas diseñadas para satisfacer necesidades tan variadas y distintas. Y hablando de juegos 100% diseñados para ser comerciales: ya NO se hacen desde 0 y generalmente se prefiere comprar licencias de un motor de juego 3d, un motor de juego cliente-servidor, mejor si es configurable con scripts para no tener que programar los aspectos específicos del juego, además de adquirir lo que sea necesario para tenerlo listo lo antes posible. Si desarrollas una aplicación de base de datos, a menos que sea un caso verdaderamente excepcional, no vas a construir tu propio motor de base de datos.
322
« en: Miércoles 21 de Septiembre de 2005, 19:18 »
Acabo de sacar la versión Beta.47. Tiene varias mejoras, especialmente para crear mapas interesantes con posibilidad de agregar palancas y mecanismos típicos de calabozos.
323
« en: Lunes 19 de Septiembre de 2005, 04:12 »
Hola tu game loop esta bien pero no entiendo crt2?????? y tambien quisiera saber como lo optimizarias con assembler ... porque no convence mucho tu ejemplo. JA JA JA JA El ctr original tiene el bug de desbordamiento al calcular el retardo necesario para el delay. El código del tick obviamente necesita optimización y de ser posible una forma de tener granularidad de milésimas de segundo en lugar de 58ms. Pero eso corresponde a la sección del foro para assembler .
324
« en: Domingo 18 de Septiembre de 2005, 15:31 »
Ahi va un game loop verificado: program gameloop; uses dos,crt2;{sin bug} var G_CONTADOR_DE_FRAMES:integer; const {Nota: No soporta menos de 5 por granularidad de 54ms} intervalo_entre_ticks=5;{0.05 segundos, unos 20fps} procedure dibujarFrame; var Hour, Minute, Second, Sec100: word; begin getTime(Hour, Minute, Second, Sec100); writeln('Hola mundo! ',G_CONTADOR_DE_FRAMES,' * ',hour,':',minute,':',second,'.',sec100); inc(G_CONTADOR_DE_FRAMES); end; procedure realizarBucleMaestro; function ticks:longint; var Hour, Minute, Second, Sec100: word; begin {granularidad: t¡picos 54ms} {nota: optimizar con asm} getTime(Hour, Minute, Second, Sec100); ticks:=sec100+second*100+minute*6000+hour*360000; end; var finalizarBucle:boolean; tiempo,tiempoAnterior:longint; kbd:char; begin tiempoAnterior:=ticks; finalizarBucle:=false; repeat tiempo:=ticks; {evitando bug de media noche} if tiempo<tiempoAnterior then tiempoAnterior:=tiempo; {control de intervalo} if tiempo-tiempoAnterior>=intervalo_entre_ticks then begin tiempoAnterior:=tiempo; dibujarFrame; end; {procesar teclas presionadas y otros eventos} while keypressed=true do begin kbd:=readkey; case kbd of #27:exit; end; end until finalizarBucle; end; begin realizarBucleMaestro; end.
P.D. Al hacer copy paste se perdió algo de la tabulación
325
« en: Domingo 18 de Septiembre de 2005, 14:23 »
Usa ASP.NET si quieres aumentar tu productividad, ahora con ASP.NET 2.0, lo que antes hacias en 2 semanas lo haces en un par de horas... ASP.NET 2.0 por si sólo no implica que aumentes tu productividad, probablemente te refieras al vs.net 2005... Además no todas las cosas las puedes hacer con wizards (al menos para una aplicación seria) Si todo nuestro trabajo se hiciera con wizards les aseguro que un dos por tres todos quedamos sin empleo. Esperemos que nunca sea así. "Aplicación seria" ¿Que es una "aplicación seria"? ¿Una aplicación comercial? ¿Una aplicación que será utilizada por empresas "serias"? ¿Una aplicación que toma más de tres meses implementarla? ¿Una aplicación que si no funciona como es debido te pueden meter preso? ¿Una aplicación que no bromea contigo ? Me parece una frase demasiado ambigua. Podría significar multitud de cosas y definitivamente no es de las que utilizaría.
Páginas: 1 ... 11 12 [13] 14 15 ... 27
|
|
|