• Jueves 3 de Julio de 2025, 06:54

Mostrar Mensajes

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 - plaf

Páginas: 1 [2] 3
26
Retos / Re: Division Sílabica
« en: Sábado 10 de Enero de 2004, 03:15 »
bue, grax por los elogios :) (y aqui entre nos, soy un bot :o (y mas entre nos aun, fui creado por otro bot :o (y muy muy entre nos, esta es la matrix :ph34r: )))

y el bug es xq se me paso la minusculeacion en el juntas(), y a parte sobra reconocer el guion (lo puse al principio y despues agregue el caso generico x si aparecian no-letras) y si se minusculea al principio del tipo() me ahorro un || :P

bueno dejo la actualizacion

27
Retos / Re: Division Sílabica
« en: Viernes 9 de Enero de 2004, 20:58 »
pues yo diria q SI es con varios ifs dentro de otros ifs y miles de || y funciones q retornan 1s y 0s (aunque una tuvo q expandirse por los guiones), o bueno, quizas no SEA asi, pero de q se puede hacer asi, se puede. y si no me crees, pues te dejo la prueba :P

;)

28
Retos / Re: Division Sílabica
« en: Viernes 9 de Enero de 2004, 18:52 »
a ver a ver, me estas retando???
ah bueno es un foro de retos...

pa q no te quejes ya hice el de los gatos entero :P

y este otro, pos voy a ver q tal me anda, lo voy a empezar a intentar, de ahi te cuento como me va

29
Retos / Re: Division Sílabica
« en: Viernes 9 de Enero de 2004, 00:17 »
waaa eso me huele a miles de ifs dentro de otros ifs y funciones booleanas y muchos || y waaa, pero bueno, cuando este suficientemente aburrido lo intento... :P

y lo q realmente me trajo a responder era q vi recien ayer lo de los gatos con sombrero y ya me lo cerraron :( pero igual queria aportar mi solucion para no sentir q desperdicie el rato...
lo de leer y escribir en los archivos es facil asi q hice solo lo de calcular los gatos y alturas, y si no me equivoco podria ser algo asi:

Código: Text
  1.  
  2. double x; // el numero de niveles de gatos q no trabajan
  3. int trabajan, alto, flojos, altura, n;
  4.  
  5. // aca leo del archivo "alto" y "trabajan"
  6.  
  7. // como trabajan N^x y la altura del gato mayor es (N+1)^x
  8. // N = raiz_x(trabajan); o sea pow(trabajan,1/x);
  9.  
  10. for(x=1.0; (int)(pow(pow(trabajan,1/x)+1,x)+0.01) != alto; x++);
  11. // el +0.01 es para arreglar el error q podria dar
  12.  
  13. N=(int)(pow(trabajan,1/x)+0.01);
  14.  
  15. flojos=0;
  16. altura=trabajan;
  17. for(n=0; n<x; n++)
  18. {
  19.     flojos+=pow(N,n);
  20.     altura+=pow(N,n)*pow(N+1,x-n);
  21. }
  22.  
  23. // y al final imprimo al archivo
  24.  
  25.  

30
C/C++ / Re: Atrapado En La Lectura De Un Fichero
« en: Miércoles 7 de Enero de 2004, 22:56 »
lo q puedes hacer es q despues de cada fscanf()  te devuelvas 1 caracter con fseek() y lo lees con getc(), y ahi ves si es un '\n'

quedaria algo asi

Código: Text
  1.  
  2. char c;
  3. fscanf(archivo, "%d", &num);
  4. hacer_lo_que_tengas_que_hacer_con(num);
  5. fseek(archivo, -1L, SET_CUR);
  6. c=getc(archivo);
  7. if(c=='\n') hacer_cosas_de_cambio_linea();
  8. else hacer_cosas_con_la_misma_linea();
  9.  
  10.  

31
Programación de Videojuegos / Re: Problema Raro Con Un Juego Online (winsock/c++)
« en: Miércoles 7 de Enero de 2004, 07:17 »
wow, gracias por la respuesta, a parte de util tb muy ilustrante :)
x lo menos el problema de mandar paquetes muy grandes no lo voy a tener, al menos por ahora, xq lo unico q hago es mandar cosas de maximo unos 12 caracteres, o en casos muy extremos hasta 32 bytes... pero eso es una cosa impresionantemente gigante...

bueno segun lo q dices no se ve dificil solucionar lo de los datos q llegan a pedazos, con un while hasta q no llegue el ultimo byte basta, pero lo q no veo bien es como separar lo q me llega pegado sin perder lo del final sin hacer cambios muy radicales...

por ejemplo podria dejar algo asi y no cambiar nada en el juego:

Código: Text
  1.  
  2. void wsock::mandar(int Num, char *Datos)
  3. {
  4.     if(sock[Num-1]!=INVALID_SOCKET)
  5.     {
  6.         char aux[16];
  7.         sprintf(aux, "%c%s", (char)(strlen(Datos)), Datos); // mando como #texto
  8.  
  9.         send(sock[Num-1], aux, 16, 0);
  10.     }
  11. }
  12.  
  13. void wsock::mandar(char *Datos)
  14. {
  15.     mandar(1,Datos);
  16. }
  17.  
  18. void wsock::mandar_todos(char *Datos)
  19. {
  20.     int i;
  21.     for(i=1;i<=jugadores;i++) mandar(i,Datos);
  22. }
  23.  
  24. void wsock::recibir(int Num, char *Datos)
  25. {
  26.     if(sock[Num-1]!=INVALID_SOCKET)
  27.     {
  28.         char aux[16];
  29.         strcpy(Datos, "");
  30.         do
  31.         {
  32.             recv(sock[Num-1], aux, 16, 0);
  33.             strcat(Datos, aux);
  34.         }while(strlen(Datos) <= (int)(Datos[0])); // sale cuando recibio #+1 caracteres (el '#' es el +1)
  35.  
  36.         int i;
  37.  
  38.         if(strlen(Datos) > (int)(Datos[0])+1) // si me llego mas de lo q esperaba
  39.         {
  40.             for(i=0; i < (int)(Datos[0])+1; i++) // copio en aux lo q esperaba
  41.                 aux[i] = Datos[i];
  42.             aux[i] = 0;
  43.  
  44.             strcpy(Datos, aux);
  45.         }
  46.  
  47.         for(i=0; i < strlen(Datos); i++) // y al final le quito el #
  48.             Datos[i] = Datos[i+1];
  49.     }
  50. }
  51.  
  52. void wsock::recibir(char *Datos)
  53. {
  54.     recibir(1,Datos);
  55. }
  56.  
  57.  

el problema es q si quisiera prevenir lo de los textos pegados tendria q hacer algo como pasar de parametro al recibir() un arreglo de strings para dejar una especie de cola de datos en espera, y despues al codigo del juego decirle q si no hay nada en la cola q reciba, y si hay algo q lo use y lo saque de la cola. eso deberia funcionar, o no? lo malo es q me da lata hacerlo ahora, pero si es necesario lo podria hacer otro dia :P

32
Programación de Videojuegos / Problema Raro Con Un Juego Online (winsock/c++)
« en: Jueves 1 de Enero de 2004, 21:08 »
holas, q emocion, primer tema del año :)

bueno pues les cuento q he estado haciendo un juego en c++ y ocupo la libreria winsock2 para hacerlo online. el juego es por turnos asi q no necesito hacer cosas raras para la transferencia de datos, solo mando/recibo
el problema es q por alguna razon cuando hosteo un juego yo veo todo perfectamente, pero parece q el/los otro(s) jugador(es) por algun motivo no recibe(n) perfectamente los datos y ve como si jugada por medio yo hiciera la misma movida q el. bueno la cosa es medio rara... pero aca pongo una idea del ciclo q hace el juego a ver si alguien ve algun desperfecto:

Código: Text
  1.  
  2. void jugador::mover()
  3. {
  4. int Listo=0;
  5. char txt[16], aux[16];
  6. x=xa+dx; y=ya+dy; // asigno las posiciones nuevas
  7. xx=-1; yy=-1; // esto es como la "posicion anterior" para redibujar solo si cambia
  8. while(!Listo)
  9. {
  10. if(x!=xx || y!=yy){ dibujo de nuevo }
  11. xx=x; yy=y;
  12. // ahora lo q importa
  13. if(soy_yo) // si es mi turno mando mis movimientos
  14. {
  15. leo el teclado y recalculo x e y o hago Listo=1; si apretaron enter
  16. sprintf(txt,"%ld",10000*x+y); // mando la posicion nueva como xxxxyyyy
  17. if(hosteo)
  18. {
  19. if(Listo) mandar_todos("l"); // mandar_todos() hace send() a todos los jugadores
  20. else mandar_todos(txt); // si aprete enter mando una l, si no, la nueva posicion
  21. }
  22. else // si no soy el host
  23. {
  24. if(Listo) mandar("l"); // mandar() le manda al host
  25. else mandar(txt);
  26.  
  27. recibir(aux); // cuando el host recibe algo se lo manda a todos, incluyendome a mi
  28. }
  29. }
  30. else // si no es mi turno solo recibo
  31. {
  32.  
  33. strcpy(texto,""); // x si acaso
  34.  
  35. if(hosteo)
  36. {
  37. recibir(turno,txt); // recibo lo q hizo el jugador de turno
  38. mandar_todos(txt); // y se lo mando a todos
  39. }
  40. else{ recibir(txt); } // si no soy el host recibo lo q el me mando (q es lo q le mando el jugador)
  41.  
  42. // aca manejo lo q me llego...
  43.  
  44. }
  45.  
  46. } // fin del while
  47.  
  48. // aca manejo los resultados finales del movimiento...
  49.  
  50. }
  51.  
  52.  

bueno la idea es esa, si no se cacha bien mas rato pongo el codigo entero por si a alguien le interesa

33
C/C++ / Re: Valor Por Referencia
« en: Lunes 29 de Diciembre de 2003, 20:38 »
(((se te colo un "*" en "nodo_ref *dec_listaerrores=(nodo_ref *)malloc(sizeof(nodo_ref *));" <----ese)))

el problema es q cuando tu llamas una funcion con un parametro, la funcion crea otra variable local con el mismo valor q ese parametro, asi q el valor del parametro original no cambia
cuando tu haces una_funcion(dec_listaerrores); una_funcion() no trabaja con esa variable, sino q crea otro puntero q apunta donde mismo, asi q puedes cambiar los valores a los q apunta y cuando vuelvas los valores estaran cambiados, pero la variable q pasaste como parametro nunca va a cambiar
si quisieras cambiarla tendrias q pasarle a la funcion un puntero a un puntero, algo asi:

void Programa(void)
{
nodo_ref *dec_listaerrores=(nodo_ref *)malloc(sizeof(nodo_ref));
una_funcion(&dec_listaerrores);
}

void una_funcion(nodo_ref **dec_listaerrores)
{
nodo_ref *dec1_listaerrores=(nodo_ref *)malloc(sizeof(nodo_ref));
nodo_ref *dec2_listaerrores=(nodo_ref *)malloc(sizeof(nodo_ref));
if (!strcmp(lookahead->cadena,"hola"))
{
otra_funcion(dec1_listaerrores);
una_funcion(dec2_listaerrores);
*dec_listaerrores= UNIR(dec1_listaerrores, dec2_listaerrores);
}
else
*dec_listaerrores= NULL;
}


bueno espero haber sido claro, cualquier duda avisas

34
Programación de Videojuegos / Re: A Ver Que Opinan
« en: Miércoles 24 de Diciembre de 2003, 20:18 »
lo de la instalacion... pos no sabo... yo lo instale siguiendo instrucciones

y de winsock yo me hice una libreria ajustada a mi juego, pero igual bastante generica y simple... aqui la adjunto...

35
Programación de Videojuegos / Re: A Ver Que Opinan
« en: Miércoles 24 de Diciembre de 2003, 00:07 »
estuve buscando un poco y encontre este tutorial muy bueno y simple (en ingles), y con eso ya hice un miniprograma de prueba q funca bien asi q voy a empezar con la onlinizacion de las carreras vectoriales :P (cuando termine lo posteo)

y lo de la instalacion de allegro, pos no se xq uso windows... en todo caso descomprimi en la carpeta del dev-c++, me fui a (...)dev-cpp\allegro, fix.bat mingw32 (para configurarlo para windows), make, make install, y listo
allegro.h esta en los \include, liballeg.a en \lib

36
Programación de Videojuegos / Re: A Ver Que Opinan
« en: Martes 23 de Diciembre de 2003, 02:09 »
ta bueno el juego, eso si no me funco lo de ver el estado de mis barcos, pero bue...

sobre lo de hacerlo en red, yo tb estaba tratando de hacerlo y vi q estaba la libreria winsock q servia para eso en C, pero me puse a buscar ejemplos y lo q encontre estaba muy lleno de dialogos de ventanitas y cosas api-windowescas q yo no quiero usar (uso allegro) y con tantas cosas feas q me costo filtrar lo util... donde puedo encontrar un tutorial simple con lo basico de winsock? yo lo unico q necesito es q un jugador sea host, otros se conecten a el y despues mandar y recibir un numero... pal chat y cosas raras ya esta msn :P

y lo q dijiste de allegro parece q te falta el -lalleg al compilar. x lo menos yo uso el dev-c++ de IDE y compilo con el gcc y hay q agregarle al final de la linea -lalleg pa linkear (si compilas a mano lo agregas al final de la linea, si lo tiras desde el dev-c++ te vas a las opciones de proyecto (alt+p) y o pones abajo)

37
C/C++ / Re: Ayuda ::variables Y Condiciones
« en: Lunes 22 de Diciembre de 2003, 06:19 »
1- eso se puede hacer con un getch(); para q al paretar una tecla la puedas guardar y no se muestre en pantalla
Código: Text
  1. #include &#60;conio.h&#62;
  2. #include &#60;stdio.h&#62;
  3.  
  4. void main()
  5. {
  6. char fija[]=&#34;hola, vengo a flotar&#34;;
  7. char input[23];
  8. int i;
  9.  
  10. for(i=0;i&#60;20;i++)
  11. {
  12. input[i]=getch();
  13. printf(&#34;%c&#34;, fija[i]);
  14. }
  15.  
  16. }
  17.  

o algo asi

2- ahi no te cache bien, la variable es un string, un arreglo de numeros o un numero de varios digitos?
si es un arreglo de algo, es cosa de hacer if(arreglo[0]==caracter_especifico);
si es un numero, podrias usar un par de funciones matematicas:
Código: Text
  1. #include&#60;math.h&#62;
  2. #include&#60;stdio.h&#62;
  3.  
  4. void main()
  5. {
  6. long int num;
  7. int primerdigito;
  8.  
  9. printf(&#34;numero??: &#34;);
  10. scanf(&#34;%ld&#34;,&num);
  11.  
  12. primerdigito = num/(long int)(pow(10, (int)(log10(num))));
  13.  
  14. if(primerdigito==3) printf(&#34;num empieza con 3&#34;);
  15. }
  16.  

eso te divide el numero por un 10 con un 0 menos q los digitos q tenga el numero para sacar el primer digito (por ejemplo, (int)(3518618/1000000)=3 )

38
C/C++ / Re: Problema Con Los Strings
« en: Lunes 22 de Diciembre de 2003, 00:34 »
lo q pasa es q char pers[n]; es un string (si es q "n" esta #definido, xq no se pueden declarar arreglos de portes variables), y lo q tu quieres es un arreglo de strings, o sea algo como char pers[n][10];
lo otro es q no puedes llegar e igualar un string a otro, hay q hacerlo caracter a caracter o con una funcion como strcpy(); pero eso ni siquiera es necesario xq puedes simplemente en vez de hacer gets(nombre); hacer gets(pers);
con esos 2 cambios deberia funcionar

pd: %ld es para long ints, cuantos jugadores quieres???? :blink: (aunque eso da lo mismo)

39
C/C++ / Re: Problema Con Los #include
« en: Domingo 21 de Diciembre de 2003, 19:39 »
gracias, ya habia intentado hacer eso pero no se me habia ocurrido dejar de incluir los .h
eso si tuve q cambiar un poco los constructores xq los tenia con parametros y al declarar las clases asi me creaba conflictos, pero ya lo arregle y ahora #inclui los .h en los .cpp y funca bien :)  :kicking:

40
C/C++ / Problema Con Los #include
« en: Domingo 21 de Diciembre de 2003, 07:21 »
tengo varias clases, y cada una tiene metodos q usan como parametros otras clases, y cada una en su respectivo CLASE_X.h
el problema es q me alega al compilar xq no conoce las otras clases
un .h seria asi:

#ifndef CLASEA_H
#define CLASEA_H

#include "ClaseB.h"
#include "ClaseC.h"

class ClaseA
{
   public:
      void metodo(ClaseB *B, ClaseC *C);

};

#endif // CLASEA_H

bueno la idea es esa, las clases b y c son del mismo estilo. como hago para que me las reconozca? pense en poner todos los .h en uno pero no hay una mejor manera?

41
Allegro / Re: mover sprite con allegro
« en: Miércoles 10 de Septiembre de 2003, 07:26 »
primero, gracias por la respuesta, y segundo, a veces me empiezo a volar con el codigo y no me lo entiende nadie...
estuve haciendo unos monitos en paint diagramando algunas cosas y me resulto eso, pero debo haber pasado por alto algun detalle q se me sigue pasando...
el q puse ahi si funcionaba, pero no perfecto, porque cuando hacia un "cambio de velocidad" dejaba un pedazo de huella. todavia no puedo arreglar eso, pero me rendi y busque un poco de info del doble buffer y lo hice asi (el codigo queda bastante mas lindo y es mas rapido q andar leyendo los pixeles...)
al final me quedo esto:

 
Código: Text
  1.  
  2. void mover_mono(BITMAP *fondo, mono *m, int dx, int dy)
  3. {
  4.     BITMAP *temp;
  5.     int izq,arr;
  6.    
  7.     if(dx<0) izq=m->x+dx;
  8.     else izq=m->x;
  9.     if(dy<0) arr=m->y+dy;
  10.     else arr=m->y;
  11.    
  12.     temp = create_bitmap(64+abs(dx),64+abs(dy));
  13.     blit(fondo,temp,izq,arr,0,0,64+abs(dx),64+abs(dy));
  14.     draw_sprite(temp,m->bmp,m->x+dx-izq,m->y+dy-arr);
  15.     draw_sprite(screen,temp,izq,arr);
  16.     destroy_bitmap(temp);
  17.     m->x+=dx;
  18.     m->y+=dy;
  19. }
  20.  
  21.  

despues si me sobra tiempo veo eso de los rectangulos cochinos...

42
Allegro / Re: mover sprite con allegro
« en: Martes 9 de Septiembre de 2003, 05:04 »
jajaja me pastelee, en el for q hice tenia cambiados unos signos > por < y entraba siempre al if, por eso era tan horrible...
ahora lo arregle y anda CASI perfecto, el unico detalle es q a veces me deja unos pedazos por ahi...
he aca el codigo:

 
Código: Text
  1.  
  2.  
  3. void mover_mono(BITMAP *fondo, mono *m, int dx, int dy)
  4. {
  5.     int x,y;
  6.        
  7.     for(y=0; y<64; y++)
  8.     {
  9.         for(x=0; x<64; x++)
  10.         {   // si hay un pedazo de mono no-transparente  y  (     el mono se va a mover fuera de esa zona            o            el pixel q va a ir ahi va a ser transparente )
  11.             if(getpixel(m->bmp,x,y)!=MASK_COLOR_16 && ((dx>0 && x<dx) || (dy>0 && y<dy) || (dx<0 && x>64+dx) || (dy<0 && y>64+dy) || getpixel(m->bmp,x-dx,y-dy)==MASK_COLOR_16))
  12.                 putpixel(screen,m->x+x-dx,m->y+y-dy,getpixel(fondo,m->x+x-dx,m->y+y-dy));
  13.         }   // entonces en ese punto copio el pixel del fondo encima del resto de mono
  14.     }
  15.    
  16.     m->x += dx;
  17.     m->y += dy;
  18.    
  19.     draw_sprite(screen,m->bmp,m->x,m->y);
  20.    
  21.     if(key[KEY_ESC]) exit(0);
  22. }
  23.  
  24. void saltar(BITMAP *fondo,mono *m)
  25. {
  26.     float vy,vx;
  27.    
  28.     for(vy=-2.49;vy<=2.5;vy+=G)
  29.     {
  30.         if(key[KEY_LEFT] && !key[KEY_RIGHT]) vx=-1;
  31.         else if(key[KEY_RIGHT] && !key[KEY_LEFT]) vx=1;
  32.         else vx=0;
  33.         mover_mono(fondo,m,vx,vy);
  34.     }
  35. }
  36.  
  37.  

podria hacer q cuando salte no se mueva de a 1, pero eso es facil, lo raro es q me deja unas huellas raras...

43
Allegro / Re: mover sprite con allegro
« en: Martes 9 de Septiembre de 2003, 03:54 »
holas, recien estoy empezando con allegro y necesito mover un mono sobre un fondo obviamente sin dejar huella. el mono es de forma irregular (tiene fondo transparente) asi q no me sirve blitearle rectangulos al lado, y si pesco el pedazo de fondo y lo pongo encima y despues dibujo el mono un poco mas alla, me parpadea la imagen...
probe con un for para ir pixel x pixel viendo si hay q borrarlo y anda LENNNNNTO... :hitcomp:

ojala me puedan ayudar, grax

44
C/C++ / Ordenar letras por orden alfabético
« en: Viernes 29 de Agosto de 2003, 05:12 »
lo del menor como int debe ser porque lo inicialice como 1000 y no me acorde que el valor maximo de un char es 255... y getche()... no se

45
C/C++ / Re: Ordenar letras por orden alfabético
« en: Martes 26 de Agosto de 2003, 01:07 »
muestra solo la primera o las ordena todas? si es la 1a, es bastante simple:


#include <stdio.h>

int main(int argc, char **argv)
{

int num;
char ch,menor=1000;

for(num=1; num<11; num++)
{
printf("Introduzca la letra %d: ", num);

ch=getchar();

if(ch<menor) menor=ch;

printf("n");
}
printf("nnLa menor es la %c",menor);
system("pause");
}

46
C/C++ / Re: numeros primos
« en: Domingo 24 de Agosto de 2003, 04:51 »
de hecho podrias hacerlo el doble de eficiente haciendolo saltarse los pares (probar con 2 y despues empezar el for en 3 saltando de 2 en 2). y no se, empieza a probar lo q se te ocurra

47
C/C++ / Re: numeros primos
« en: Domingo 24 de Agosto de 2003, 04:33 »
#include<stdio.h>
#include<math.h>

int main(){
   int i,esprimo;
   float numero, div;
   while(1){
   printf("nnTengo hambre, dame un numero: ");
   scanf("%f",&numero);
   esprimo=1;
   for(i=2; i <= sqrt(numero) && esprimo; i++)
   {
      div=numero/(float)i;
      if(div-(int)div==0) esprimo=0;
   }
   if(esprimo) printf("Gracias, estaba muy primo es numero:)");
   else printf("PUAJ!! ESTE NUMERO ES DIVISIBLE POR %d!!!",i-1);
   }
}

48
C/C++ / Re: Conversión de entero a texto en C++
« en: Sábado 23 de Agosto de 2003, 04:00 »
mmmmm nop, al reves, strtol = string-to-long. lo q el quiere es pasar de numero a caracter (en q quedamos con lo de la marihuana?)

para eso puedes usar _ltoa

char *_ltoa( long numero, char *string, int base);

por ejemplo:

char *sal, *num;
_ltoa(num_temp, num, 10);
strcpy(sal, "t_");
strcat(sal, num);

(solo un ejemplo, algo q se me vino a la mente...)

pd: traducete los ejemplos, flojo!

49
C/C++ / como se especifica el tamaño de la ventana (en C)?
« en: Lunes 4 de Agosto de 2003, 21:09 »
en C

50
C/C++ / Re: como se especifica el tamaño de la ventana (en C)?
« en: Lunes 4 de Agosto de 2003, 05:48 »
bueno, eso. busque un poco en el MSDN y los parametros de las funciones q encontre eran:o :think: :question:

Páginas: 1 [2] 3