|
Mostrar Mensajes
|
Páginas: [1] 2 3 4 5 6 7 8
|
1
|
Foros Generales / Sugerencias y dudas sobre el Foro / Re: Sobre la sección de programación C++
|
en: 6 Mayo 2014, 18:42 pm
|
Hola a todos
Yo he sufrido en alguna ocasión el cierre de varios temas por parte de Eternal Idol, y si bien me a sentado mal, como nos sucede a todos o la gran mayoría de los que estamos en este foro, he de decir que no es culpa de Eternal Idol, no hay que pagarlo con el, de lo único que tendría culpa seria de ser demasiado estricto a la hora de aplicar las normas del foro, pero todos aceptamos esas normas cuando posteamos en este foro.
Por otro lado dichas normas deberían de revisarse y modificarse, pues si de un tema hay mil mensajes eso no significa que dicho tema este mas que solucionado y haya que cerrarlo sino que ese tema es un tema interesante y habría que motivar incluso mas la participación.
Yo echo en falta quizás un poco mas de libertad a la hora de crear temas interesantes que por no ser una pregunta o por incluir código completo son cerrados.
Un saludo Kaltorak.
|
|
|
2
|
Programación / Programación C/C++ / Re: SERIES DE TAYLOR C++
|
en: 12 Septiembre 2013, 03:53 am
|
Hola alguien me puede ayudar con la siguiente serie de taylor porfavor, sin−1 x =x+1/2.x^3/3+1/2.3/4.x^5/5+1/2.3/4.5/6.x^7/7.... (el punto significa multiplicacion) lo que necesto es un programa que la resuelva incluyendo recursividad. Muchas gracias de antemano y espero respuestas.
Nos encantaría ayudarte, pero no hacerte la tarea, si subes el código que llevas hasta el momento y nos dices donde tienes el problema, estaríamos encantados de ayudarte Un saludo Kaltorak.
|
|
|
3
|
Programación / Programación C/C++ / Re: Librería de apoyo para la creación de videojuegos SDL/OpenGL
|
en: 12 Septiembre 2013, 03:43 am
|
Como bien te a dicho amchacon poner NULL o poner 0 es exactamente lo mismo. Una opción es poner -1 y así decirle al programa que no lo use poniendo este código. void Entity::setCoords(int X, int Y) { if (X >= NULL) box.x = X; if (Y >= NULL) box.y = Y; }
O crear 2 nuevas funciones para definir cada una de las coordenadas por separado así. void Entity::setCoordX(int X) { box.x = X; }
void Entity::setCoordY(int Y) { box.y = Y; }
Una comprobación que incluiría también en estas funciones, es que la coordenada introducida no exceda los limites de la pantalla, para evitar futuros errores a la hora de visualizar los objetos. Y por ultimo y no con ello menos importante Aquí te dejo un código para que veas como hacer un cuadro con dos triángulos en Opengl, tanto con color, como con texturas #ifdef __cplusplus #include <cstdlib> #else #include <stdlib.h> #endif #include <SDL/SDL.h> #include <SDL/SDL_opengl.h> #include <SDL/SDL_Image.h> int main ( int argc, char** argv ) { //Definimos las variable box y box1 del tipo SDL_Rect SDL_Rect box,box1; //Inicializamos los valores de box para posicionarlo en las posicion 100,100 y le damos un ancho y un alto de 100. box.x = 100; box.y = 100; box.w = 100; box.h = 100; /*Inicializamos los valores de box1 para posicionarlo en las posicion 300,200 y le damos el ancho y un alto de la imagen que vamos a cargar como textura.*/ box1.x = 300; box1.y = 200; box1.w = 34; box1.h = 26; //Inicializamos el modo de video de las SDL. SDL_Init(SDL_INIT_VIDEO); //Creamos la Surface principal del juego, la que se va a mostrar en pantalla. SDL_SetVideoMode(640, 480, 32, SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWSURFACE | SDL_HWACCEL ); //Cambiamos el titulo de la ventana por "Cuadro Hecho con triangulos". SDL_WM_SetCaption ("Cuadro Hecho con triangulos", NULL); //Activamos el modo Interpolado de Opengl glShadeModel(GL_SMOOTH); //cargamos la matriz de proyección en modo ortográfico al solo usar 2D glOrtho(0, 640, 480, 0, -1, 1); //Carmos la imagen que vamos a usar como textura. SDL_Surface *Image = IMG_Load("conejo.png"); //Definimos la variable Textura que contendra la ID de la textura. GLuint Textura; //Generamos el ID de la Textura. glGenTextures(1, &Textura); //Referenciamos la TExtura para que todas las operaciones posteriores afecten a esa textura. glBindTexture(GL_TEXTURE_2D, Textura); //Aplicamos los filtros a la textura para que se escale en funcion de la distancia. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //Creamos la Textura. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, Image->w, Image->h, 0, GL_RGB, GL_UNSIGNED_BYTE, Image->pixels); //Liberamos la imagen cargada por que ya no la vamos a usar mas. SDL_FreeSurface(Image); bool done = false; //Bucle principal while (!done) { /*Comprobamos los eventos del sistema para comprobar si la ventana a sido cerrada o si se pulsa escape en caso de que asi sea ponemos El valor true en done para que finalice la ejecucion del programa.*/ SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = true; break; case SDL_KEYDOWN: { if (event.key.keysym.sym == SDLK_ESCAPE) done = true; break; } } } ////////////Primer cuadro sin texturizar pintado de verde./////////////// //Seleccionamos el color verde para Pintar el primer cuadro. glColor3ub(0,255,0); //Comenzamos a pintar el primer cuadro usando 2 triangulos. glBegin(GL_TRIANGLES); //Primer triangulo glVertex2i(box.x, box.y); glVertex2i(box.x, box.y + box.h); glVertex2i(box.x + box.w, box.y); //Segundo Triangulo glVertex2i(box.x, box.y + box.h); glVertex2i(box.x + box.w, box.y); glVertex2i(box.x + box.w, box.y + box.h); glEnd(); ////////////Fin del primer cuadro sin texturizar./////////////// //////////////////Segundo cuadro aplicándole texturas.///////////// //Especificamos el modo de aplicar la textura sobre el cuadro para que no le afecte el color del cuadro. glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); //Activamos la Textura para usarla en el cuadro glEnable(GL_TEXTURE_2D); //Comenzamos a pintar el segundo cuadro usando 2 triangulos. glBegin(GL_TRIANGLES); //Primer Triangulo glTexCoord2i(0,0);glVertex2i(box1.x, box1.y); glTexCoord2i(0,1);glVertex2i(box1.x, box1.y + box1.h); glTexCoord2i(1,0);glVertex2i(box1.x + box1.w, box1.y); //Segundo Triangulo glTexCoord2i(0,1);glVertex2i(box1.x, box1.y + box1.h); glTexCoord2i(1,0);glVertex2i(box1.x + box1.w, box1.y); glTexCoord2i(1,1);glVertex2i(box1.x + box1.w, box1.y + box1.h); glEnd(); //Desactivamos la textura. glDisable(GL_TEXTURE_2D); ////////////////////Fin del Segundo cuadro usando texturas.///////////////////////// //Mostramos el buffer en pantalla SDL_GL_SwapBuffers(); } //Devolvemos 0 por que todo a salido bien. return 0; }
Se que faltan muchas cosas, pero como era solo para que vieras como funcionaba lo de los dos triángulos no me he complicado mucho la vida Aquí te lo dejo el código fuente, esta echo en Windows por que no puedo usar Opengl en Linux, por que lo tengo virtualizado con VirtualBox y no funciona http://ultrashare.net/hosting/fl/38544fe607Un saludo Kaltorak.
|
|
|
4
|
Programación / Programación C/C++ / Re: Librería de apoyo para la creación de videojuegos SDL/OpenGL
|
en: 11 Septiembre 2013, 17:01 pm
|
Hola SrCooper he localizado un error a parte del que mencionas en el post mira. void Entity::setCoords(int X, int Y) { if (X != NULL) box.x = X; if (X != NULL) box.y = Y; }
Aquí le dices que compruebe si X es distinto de 0 y le dices que ponga X, pero debajo no deberías comprobar si Y es 0 en vez de comprobar nuevamente X?? Aparte por que motivo no se puede colocar en la posición 0,0 ?? Esto no es un error pero si un mal habito de programación en opengl glBegin(GL_QUADS); glTexCoord2i(0,0); glVertex2i(box.x, box.y); glTexCoord2i(1,0); glVertex2i(box.x + box.w, box.y); glTexCoord2i(1,1); glVertex2i(box.x + box.w, box.y + box.h); glTexCoord2i(0,1); glVertex2i(box.x, box.y + box.h); glEnd();
El motivo es que las tarjetas 3d mueven triángulos y no cuadrados, así que cuando le pasamos esto la tarjeta lo que hace es descomponer el cuadrado en 2 triángulos, con el gasto de recursos que ello con lleva, que si bien hoy en día es ínfimo, lo ideal para optimizar la librería seria que le pasaras los 2 triángulos en vez del cuadrado. Haber si tengo un ratito esta noche y lo miro todo mas detenidamente Un saludo Kaltorak.
|
|
|
5
|
Media / Diseño Gráfico / Graficos para el mini juego hackear tiendas de saint row 4
|
en: 27 Agosto 2013, 02:22 am
|
Hola a todos Me gustaría portar el minijuego de hackear las tiendas del saint row 4 a pc, alguno me ayuda con los gráficos son muy simples, no os llevaran mucho tiempo, los haria yo pero soy muy negado con el photoshop y demás programas de dibujo. Aquí os pongo una captura de de dicho minijuego . Un saludo Kaltorak.
|
|
|
6
|
Programación / Programación C/C++ / Re: A TODOS LOS PROGRAMADORES EN "C" GENTE UNA CONSULTA PARA LOS QUE SABEN!!!
|
en: 26 Agosto 2013, 18:02 pm
|
Hola chino_r Lo primero, por favor no uses mayúsculas en los títulos de los post eso es como si nos estuvieras gritando Yo si quieres te puedo echar una mano con los problemas que te surjan a la hora de programar en C/C++,lo primero es hacerte con un buen libro de programación en C++, yo por mi parte te aconsejo el libro de Fco.Javier Ceballos "C/C++ Curso de programacion" es muy bueno y esta lleno de ejemplos y ejercicios para que desde el primer día empieces a programar en C/C++. De forma gratuita te recomiendo que te pases por estas paginas http://minidosis.org/C++/en donde encontraras unos cursos muy buenos de programación en C/C++. Un saludo Kaltorak
|
|
|
7
|
Programación / Programación C/C++ / Re: ¿Que editor de codigo recomiendan?
|
en: 26 Agosto 2013, 08:25 am
|
Hola Xedrox En cuanto a un editor de textos bueno para programar, yo te recomiendo el ultraedit, yo lo he usado mucho cuando programaba para psp y es francamente espectacular y muy configurable, es de pago pero le da mil vueltas a los de mas y siempre puedes buscarlo en google IDE para C/C++ voy a ser maltratado por decir esto pero soy un ferviente admirador de Dev-C++, pero no la versión abandonada, si no la versión de Orwell que es compatible con windows 8. También he usado CodeBlocks y si bien no me disgusta no acabo de cogerle el punto. Como todo cada uno se hace a usar un determinado programa y ese es el mejor, yo te aconsejo que pruebes los que te hemos dicho y te quedes con el que mas te guste, da igual lo que te digan por que siempre llegara alguno diciéndote de este es mejor y este no me gusta y encima mira he escrito un post poniéndolo verde,Etc.. son tonterías de niños el mejor IDE o Editor de textos es con el que mejor te apañes Un saludo Kaltorak
|
|
|
9
|
Programación / Programación C/C++ / Re: estrucutras y funciones....
|
en: 22 Agosto 2013, 16:29 pm
|
Hola ramona98 Tu código tiene varios errores. El primero a la hora de declarar el numero de elementos que tendrá el array " misfechas" pues has puesto que tendrá un solo elemento y como quieres que contenga dos elementos, tienes que poner 2, pues si pones uno el programa puede funcionar pero dará una error y se cerrara al perderse en la memoria. Asi es como lo tienes puesto tu: struct horayfecha misfechas[1];
y así es como tiene que ser: struct horayfecha misfechas[2];
Otro error es a la hora de asignar valor a los arrays contenidos en la estructura. misfechas[0].timz = { 23, 30}; misfechas[0].data = { 1, 7, 1998 }; misfechas[1].timz = { 22, 32}; misfechas[1].data = { 2, 7, 1997 };
Este tipo de asignación de datos a aun array solo se pude hacer cuando es declarado no una vez que ha sido declarado, mira te pongo un ejemplo para que veas lo que digo. int Tiempo[] = {23,30}; //Valido.
int Tiempo[2]; Tiempo[] = {23,30}; // No valido //La forma correcta de hacerlo seria esta. Tiempo[0] = 23; Tiempo[1] = 30;
Otro error que tiene tu código es cuando declaras la función, lo haces pidiendo que como argumentos se introduzcan 4 arrays de tipo " int", pero luego cuando llamas a la función le pasas 2 estructuras en vez de los 4 arrays de tipo " int" que espera recibir. int tiemporeal(int tim1[1], int dat1[2], int tim2[1], int dat2[2])
tiemporeal(misfechas[0], misfechas[1])
La forma correcta de llamar a la función que has creado seria así. tiemporeal(misfechas[0].timz,misfechas[0].data,misfechas[1].timz,misfechas[1].data)
Aquí te pongo tu código modificado y operativo #include <stdio.h> #include <stdlib.h> #include <string.h> // Exercise 12-2: Design a structure to store time and date. Write a function to find // the difference between two times in minutes. int tiemporeal(int tim1[], int dat1[], int tim2[], int dat2[]) { // Idea= calcular minutos desde fecha 0 para ambas fechas // calcular diferencia entre ellas y return valor absoluto int difmin=2; // valor dado para probar return difmin; } int main(void) { int i; struct horayfecha { int timz[2]; // Hora, minutos int data[3]; // dia, mes y ano en digitos }; struct horayfecha misfechas[2]; misfechas[0].timz[0] = 23; misfechas[0].timz[1] = 30; misfechas[0].data[0] = 1; misfechas[0].data[1] = 7; misfechas[0].data[2] = 1988; misfechas[1].timz[0] = 22; misfechas[1].timz[1] = 32; misfechas[1].data[0] = 2; misfechas[1].data[1] = 7; misfechas[1].data[2] = 1997; printf ("numero de minutos entre ambas fechas es %d\n", tiemporeal(misfechas[0].timz,misfechas[0].data,misfechas[1].timz,misfechas[1].data) ); return (0); }
Un saludo Kaltorak.
|
|
|
|
|
|
|