|
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 - JuanK
Páginas: 1 ... 218 219 [220] 221 222 ... 231
5476
« en: Viernes 2 de Mayo de 2003, 15:15 »
Bueno, en efecto esa es una manera, que las palabras esten separadas por espacio, aunque tambien podria ser cualquioer otro caracter, una coma o un ; en fin..
El programa no es muy complicado, intenta hacerlo y con gusto resolvere tus inquietudes, revisa las fuciones para menajr archivos, preferiblemente las de alto nivel, como por ejemplo fopen, fseek,fread,fwrite que te trabajan con apuntadores, y en mi punto de vista son mas completas, sin embargo tambien puedes utilizar las de medio nivel, open, read , write, seek, estas funciones utilizan handlers..es decir utilizan numero identificadores de archivo.
JuanK
5477
« en: Viernes 2 de Mayo de 2003, 15:02 »
Tambien lo puedes usar cuando quieres que algo suceda solo cuando el programa es ejecutado y no cuando se este corriendo paso por paso , haciendo debug, ejemplo del djgpp... #include<stdio.h> #include<time.h> int main() { int x, y, count=0; #ifndef DEBUG srand(time); #endif while(count <= 50) { x = rand()%1025; y = rand()%769; dibuja_pelota(x,y); count++; } }
En este ejemplo se necesita que las pelotas aperezcan aleatoriamente ,es decir siempre en lugares diferentes, para ello se siembra una semilla aleatoria con srand(time()), esto resulta muy util en el programa, per si estas corriendo el programa paso a paso para hacer seguimiento del dibujo de la pelota, esto seria un inconveniente ya que cada vez que lo ejecutes aparecerian en lugares diferentes, entonces para evitarlo, le decimos al compilador que solo ejecute srand(time()); cuando se ejecute el programa normalmente, màs no cuando se este haciendo DEBUG. Espero que este ejemplo tambien haya sido claro para ti. Juank
5478
« en: Viernes 2 de Mayo de 2003, 02:28 »
chechea la respuesta que te di con la pregunta de los puerto, pues habras de hacerlo igual.. en todo caso...lo que sea ya esta hecho en allegro, incluido lo del joystick.  Juank
5479
« en: Viernes 2 de Mayo de 2003, 02:26 »
si tu mismo lo quieres programar, usa las in funciones inportb y outportb, en internet encuentras la direccion o el numero del puerto para juegos, es decir el de joystick que es por lo general el mismo puerto para conectar los sintetizadores de sonido, adicionalmente necesitaras conocer las especificaciones de fabrica del joystick, ya que no hay un standart..por esta razon es que windows instala drivers para configurar los joystick, a travez de la API no se si se pueda, lo que si es esguro es que si trabajas con directx sera mucho mas facil porque el toma los recursos ya configurados en el sistema operativo, sin embargo en c.. ser un largo trabajo, preferible en c++ o en c#.
No es dificil hacerlo de ninguna de las formas, pero si es muy largo, alguna vez has manejado la impresora por el puerto serie?..por lo menos una de punto es relativamente facil y seria un buen comienzo para aprender.
suerte.
juank
5480
« en: Viernes 2 de Mayo de 2003, 02:19 »
En el compilador de borland puedes utilizar esto: Constante Valor Significado C40X14 8 Color, con 40 columnas y 14 líneas C40X21 9 Color, con 40 columnas y 21 líneas C40X28 10 Color, con 40 columnas y 28 líneas C40X43 11 Color, con 40 columnas y 43 líneas C40X50 12 Color, con 40 columnas y 50 líneas C40X60 13 Color, con 40 columnas y 60 líneas C80X14 14 Color, con 80 columnas y 14 líneas C80X21 15 Color, con 80 columnas y 21 líneas C80X28 16 Color, con 80 columnas y 28 líneas C80X43 17 Color, con 80 columnas y 43 líneas C80X50 18 Color, con 80 columnas y 50 líneas C80X60 19 Color, con 80 columnas y 60 líneas BW40X14 20 Blanco y negro, con 40 columnas y 14 líneas BW40X21 21 Blanco y negro, con 40 columnas y 21 líneas BW40X28 22 Blanco y negro, con 40 columnas y 28 líneas BW40X43 23 Blanco y negro, con 40 columnas y 43 líneas BW40X50 24 Blanco y negro, con 40 columnas y 50 líneas BW40X60 25 Blanco y negro, con 40 columnas y 60 líneas BW80X14 26 Blanco y negro, con 80 columnas y 14 líneas BW80X21 27 Blanco y negro, con 80 columnas y 21 líneas BW80X28 28 Blanco y negro, con 80 columnas y 28 líneas BW80X43 29 Blanco y negro, con 80 columnas y 43 líneas BW80X50 30 Blanco y negro, con 80 columnas y 50 líneas BW80X60 31 Blanco y negro, con 80 columnas y 60 líneas MONO14 32 Monocromo, con 14 líneas MONO21 33 Monocromo, con 21 líneas MONO28 34 Monocromo, con 28 líneas MONO43 35 Monocromo, con 43 líneas MONO50 36 Monocromo, con 50 líneas MONO60 37 Monocromo, con 60 líneas _ORIGMODE 65 Modo Original al comienzo del programa con la funcion initgraph(); o alguna parecida. o en otros compiladores: o esta funcion void SetMode(char mode) { union REGS r; r.h.ah=0; r.h.al=mode; int86(0x10, &r, &r); }
con estos modos: 01h = Texto, 40x25 caracteres, 16 colores, 8 páginas. 03h = Texto, 80x25 caracteres, 16 colores, 4 páginas. obviamente hay numeros de modo para los otros modos de texto pero eso lo debes de investigar. **esto es solo valido para sistemas microsoft, ya que en linux no se como se hace, pero si se que se puede. juank
5481
« en: Viernes 2 de Mayo de 2003, 00:12 »
Este es un aparte de un proyecto grandisisisimo que presente para la universidad el semestre pasado, a decir verdad aisle el formulario y te lo envio, creo que esto es a lo que te referias, sin embargo con lo que te dio J.M.Movilla deberias haber podido hacerlo facilmente tambien, de hecho más facilmente de como lo hice yo.
Suerte espero que nos cuentes como te fue.
5482
« en: Jueves 1 de Mayo de 2003, 23:53 »
Lamento desilusionarlos(jejeje)  pero el modo texto tiene muchas otras configuraciones 80*25 es solo la configuracion standart habitual pero estas son las que yo conozco: 80*25 80*28 80*35 80*40 80*43 80*50 *---* 80*30 80*34 90*30 90*34 94*30 94*34 de hecho segun he leido esto es casi que completamente "customizable" a travez de programacion, el hecho de que el standart sea 80*25 no quiere decir que no se pueda alterar ya que las versiones que conozco + o - recientes de windows te permiten hacerlo por la configuracion del command promt y si lo haces desde el config.sys en windows 95 98 o me puedes cambiarlo por defecto desde el arranque, esto lo solia hacer hace ya unos años cuando utilizaba estos sistemas.
5483
« en: Miércoles 30 de Abril de 2003, 21:03 »
puedes utilizar la funcion int86 y la libreria dos.h... pero no te sirve porque dices que lo necesitas para linux...de todas maneras, espero que esto te de mas luces, la otra manea es que lo hagas dentro de c , pero con assembler.
5484
« en: Miércoles 30 de Abril de 2003, 20:55 »
Lo que haces es valido siempre y cuando ambos fueran arrays de tamaño definido, sin embargo solo uno de ellos lo es, y el otro es un apuntador a un dato tipo char, por lo cual no puedes determinar el largo de la cadena... soluciones: 1-La de aprender: inicializa las variableas SIEMPRE, es una buena pratica. #include<string.h>. . . char *s2 =NULL;//es un apuntador sin direccion, es decir null int tam=0,i=0; T_CADENA s1; for(i=0;i<MAXCAD;i++) s1=' '; i=0; s2="hola ";/*com truco al final de la cadena agregamos el caracter null paa indicar que hasta alli llego*/ while(s2[i]!=NULL)//miramos el tamaño { tam++; i++; } for(i=o;i<tam;i++)//copiamos s1[i]=s2[i]
2-La forma practica resulta que la libreria string trae algunas funciones que nos pueden ayudar, asi que al inicio del programa deberas incluir el encabezado string.h #include<string.h>. . . char *s2 =NULL;//es un apuntador sin direccion, es decir null int tam=0,i=0; T_CADENA s1; memset(s1,' ',MAXCAD);//ESTA NO ES DE STRING.H s2="hola ";/*como truco al final de la cadena agregamos el caracter null para indicar que hasta alli llego normalmente se supone que en el sistema la cadena termina automaticamente con NULL pero no siempre estop es asi*/ strcpy(s1,s2);//copiamos la cadena
con respecto a esto: void Charptr_TCadena(TCadena & s1,char *s2) no es necesario el & , menos al recibir el parametro, esto les puede ocacionar errores, ya que s1 es un arreglo, es decir ya de por si es un apuntador a nua direccion de memoria. tam=strlen(S2);//esto es mejor poara saber el tamaño Suerte. Juank
5485
« en: Miércoles 30 de Abril de 2003, 15:58 »
1- trata de usar algo diferente a borland, ya que otros compiladores ya te tienen solucionado ese problema implicitamente. 2-Como la memoria ha llegado a su tope, deberias pensar en un medio de almecenamiento secundario, es decir cada que completes x cantidad de registros deberas bajar estos registros a un archivo en disco que puedes utilizar de manera temporal, y asi liberar los registros en memoria, mejor dicho es como hacer un reciclado de memoria... espero que me haya hecho entender...
JuanK
5486
« en: Miércoles 30 de Abril de 2003, 15:40 »
se utiliza esta sentencia para declaratr una variable que accese a alguna direccion de memoria absoluta, por lo general para "mapearse" a la memoria de algun dispositivo, como por ejemplo la tarjeta de video o un puerto paralelo o serial.. algunos compiladores como el gcc no lo soportan y traen incluidas algunas rutinas para obtener los mismo resultados esta rutinas comienzan por _far pero internamente invocan _far, pero su simbolo, es decir una vez ya compilado es __far(los simbolos de las funciones suelen empezar con _ por convencion).
far char *rgb;
seria un apuntador a un segmento de la memoria de video.
Espero que te haya servido de ayuda.
5487
« en: Miércoles 30 de Abril de 2003, 15:12 »
Tengo varias cosas para comentarte...
1-Para cambiar de compilador no necesariamente debes instalar linux, ya qu para windows hay unos muy buenos, como el DJGPP , mingw etc..
2-En efecto si al instalar SuSe le dices que instale los paquetes de desarrolo, que por default ya vienen los necesarios, ya tendras istalado el gcc, pero solo existe por la consola de comandos, por eso no hay ningun icono, la sintaxis para manejarlo es facil , si necestitas ayuda puedes preguntar en el foro de c/c++.
3-Gcc es un compilador no un IDE, un IDE es un Ambiente de Desarrollo grafico, asi que si utilizas el gcc deberas usar todo por lineas de comandos, a no ser que bajes el rhide que es un IDE para el gcc, muy parecido al de borland.
4-Recomendaion para windows Djgpp mingw32, si einstalas el DJGPP puedes utiliazar el gcc bajo windows ya que el comopilador gcc del DJGPP es excelente, y como IDE puedes bajar el rhide para DJGPP.
Suerte.
5488
« en: Miércoles 30 de Abril de 2003, 14:49 »
Gracias Jonathan, He detectado algunos bugs, que mas bien son como inconsistencias porque no se notan en tiempo de ejecucion, ya las he corregido y me encuentro elaborando nuevos modulos del programa.
Sin embargo ha estado muy ocupado con la U en esta semana y aunque tenia planeado subir todo lo nuevo que he hecho, para este viernes, la verdad es que no voy a alcanzar a tenerlo listo sino probablemente hasta el domingo en la madrugada o para el viernes siguiente.
El codigo del programa ha sido optimizado para que no ponga problema con los archivos .dat, es decir el programa en su version actual realiza una busqueda en el directorio actual y en el directorio Bitmaps para no enrredarles tanto el asunto.
Como adelanto te puedo decir que he optimizado unas funciones y que he recurrido a un profesor que tengo que talves me pueda ayudar para convertir a assembler o para hacer de una manera mas efectiva el desvanecimeinto de imagen, ya que , como creo que pudiste observar, este efecto se ve bien en una imagen pequeña, pero en las imagenes grandes se ve entrecortado...el principal problema es que el programa esta manejando una resolucion alta ..1024*768 y 32 o 24 bit de color que son modos de color verdadero, y en estos modos no se trabaja con paleta de colores, razon por la cual hacer una funcion "fade" que sea rapida es muy dificil, ya que si utlizas paleta de colores, estos desvaneciomeintos se harian metiendo la paleta dentro de un ciclo y comenzando a degradarla rapidisimo!!...pero infortunadamente no los modos truecolor no usan paleta.
Adicionalmente he elaborado la pantalla de acceso, es decir donde entras a la configuracion de profundidad de color y el tan anhelado volumen, ya que el programa suena muy duro y su volumen es independiente del volumen del sistema operativo, y ademas es aqui donde entras realmente a la aplicacion ... esta interfaz utiliza botones implementando la GUI que trae allegro para ello.
Sin embargo para las proximas 2 o 3 entregas es posible que no se noten cambios a nivel de "avances" o pantallazos, porque tengo pendiente un punto muy critico.. la elaboracion de un temporizador....ersulta que ya me han comentado algunos amigos que el programa corre muy rapido y otros que el programa corre muy lento, esto se debe a que no todos los procesadores son iguales ni todasa las board ni todas las tarjetas de video, asi que es necesario que el programa corra a la misma velocidad en cualquier CPU, para lo cual se hace un temporizador, la verdad no se como hacelo aunquie ya he visto algunas implementaciones en los ejemplos de allegro, debo hacerlo antes de continuar con el programa ya que a medida que avance se haria mas complejo "recalcular" el codigo fuente para que funcione con el timer, de hecho para cambiar lo que ya esta hecho para que funcione con el timer, me tomara bastante tiempo.
Bueno eso es todo por ahora, espero que nos mantengamos en contacto.
Juank
5489
« en: Miércoles 30 de Abril de 2003, 14:18 »
Más o menos esa es la idea. Lo más recomendable es que en cada archivo ubiques tareas especificas, por ejemplo si tienes funciones que trabajan el archivo en memoria, lo recomendable es que haya un archivo donde esten todas estas funciones, si hay funciones que solo hacen trabajos del archivo en disco..igualmente, si manejas estructuras de datos, todas estas funciones de manejo de esta estructura, desde su creacion, hasta el dezplazamiento, insercio o borrado de datos, deberian ir por aparte, todo es cuestion de que clasifiques tus funciones de acuerdo a lo que hagan. Debes ser precabido y de preferencia todas las definiciones de tu programa meterlas en un archivo .h, asi en tu programa en vez de escribir: /*~-1*/ /*~XSF_LANGUAGE: C/C++*/ /*~K*/ /*~+:Este Programa busca en el dico duro en la carpeta que se le indique todos los archivos con estension C o H, crea una lista con ellos, y despues lee todos los archivos que estan en esta lista para buscar los "define" que hay en ellos , y realiza otra lista con estos.*/ /*~K*/ /*~+:Libresias*/ /*~T*/ #include <alloc.h> #include <conio.h> #include <dir.h> #include <dirent.h> #include <dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /*~K*/ /*~+:Estructuras de las dos Listas*/ /*~T*/ struct ListaArchivos { char *NombreArchivo; char *NombreCarpeta; int Indentificador; ListaArchivos *Archivo_anterior_Ptr, *Archivo_siguiente_Ptr; ListaArchivos () : Archivo_anterior_Ptr(NULL), Archivo_siguiente_Ptr(NULL) {}; } ; struct ListaDefines { char *NombreDefine; int NumeroElemento; ListaDefines *Define_anterior_Ptr, *Define_siguiente_Ptr; ListaDefines () : Define_anterior_Ptr(NULL), Define_siguiente_Ptr(NULL) {}; } ; /*~K*/ /*~+:Variables Globales*/ /*~T*/ struct ListaArchivos *ListaArchivos_Ptr = NULL; struct ListaDefines *ListaDefines_Ptr = NULL; int i = 0; int j = 0; int k = 0; int PrimerVez_bt = 0; int PrimerFallo_bt = 0; int Fallo = 0; int Indentificador_u16 = 0; int Numero_u16 = 0; int YaExiste = 0; int YA = 0; int YA1 = 0; /*~K*/ /*~+:Constantes*/ /*~T*/ #define FinalLinea ' ' #define Tabulador 0x09 #define Retorno 0x0A #define Espacio 0x20 #define Almoadilla 0x23 #define ParentesisAbierto 0x28 #define ParentesisCerrado 0x29 #define Punto 0x2E #define Semicoma 0x3B #define Letra_C 0x43 #define Letra_H 0x48 #define LlaveAbierta 0x7B #define LlaveCerrada 0x7D #define Copyright 0xA9 #define MAX_LONG_D_N 14
metes todo eso dentro de un archivo .h, por ejemplo radarman.h y colocas esto en el encabezado de tu programa asi: #include"radarman.h" si usas variables globales, en cada archivo que las vuelvas a usar deberas colocar: ejm extern int mivariable; sin embargo en el archivo donde este lña declaracion lo colocas normalmente int mivariable; Eso es todo por el momento Por otro lado, seguramente esque hay codigo que no conozco en c, por eso dije que tu programa era cpp y tal vez sea algo de c que nunca he manejado, por ejemplo: struct ListaArchivos { char *NombreArchivo; char *NombreCarpeta; int Indentificador; ListaArchivos *Archivo_anterior_Ptr, *Archivo_siguiente_Ptr; /*--------------------------------------------------*/ ListaArchivos () : Archivo_anterior_Ptr(NULL), Archivo_siguiente_Ptr(NULL) {}; /*-------------------------------------------------*/ } ;
Me perdonas por la ignorancia pero realmenmte no se que hace la instruccion que te coloque entre lineas. Me explicas porfa... Juank
5490
« en: Martes 29 de Abril de 2003, 22:09 »
estuve mirando tu programa y ya + o - lo entendi, hay cosas que no me sirvieron porque veo que usas c++ y 1-c++ no es mifuerte y hay cosas que hmmm 2-no tengo compilador de c++ aqui en la oficina.
Sin embargo veo que vas como bien, y te felicito, me he tomado el atrevimiento de hacerte una recomendacion, y es que utilices multiples archivos de copdigo fuente , con el fin de ordenar màs tu programa porque esta demasiado extenso para un solo archivo y por tanto te queda algo desordenado, si tienes inconvenientes en esto te puedo asesorar. ojala alguien te ayude con tu programa. Por el momento no tengo mucho tiempo para aprender lo que me falta de c++ que es bastante, ya que estoy aprendiendo c y c# asi qu de tiempo...ni 5.
Chauu..
Juank
5491
« en: Martes 29 de Abril de 2003, 17:51 »
no creo que a travez del API encuentres esto, lo que si es seguro es que te estas dando vueltas innecesarias, porque es mucho mas facil quye tu crees tus bmp de cada icono, y en tu programa asocias cada icono a una extencion, al cargar los archivos dibujas junto a ellos el icono y listo, no creoq ue se trate de que exista o no una funcion, tu mismo debes de hacerlo. Por otra parte para la ejecucion del programa seria conveniente llamar la API , pero tienes dos vias 1-a travez de la api inviocar el programa que abre el archivo, 2-hacer que tu prgrama le pase comandos a la ventana del promt, con las instrucciones necesarias para abrir el archivo: ejm, c:archv~1msofficewinword.exe mifile.doc
espero que esto gte haya sido de utilidad.
juank
5492
« en: Martes 29 de Abril de 2003, 17:36 »
Como dijo desorden , solo aclaro que estas trabajando con ncurses y no con curses, asi que al compilar coloca al final -lncurses
para enlazar la libreria.
Juank
5494
« en: Martes 29 de Abril de 2003, 17:07 »
esta funcion no te sirve de nada en linux porque ocaciona un problema de seguridad, asi que tendras que usar initscr(); al incio de tu programa para activar el modo de texto de ncurses.
No utilices esto: cout << "Hello, World!" << endl porque esto no es c standart y te va a molestar en linux, utiliza algo mas estandart como pro ejemplo los derivados de printf();
En ves de gecth(); que no existe en lilnux... deberias utilizar wgetch o sus derivados, que pertenecen a ncurses. Acontinuacion anexo el manual de ncurses sacado del man de linux, claro en ingles , pero te sirve.
suerte
Juank
5495
« en: Martes 29 de Abril de 2003, 16:38 »
Verifica estos pasos please. 1-No olvides que el archivo .rar lo debes decomprimir en una carpeta que se llame Bitmaps. 2-debes copiar la dll de allegro en : Windowssystem32 si tienes windows xp Winntsystem32 si es windows 2000 Windowssystem si es windows 95, 98, me , o incluso xp home edition. Si no puedes descomprimir el archivo .rar puedes baja aquì el winrar para descomprimirlo: http://www.rarlab.com/download.htmsuerte.
5496
« en: Martes 29 de Abril de 2003, 15:09 »
Bueno, aunque ya te di respuesta por el chat lo respiondere aqui tambien para los que tengan dudas: 1-No olvides que el archivo .rar lo debes decomprimir en una carpeta que se llame Bitmaps. 2-debes copiar la dll de allegro en : Windowssystem32 si tienes windows xp Winntsystem32 si es windows 2000 Windowssystem si es windows 95, 98, me , o incluso xp home edition. Si no puedes descomprimir el archivo .rar puedes baja aquì el winrar para descomprimirlo: http://www.rarlab.com/download.htmsuerte.
5497
« en: Martes 29 de Abril de 2003, 07:01 »
no te endtiendo, podrias ser más especifico?
5498
« en: Martes 29 de Abril de 2003, 06:58 »
Por lo general todos tratan los mismos temas. Debes copmenzar por cosas básicas, es decir no te desesperes si no te enseñan de una vez a programar en modo grafico o a utilizar el mouse y cosas de esas...eso es más avanzado y lo mas importante es que comiences aprendiendo conceptos fundamentales, una vez ya los domines te puedes meter con cosas más avanzadas por tu propia cuenta, ya que no conozco ningun tutorial ni libro para principiantes ni de nivel intermedio que te enseñe el manejo de perifericos y del hardware de video... los pocos que hay suponen que ya eres avanzado.
Como mejor recomendacion.. comprate un libro de lenguaje c...no de c++... hay muchos autores y todos son muy buenos, averigua acerca de los libros de Cesar Becerra, de Johannes... en fin. Los libros son la mejor alternativa para comenzar, ya que en internet todos te cuentan su propia opinion de las cosas, y muchas veces te enseñan mal, asi que busca un buen libro de c, no necesariamente nuevo...hay encontraras todo lo que necesitas para comenzar.
Juank
5499
« en: Martes 29 de Abril de 2003, 06:52 »
pero es diferente segun el modo que utilices, si utilizas modo texto deberas iniciar la funcion txtbackground, o alguna de sus variantes dependiendo del compilador que uses, y con ayuda de la funcion gotoxy puedes decidir en que lugar de la pantalla escribes. Es decir con gotoxy te desplazas en pantalla luego con cprintf escribes uno de los caracteres que gteneran el margen, sea que decidas hacer cuadrados o lineas, una vez dibujado el margen, otra vez con gotoxy te desplazas hacia donde quieras escribir normalmente... Espero que esto responda a tu pregunta, ya que es lo más comun que se hace con los programas en c en modo texto.
cualquier inquieud nos avisas.
Juank
5500
« en: Martes 29 de Abril de 2003, 06:48 »
todo ,o que sea para aprender... bienvenido sea.!!!
Juank
Páginas: 1 ... 218 219 [220] 221 222 ... 231
|
|
|