|
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 ... 8 9 [10] 11 12 ... 27
226
« en: Domingo 15 de Enero de 2006, 16:20 »
Seria mejor una funcion más general como: Para vertical descendente deltaX=0, deltaY=1; Para horizontal normal deltaX=1, deltaY=0; Para horizontal reverso deltaX=-1, deltaY=0; Para diagonal deltaX=1, deltaY=1; deltaX=-1, deltaY=-1; deltaX=-1, deltaY=1; deltaX=1, deltaY=-1; const maxX=10; const maxY=10; var Tablero: array[1..maxX,1..maxY] of char; function colocarEnLaSopa(cadena: string; PosX, PosY, deltaX, deltaY: integer): boolean; function PosicionValida(PosX, PosY:integer):boolean; begin PosicionValida:=(PosX>=1) and (PosX<=maxX) and (PosY>=1) and (PosY<=maxY); end; var i, caracteres: integer; begin //Para normalizar posicion inicial a 0 y no 1: caracteres:=length(cadena)-1; //Revisar posicion inicial y final, si ambas son validas, entonces se puede colocar en la sopa. if PosicionValida(PosX, PosY) and PosicionValida(PosX+caracteres*deltaX,PosY+caracteres*deltaY) then begin //Primero revisar por las casillas si estan libres for i:=0 to caracteres do if Tablero[PosX+i*deltaX,PosY+i*deltaY] <> ' ' then begin colocarEnLaSopa:=false; exit;//casilla ocupada, salir end; //Agregar las letras for i:=0 to caracteres do Tablero[PosX+i*deltaX,PosY+i*deltaY] := cadena[i+1]; colocarEnLaSopa:=true; end else colocarEnLaSopa:=false; end;
227
« en: Viernes 13 de Enero de 2006, 15:44 »
y por que no usas "Scheduled Tasks" un servicio esta pensado para trabajar todo el tiempo, si tu aplicacion se ejecuta solo una vez al dia el resto del tiempo va estar consumiendo recursos sin hacer mucho.
228
« en: Miércoles 11 de Enero de 2006, 23:53 »
Microsoft ha ido cerrando Dx para lenguajes no producidos por ellos. Direct X no esta "cerrado" a ningun lenguaje o compilador. Obviamente si utilizas el Visual Studio tienes la ventaja del SDK dedicado a directX por que es producto de microsoft y por logica tiene que apoyar al directX. En cambio en otros compiladores simplemente tendras que hacer todo el trabajo para utilizar las .Dll de directX si es que no tienen algo hecho para ayudar como el delphiX que te facilita el camino. Es necesario que el compilador que uses tenga la capacidad de generar codigo que pueda llamar a las funciones de una Dll de windows y el turbo pascal 7 NO tiene esa capacidad. (vamos, es para aplicaciones de 16 bits para DOS y no para windows)
229
« en: Lunes 9 de Enero de 2006, 16:37 »
Es mejor separar la interfaz de usuario de la logica del juego/aplicacion.
230
« en: Domingo 8 de Enero de 2006, 20:52 »
Tienes que tener separados los datos de la imagen Tbitmap y la zona donde deseas pintarlo: Tcanvas, luego aplicas CopyRect para copiar de un rectangulo de tu bitmap a otro que corresponde a la pantalla.
231
« en: Domingo 8 de Enero de 2006, 20:49 »
Colocas un boton "otra vez!"
Y al presionarlo modificas el estado del programa a su estado inicial, algo como inicializar y solo evitando repetir la palabra... No es necesario construir otro formulario.
232
« en: Domingo 8 de Enero de 2006, 20:46 »
Por el bien de la jugabilidad... seria bueno que tenga una opcion para usar un puntero a 4 colores (blanco, negro, transparete e inverso)... solo para evitar que no puedas jugar cuando hay mucha accion en pantalla (pocos fps) por ejemplo en un RTS cuando no tienes una buena maquina...
233
« en: Sábado 7 de Enero de 2006, 21:36 »
234
« en: Sábado 7 de Enero de 2006, 14:30 »
El mas potente, no es cosa fácil de utilizar pero si necesitas hacer cosas realmente fuera de lo comun lo recomendado es el open source de microsoft: wix. Además que es 100% gratuito. http://sourceforge.net/projects/wixEl mejor tutorial hasta el momento, (si encuentran otro mejor avisen), aunque es posible que tengas que buscar "custom actions" para la instalacion de la base de datos access. Lo probe con sql server y va de maravilla, pero con access habria que ver... http://www.tramontana.co.hu/wix/y por supuesto la ayuda en msdn del msi. Y para editar los msi el orca.
235
« en: Viernes 30 de Diciembre de 2005, 19:38 »
Hola Amilus:
He probado así como dices tú, incluso acabo de modificar el procedimiento para probar la forma que me indicas, pero la lista no se ordena.
No entiendo cuando dices que dejo un montón de nodos huérfanos . Simplemente cambio la información de un nodo a otro, pero no toco la estructura de la lista. Si te refieres al Aux que queda siempre por ahí pues con un dispose lo arreglo, no?
Bueno, tu me dices en que me estoy equivocando. Gracias. Si, efectivamente me referia al Aux. Si Datos es un registro y no un puntero no hay problema, pero no es eficiente por que mueves toda la memoria del registro en lugar de sólo modificar los punteros. (De todas formas un codigo que funciona es mejor que uno que no funciona aunque en teoria si funcionara fuera mas eficiente ) Si Datos es un puntero el new() esta demás por que sólo necesitas intercambiar las posiciones de memoria que contienen. Finalmente si no utilizas: var Lista : TipoListaEnlazada , seria bueno que lo quites para no desperdiciar tiempo de cpu al pasar ese parametro. P.D. Para asegurarte que todo marcha bien seria bueno que al reservar memoria y al liberarla pusieras en pantalla algun mensaje y mejor si tienes un contador en alguna variable global para saber cuantas veces reservaste memoria para un nodo y cuantas veces liberaste la memoria de un nodo.
236
« en: Viernes 30 de Diciembre de 2005, 16:46 »
Rescatando un poco este post y para dejar la solución al problema que planteaba para futuras consultas.
Lo del "error while linking" y el "exitcode=216" al parecer lo provocaba el compilador (FreePascal), probé con TurboPascal y corre sin problemas.
El procedimiento cambiar quedó definitivamente de la siguiente manera:
procedure Cambiar (var Lista : TipoListaEnlazada; var Mayor, Menor : PunteroLista); var Aux : PunteroLista; begin new(Aux); Aux^.Datos := Mayor^.Datos; Mayor^.Datos := Menor^.Datos; Menor^.Datos := Aux^.Datos; end;
Lo que hice fué simplemente cambiar los datos contenidos en los punteros sin cambiar sus enlaces. No se si será medio chapucera esta forma, pero así funciona.
Agradecería cualquier sugerencia, pero como digo, funciona. Pues estas dejando muchos nodos huerfanos de padre y madre... Normalmente la cosa funciona asi: procedure Cambiar (var Mayor, Menor : PunteroALosDatos); var Aux : PunteroALosDatos; begin Aux := Mayor; Mayor := Menor; Menor := Aux; end;
Y luego tienes que asegurarte que sus punteros de enlace al anterior y siguiente apunten a donde quieres. Complicacion que te ganaste por el tipo de estructura de datos que estas usando. Una forma más comoda es usar 3 punteros: al anterior, al actual y al siguiente, asi cuando quieres intercambiar valores de los nodos solo intercambias los indices a ese gran arreglo estatico llamado ram guardados en los punteros "actuales", sin tener las complicaciones de evitar que tu lista quede fragmentada. P.D. "Datos" no figura en los tipos que definiste, es simplemente una forma de abreviar o efectivamente Datos ahora es una variable del tipo puntero a los datos de tu nodo?
237
« en: Viernes 30 de Diciembre de 2005, 16:35 »
Por que replantear todo?
Simplemente agrega el puntero a tu nodo anterior y crea un algoritmo para encadenarlos en reversa si es necesario.
238
« en: Miércoles 28 de Diciembre de 2005, 21:32 »
Podrias usar un par de ciclos para poner unos puntos "." que simbolicen cada posicion y las fichas podrian ser letras como x X o O. En modo full consola redibujando todo cada vez que algo cambie tratando de que aparezca en la misma posicion tu tablero. Recuerdo haber hecho el codigo en pascal... a ver si lo encuentro...
239
« en: Miércoles 28 de Diciembre de 2005, 20:54 »
El timer es del S.O. o es uno propio?
241
« en: Viernes 23 de Diciembre de 2005, 21:28 »
El efecto de alpha blending lo realiza el sistema operativo, sin embargo ese y otros efectos van a quedar eventualmente deprecados en lonhorn (vista) con el "Windows Presentation Foundation" (Avalon) Entre las caracteristicas realmente practicas esta la posibilidad de diseñar tu formulario sin tener que tomar en cuenta la resolucion de la pantalla, ya que como en un juego full 3D mantendra las proporciones a cualquier resolucion, con la diferencia que a mayores resoluciones y una buena pantalla que le haga justicia a la resolucion tu formulario se vera mucho mas nitido. http://msdn.microsoft.com/library/default....eaturesM7-2.asp
242
« en: Viernes 23 de Diciembre de 2005, 21:01 »
Pues el doble buffer fue creado precisamente para eliminar el parpadeo. Hay variantes pero son optimizaciones de la idea principal para reducir la cantidad de memoria que pasas de la ram a la de video al hacer el bitblt. Por ejemplo solo moviendo el o los rectangulos de la pantalla que fueron modificados.
243
« en: Martes 20 de Diciembre de 2005, 16:42 »
El formato antiguo viene desde el Win 3.1 y los archivos tienen extensión HLP. Los nuevos formatos de ayuda tienen extensión CHM el cual guarda la información en HTML.
Pues asi es, que mejor que el HTML que puedes editarlo en lo que quieras para crear una ayuda completa, llena de hiperenlaces, graficos, jscript, etc, etc. P.D. Por que el pdf es tan popular, si es horroroso leerlo, sus letras nunca se ven bien, es lento, el programa que lee esos archivos es ultra pesado y ni siquiera es un formato estandar?
244
« en: Martes 20 de Diciembre de 2005, 16:39 »
... Déjà Vu ... ??? P.D. Deberias usar el buscador del foro antes de postear. Este tema del conecta 4 lo postean por lo menos 2 a 3 veces por semana y ya es bastante molesto verlos aparecer tan seguido.
245
« en: Sábado 17 de Diciembre de 2005, 22:10 »
Tambien seria bueno que echaras un ojo a compiladores como http://www.lazarus.freepascal.org/
Lazarus no está mal, pero un "hola mundo" ocupa algo de 1 mega
Si quieres pasarte a Delphi, práctica POO, es lo que más cuesta en el cambio. Es cierto los .exe crecen y crecen sin medida... Es el costo de la comodidad: cientos de miles de lineas de codigo (no exagero) que posiblemente no serán utilizados pero estan alli de todos modos. Pero ese es un problema bastante común, aunque algunas veces los disimulan bien como con el vs c#.NET. Los .exe tienen tamaño proporcional a tu codigo, un hola mundo es diminuto, pero por detras están varios de megas del .NET framework. P.D. Adjunto un pequeño hola mundo para delphi3 en modo consola, para que a partir de el puedan hacer sus aplicaciones el modo consola teniendo los ejecutables bastante chicos siempre y cuando no utilicen otras bibliotecas con "uses". ( Hola mundo de 16KB, nada de POO para los que no les guste ) ¿Que hace esto en el foro de pascal? Pues simplemente para mostrar que con delphi pueden programar de la forma que lo hacian en pascal, sin tener que meterse con POO, al menos en aplicaciones exclusivas de modo consola. El siguiente paso será utilizar los objetos de delphi pero programando en forma estructurada (es decir sin crear tus propias clases ni extender las que ya existen). Y finalmente, si es que lo necesitan y realmente empiezan a ver que les facilita las cosas empezar a programar sus propias clases.
246
« en: Sábado 17 de Diciembre de 2005, 21:43 »
Todos los nuevos lenguajes son POO, por algo será ¿NO?
¿Para sacarnos la PASTA? (PLATA).
Te voy a poner un ejemplo en VB has visto alguna vez Visual Basic , los modulos que acompañan al lenguaje, mira Crystal Report , se engancha al programa y permite entre otras Navegar por internet , imprimir en cualquier impresora etc. has visto el control RichTexBox que permite editat ficheros RFT importar y pegar ventanas de cualquier aplicación que soporte windows. bueno precisamente estos controles y otros muchos más que de echo facilitan la programacion con el solo echo de heredarlos y que realmente ahorran muchisimo trabajo , precisamente los controles que nesecitas , los mejores , - NO SON GRATUITOS - . y en caso de crear una aplicacion comercial deberas pagar un canon por cada objeto y copia suministrada , al estilo canon MP3, aparte que quien utilice esos controles deberá notificarselo a microsoft .
No se si realmente es una ventaja , lo que si es verdad que ahorran muchissisimo trabajo a la hora de programar.
Pero realmente no me referia a eso , me referia , a usar nuetrsos poropios controles , o crear objetos para despues reutilizarlos , no creo que llegemos a ser comerciales ya que los mejores controles no estan echos en ningún lenguaje de alto nivel ya que estos suelen ser lentisimos , los mejores se programan en Assembler. En cuanto a reutilizar el código , podemos hacerlo mediante funciones o procedimientos , y aun así , está comprobado que es más rápido crear código lineal que generar un bucle aunque tambien genere más gasto de espacio en memoria . - Reducir el código, compactar , Pa Qe, si nos sobran TeraByts
por cierto: has programado alguna vez en P.O.O? ,aunque realmente no sea un nuevo tipo de programacion si no otra forma de pensar.
- ¿cuanto tiempo de más has gastado en crear pastillas reutilizables propias? y ¿cuantas realmente has reutilizado?.
Salu- D.O.S La verdad es que por experiencia personal veo que la gran mayoria no aprende bien a sacar provecho de la POO, pueden dominar la teoria pero en la practica al usar POO se enredan solos. La idea basica de la POO es facilitarte las cosas, no enredarlas. Cuanto más grande el proyecto más notarás el impacto beneficioso de la POO, si es que el sistema esta diseñado correctamente, caso contrario las cosas sólo se complicarán cada vez más y nunca llegarás a notar que tus clases y objetos te estan ahorrando trabajo. Esto de dominar realmente la POO no es trivial, como ya dijeron, es otra forma de pensar y a menos que te pongas a vibrar a la misma frecuencia estarás como un carpintero usando un serrucho como martillo. P.D. Si estas haciendo un programa muy muy chico que no esperas convertirlo en algo más grande, olvidate de la POO.
247
« en: Sábado 17 de Diciembre de 2005, 01:10 »
Este codigo muestra varios triangulos formados por vertices leidos de un archivo de texto y los colorea interpolando los valores de los vertices de acuerdo a varios tipos de interpolacion. Se puede utilizar para mostrar en forma interpolada una superficie formada por triangulos cuyos vertices representen por ejemplo tension, temperatura, etc.
El codigo utiliza la clase TDIB que adjunte anteriormente con algunos cambios adicionales.
248
« en: Viernes 16 de Diciembre de 2005, 20:30 »
Muchas gracias enko y micropais.
acomode el programa segun las modificaciones q me dijistes enko y lo pude compilar bien, bueno ahora me queda por acomodar bien la funcion que me dice si el nomber q estoy ingresando ya existe, el procedimiento q muestra los datos, y bueno despues me ire fijando q correcciones mas tendre q hacerle. una ves q lo tenga terminado lo pongo en el foro para que le eche un vistaso el que quiera .
bueno les cuento, curse primer año de ing. en sistemas en tandil hace 4 años (programaba en turbo pascal 7, por un tema economico y otro q lo unico q me interesaba era programar, tuve q dejar. hace rato q queria empesar de nuevo a programar y no encontraba un solo manual q me ayudara, me baje cantidad de manuales...bla bla bla... ahora empese a practicar de nuevo, encontre un buen manual de free pascal y estoy usando ese . cuando empese me sorprendi de la cantidad de cosas q me avia olvidado. bueno programo porque me gusta-hobby y tambien porque me gustaria hacer plata con esto .
lo que me recomendaron fue q practique bien con pascal y despues me pase a delphi, que opinan de esto?. Pasate a delphi de una vez. La ayuda que tiene es bastante buena, muchisimo mejor que la de otros IDEs como visual studio. Ademas que existe gran variedad de componentes gratuitos para bajarlos y en mi opinion tiene el mejor balance de facilidad de uso y tiempo de programacion vs eficiencia de codigo. De hecho puedes programar codigo tan eficiente como si utilizaras C (compatible con todos los tipos de datos de C), puedes optimizarlo con ASM, pero si no tienes tiempo para darte esos lujos puedes ahorrarte trabajo utilizando componentes, ni que decir de sus capacidades para aplicaciones de bases de datos. Tambien seria bueno que echaras un ojo a compiladores como http://www.lazarus.freepascal.org/
249
« en: Viernes 16 de Diciembre de 2005, 16:24 »
Me sigue pareciendo horrendo Pero claro que es cuestion de gustos, yo lo haria asi:
int funcion (int) // función que realiza ... { for (i = 0; i < j; i++) // recorremos hasta j { for(h=0; h < MAX; h++) //comentario { if (numero == 23) //comentario { numero = 20; } if (i < 10) //comentario { instrucciones; } else { numero2 = 0; } } } }
Generalmente no me gusta usar tantas llaves, a menos que uses el VS2005 u otro compilador que te resalta las llaves inicial y final. Respecto a si se ve mejor o peor usando todas las llaves depende del espaciado entre lineas en tu editor de codigo. Si el espacio es muy chico sin las llaves el codigo se ve horrible, si tienes bastante espaciado entre lineas el codigo se ve horrible si usas las llaves para una sola linea de codigo y especialmente si usas resolucion de 800x600 (ves menos cantidad de codigo en la pantalla), en 1024x768 no es problema. De hecho la unica razon por la que no uso llaves para una sola linea de codigo es poder ver mayor cantidad de codigo en la pantalla al mismo tiempo sin tener que abusar de la barra de desplazamiento. P.D.
250
« en: Jueves 15 de Diciembre de 2005, 15:21 »
Este codigo funciona con los anteriores y versiones antiguas de ie y netscape function getElmntById(anID){ if (document.getElementById) return document.getElementById(anID) else if (document.layers) return document.layers[anID] else if (document.all) return document.all[anID]; else return null; }
Páginas: 1 ... 8 9 [10] 11 12 ... 27
|
|
|