Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

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.

Mostrar Mensajes Menu

Mensajes - SPARTANVS

#1
al fin he conseguido que se vea algo. ya consigo que el cañon se mueva y que los avionas vaajen bien hacia abajo. Pero me queda una gran carrera por recorer. Por cieto, claro que cargo una imagen por superficie. Sino hiciera eso, me podriais considerar tonto XD.

el caso es que cuando mas avanzo mas rara se pone la cosa.

he activado los disparos (aun no le he activado ni las explosiones ni el control de colosiones) y cuando ejecuto el programa ocurre lo del principio, se habra sale la pantalla negra y en medio nanosegundo se cieraa  :cry: .

el caso es que me voy al depurador, pongolos breakpoints.... y adivinaz, pulso F5 a las 10:00. Dejo el deo tieso, y a las 10:25 sigue tieso, y los clicos siguen subiendo. he llegado al ciclo 15000 y no se ha salido, pero eso es imposible, como mucho deberia llegar a los 300-400 ciclos si se cierra tan rapido la venta. Bueno el caso es que le dejo solo nu breakpoint justo donde empieza "main", y cuanod le doy a F5, PUEDO JUGAR, el cañon se mueve y dispara, y los aviones bajan, la 1º vez que lo vi me quede flipando......lo malo es que en unos segundos es como si dejara de imprimirse la imagen de fondo y deja de verse bien........

lo que me va a costar terminar el jueguecito XD
#2
ya se lo que ocurre. Cuando estoy cargando imagenes se cargan unas encimas de otras, una imagen se carga encima de la superficie de video, otra encima de los aviones..... ¿como hago para que esto no ocurra?
#3
hay alguna forma de hacer que no se repita? algun truco admins?

he seguido provando con la puta superficie, he cambiado la image que carga, la crpeta desde que la carga, hasta he cambiado el nombre de la superficie en el programa  :D , pero no hay manera, siempre da error al cargar

¿Alguien sabe a que se puede deber?

En el depurador todas las superficies que se cargan antes toman ciertos valores, pero esta solo toma "NULL", o traducido: "???????????".
#4
ya he editado..............

gracias, voy cogiendole el trankillo a esto de depurar. ya se poner los breakpoints y ATENCION, se pulsar F5  :lol:  :lol:

el caso es que todo va bien cuando empieza a cargar las distintas superficies, pero cuando llega cuando llega a la superficie "shotsurp" no la carga bien.

No se que puede pasar, el codigo parece estar bien y en sus sitio respecto a esa superficie. La imagen que carag esta como en lotas las demas, en una carpeta, y es bmp, tal y como debe ser, el nombre de la imagen es el mismo que el que carga el codigo. nose...nose, seguire intentando cosas, sino quitare los disparos aver como sigue el codigo  :twisted:
#5
me cago en to.................... :evil:  el foro falla mas que una escopeta de feria ¿a que me suena eso? 8)
#6
bien, ya tengo instalado el V2008 express. La primera vez cargue el archivo y le di a F5, me daba un error. entonces me di cuenta en que me habia equivocado y habia asignado mal unas varibles que requerian de los datos de algunas supeficies. lo cambie, y ahora cuando le doy a F5, me sale esto:

'AntiPlanes.exe': Loaded 'C:\Documents and Settings\Administrador\Escritorio\Programas SDL\AntiPlanes\Debug\AntiPlanes.exe', Symbols loaded.
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\SDL.dll', Binary was not built with debug information.
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\secur32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\user32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\winmm.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375\msvcr90.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\ddraw.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\dciman32.dll'
'AntiPlanes.exe': Unloaded 'C:\WINDOWS\system32\ddraw.dll'
'AntiPlanes.exe': Unloaded 'C:\WINDOWS\system32\dciman32.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\uxtheme.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\kbdus.dll'
'AntiPlanes.exe': Unloaded 'C:\WINDOWS\system32\kbdus.dll'
'AntiPlanes.exe': Loaded 'C:\WINDOWS\system32\kbdsp.dll'
'AntiPlanes.exe': Unloaded 'C:\WINDOWS\system32\kbdsp.dll'
The program '[2932] AntiPlanes.exe: Native' has exited with code 1 (0x1).

Se ve que esta cargando dll y demas...pero la ultima linea nose si es un error o algo parecido, solo se que he compilado y ahora ademas de no mostrar nada da un error de memoria:

La instruccion "xxxxx" hace refenrencia a la memoria en "xxxxxx". La memoria no se puede "read".

vamos el tipico fallito.

No se donde tengo que colocoar los breakpoints esos, pero bueno supongo que echandole tiempo aprendere a depurar  :D
#7
Programación gráfica / Una duda sobre colisiones
11 de Mayo de 2008, 03:09:34 PM
bahamut? tu no eres de ogame?
#8
Cita de: "AK47"Mecauen en la sotabastos, el foro falla mas que una escopeta de feria :P

jajaja, si un poco, aunque yo tambien suelo ganara en la feria......

enga, voy a bajarme el 2008, aver como es, respecto a lo de python o C#....se que el C es duro de roer lo he leido en muchos sitios, pero me gusta y si al fin y al cabo es el que se usa para hacer los verdaderos y buenos juegos, pues mejor empezar bien no?¿

cuando tenga el 2008 express, y tenga algun problema posteo XD
#9
ummmmmmmm, me parece que me he metido en un mundo muy grande. Si el debugger, solo hay un problema.... :D  ¿Como se susa el debugger del visual c++ 6.0? o bueno cualquiera ya que nunca he utilizado ninguno jajaja.

estoy buscando en google, pero si sabeis alguna pagina...preferiblemente en spanish, tambei se agradece. GRACIAS
#10
Wenas, al fin, termine mi juego, pero aun no puedo dedicarselo a nadie, ya que no funcion  :cry:  :cry:

Bueno estaba terminando el programa arreglando los fallitos (en un principio me dio 37 y 2 warning) y buen los arregle.....y ejecute. nada ser abria y se iba en un segundo sin mostrar nada. El caso es que me acorde que tenia que ponerle la carpeta de las imagenes en el fichero "debug" que es donde esta el ejecutable. pero lo he puesto y sigue igual.

Voy a poner el codigo entero, porque nose lo que pasa ni tengo idea alguna de que parte del programa puede ser. Y bueno asi los novatos como yo aprevechan  :shock:

MUCHAS GRACIAS



/***************
_AntiPlanes 1.0
_Make by Juan Manuel Amador Olivares &
***************/

// Librerias necesarias para poder llamar las funciones del juego
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include <time.h>

/****
Constantes
****/
#define WIDTH 400 // Anchura del mapa
#define HEIGHT 535 // Altura del mapa

#define MOVCANON 2 // Movimiento del cañon antiereo
#define CANONCICLO 3 // Numero de ciclos que tiene que pasar para que el cañon pueda moverse

#define MAXPLANES 150 // Numero maximo de aviones enemigos
#define MAXEXP 50 // Numero maximo de explosiones
#define MAXSHOT 250 // Numero maximo de disparos del cañon antiaereo

#define UPPOS 10 // Numero de ciclos que tiene que pasar para que se actualice la posicion de los aviones
#define MOVPLANE 5 // Movimiento de los aviones

#define PLANEBYCICLO 6 // Numero de aviones que son creados por ciclo
#define NEWPLANE 5 // Numero de ciclos que tiene que pasar para que se creen mas aviones enemigos

#define UPEXP 5 // Numero de ciclos que tiene que pasar para que se actualice el frame de las explosiones

#define CICLOSHOT 15 // Numero de ciclos que tiene que pasar para que se puedan crear nuevos disparos

#define UPPOSSHOT 10 // Numero de ciclos que tiene que pasar para que se actualice la posicion de los aviones
#define MOVSHOT 5 // Movimiento de los aviones

/****
Estructuras de los diferentes elementos del juego
****/
// Estructura del cañon antiaereo
struct canonstruct
{
SDL_Rect atrib;
} canon;

// Estrcutura de los aviones enemigos
struct enemyplanes
{
SDL_Rect atrib;
int estado;
} planes[MAXPLANES];

// Estructura de las explosiones
struct explosions
{
SDL_Rect atrib;
int frame;
int LastUpCiclo;
int estado;
} exp[MAXEXP];

// Estructura de los disparos
struct antishot
{
SDL_Rect atrib;
int estado;
} shot[MAXSHOT];


/****
Declaracion de superficies y variables
****/
SDL_Rect coordscreen;
SDL_Surface *screen; // Superficie de la pantalla. Con esta superficie se nicializara el modo de video y es la que se renderizara
SDL_Surface *background; // Superficie de el mapa del fondo
SDL_Surface *canonsurp; // Superficie de el cañon antiaereo
SDL_Surface *plane; // Superficie de el avion enemigo
SDL_Surface *shotsurp; // Superficie de el disparo del cañon
SDL_Surface *expsurp[5]; // Superficie de las explosiones de los enemigos
int quit = 0; // Variable usada para el controlar el bucle del juego (Game Loop)
int i = 0; // Variable usada para los bucles del juego
int v = 0; // Variable usada para los bucles del juego
int n = 0; // Variable usada para los bucles del juego
int b = 0; // Variable usada para los bucles del juego
int ciclo = 0; // Variable que contiene el numero de ciclos que ha dado el juego
int ciclouppos = 0; // Variable que guarda el numero de ciclos que llevaba el juego la ultima vez que actualizo la posicion de los aviones
int ciclocreate = 0; // Variable que guarda el numero de ciclos que lleva el juego desde la ultima vez que creo nuevos aviones
int canonppos = 0; // Variable que guarda el numero de ciclos que lleva el juego desde la ultima vez que se movio el cañon
int shotuppos = 0; // Variable que guarda el numero de ciclos que lleva el juego desde la ultima vez que se creo un disparo
int shotpos = 0; // Variable que guarda el numero de ciclos que lleva el juego desde la ultima vez que se actualizo el movimiento de los disparos
Uint8 *keyboard; // Variable utilizada para guardar el estado del teclado

int ini_milisegundos; // Variable utilizada para el control de tiempo de renderizado
int fin_milisegundos; // Variable utilizada para el control de tiempo de renderizado
int frametime; // Variable utilizada para el control de tiempo de renderizado

/***
Funciones de control de tiempo por frame
***/
void resetTimeBase()
{
ini_milisegundos=SDL_GetTicks();
}

int CurrentTime()
{
fin_milisegundos=SDL_GetTicks();
return fin_milisegundos-ini_milisegundos;
}


/****************
Funcion principal
****************/
int main (int argc, char *argv[])
{
atexit (SDL_Quit);


//Iniciar SDL
if (SDL_Init (SDL_INIT_VIDEO) < 0)
{
printf ("No se pudo iniciar SDL: %s\n", SDL_GetError());
exit(1);
}


//Activamos el modo de video
screen = SDL_SetVideoMode (WIDTH,HEIGHT,24, SDL_HWSURFACE);
if (screen = NULL)
{
printf ("No se puede inicializar el modo gráfico: %s\n", SDL_GetError ());
exit (1);
}

/****
Cargamos los graficos del juego en las superficies declaradas
****/
// Imagen de fondo
background = SDL_LoadBMP("background\\background.bmp");
if (background == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}

// Cañon antiaereo
canonsurp = SDL_LoadBMP("canon\\canon.bmp");
if (canonsurp == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(canonsurp,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(canonsurp->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// Aviones enemigos
plane = SDL_LoadBMP("enemyplanes\\plane.bmp");
if (plane == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(plane,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(plane->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// Disparo del cañon antiaereo
shotsurp = SDL_LoadBMP("canon\\shot\\shot.bmp");
if (shotsurp == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(shotsurp,SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(shotsurp->format,255,255,255)); // Determinamos la transparencia de la superficie shotsurp como 255,255,255

// 1º imagen de la explosion
expsurp[1] = SDL_LoadBMP("explosion\\exp1.bmp");
if (expsurp[1] == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(expsurp[1],SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(expsurp[1]->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// 2º imagen de la explosion
expsurp[2] = SDL_LoadBMP("explosion\\exp2.bmp");
if (expsurp[2] == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(expsurp[2],SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(expsurp[2]->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// 3º imagen de la explosion
expsurp[3] = SDL_LoadBMP("explosion\\exp3.bmp");
if (expsurp[3] == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(expsurp[3],SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(expsurp[3]->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// 4º imagen de la explosion
expsurp[4] = SDL_LoadBMP("explosion\\exp4.bmp");
if (expsurp[4] == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(expsurp[4],SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(expsurp[4]->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0

// 5º imagen de la explosion
expsurp[5] = SDL_LoadBMP("explosion\\exp5.bmp");
if (expsurp[5] == NULL)
{
printf ("No se pudo cargar el grafico: %s\n", SDL_GetError());
exit(1);
}
SDL_SetColorKey(expsurp[5],SDL_SRCCOLORKEY|SDL_RLEACCEL,SDL_MapRGB(expsurp[5]->format,0,0,0)); // Determinamos la transparencia de la superficie shotsurp como 0,0,0


srand (time(NULL)); // Para la semilla de rand()

/****
Inicializacion de variables del juego
****/
// Iniciamos las variables de la pantalla
coordscreen.w = screen->w;
coordscreen.h = screen->h;
coordscreen.x = 0;
coordscreen.y = 0;
// Iniciamos las varibles del cañon
canon.atrib.w = canonsurp->w;
canon.atrib.h = canonsurp->h;
canon.atrib.x = WIDTH/2-canon.atrib.w/2;
canon.atrib.y = HEIGHT-canon.atrib.h;

// Iniciamos las variables de los aviones enemigos
for (i=1; i<=MAXPLANES; i++)
{
planes[i].atrib.w = plane->w;
planes[i].atrib.h = plane->h;
planes[i].atrib.x = 0-planes[i].atrib.w;
planes[i].atrib.y = 0;
planes[i].estado = 0;
}

// Iniciamos las variables de las explosiones
for (i=1; i<=MAXEXP; i++)
{
exp[i].atrib.w = expsurp[1]->w;
exp[i].atrib.h = expsurp[1]->h;
exp[i].atrib.x = 0;
exp[i].atrib.y = 0;
exp[i].frame = 0;
exp[i].LastUpCiclo = 0;
exp[i].estado = 0;
}

// Iniciamos las variables de los disparos del cañon antiaereo
for (i=1; i<=MAXSHOT; i++)
{
shot[i].atrib.w = shotsurp->w;
shot[i].atrib.h = shotsurp->h;
shot[i].atrib.x = 0;
shot[i].atrib.y = canon.atrib.y-shot[i].atrib.h;
shot[i].estado = 0;
}



/********
Game Loop
********/

while (!quit)
{
/***************
Entrada de datos
***************/

SDL_PumpEvents(); // Obtiene mapa del estado actual del teclado
keyboard=SDL_GetKeyState(0);

if(keyboard[SDLK_LEFT]) // Flecha izquierda
{
if (ciclo == canonppos + CANONCICLO)
{
canonppos = ciclo;
canon.atrib.x -= MOVCANON;
}
}

if(keyboard[SDLK_RIGHT]) // Flecha derecha
{
if (ciclo == canonppos + CANONCICLO)
{
canonppos = ciclo;
canon.atrib.x += MOVCANON;
}
}
if(keyboard[SDLK_RCTRL]) // Tecla CTRL
{
if (ciclo == canonppos + CICLOSHOT)
{
shotuppos = ciclo;
while (v == 0)
{
v++;
if (shot[v].estado == 0)
{
shot[v].estado = 1;
shot[v].atrib.x = canon.atrib.x;

v = 1;
}
}
v = 0;
}
}
if(keyboard[SDLK_ESCAPE]) {quit=1;} // Tecla ESC


// Se actualiza la posicion de los disparos
if (ciclo == shotpos + UPPOSSHOT)
{
shotpos = ciclo;
for (i=1; i<=MAXSHOT; i++)
{
if (shot[i].estado == 1)
{
shot[i].atrib.y -= MOVSHOT;
}
}
}

// Se comprueba y elimina los disparos que han salido de la pantalla
for (i=1; i<=MAXSHOT; i++)
{
if (shot[i].estado == 1)
{
if (shot[i].atrib.y + shot[i].atrib.h == 0)
{
shot[i].estado = 0;
}
}
}




// Se actualiza la posicion de los aviones enemigos
if (ciclo == ciclouppos + UPPOS) // Si han pasado los ciclos dados por UPPOS
{
ciclouppos = ciclo;
for (i=1; i<=MAXPLANES; i++)
{
if (planes[i].estado == 1)
{
planes[i].atrib.y += MOVPLANE;
}
}
}

// Se comprueba y elimina los aviones que han salido de la pantalla
for (i=1; i<=MAXPLANES; i++)
{
if (planes[i].estado == 1)
{
if (planes[i].atrib.y + planes[i].atrib.h == HEIGHT)
{
planes[i].estado = 0;
}
}
}

// Se crean mas aviones enemigos
if (ciclo == ciclocreate + NEWPLANE)
{
ciclocreate = ciclo;
for (i=1; i<=PLANEBYCICLO; i++)
{
while (v == 0)
{
n++;
if (planes[n].estado == 0)
{
planes[n].atrib.x = 1 + rand() % WIDTH; /*numero aleatorio*/
planes[n].estado = 1;

v = 1;
}
}

v = 0; // Para que en cada ciclo se repita el bucle
}
}

// Aqui va la creacion de explosiones, el cual va dentro de deteccion de colisiones
for (i=1; 1<=MAXPLANES; i++)
{
if (planes[i].estado == 1)
{
for (n=1; n<=MAXSHOT; n++)
{
if (shot[n].estado == 1)
{
if ( ((planes[i].atrib.x + planes[i].atrib.w) > shot[n].atrib.x) && ((planes[i].atrib.y + planes[i].atrib.h) > shot[n].atrib.y) && ((shot[n].atrib.x + shot[n].atrib.w) > planes[i].atrib.x) && ((shot[n].atrib.y + shot[n].atrib.w) > planes[i].atrib.y) )
{
// Crea explosion
while (v == 0)
{
b++;
if (exp[b].estado == 0)
{
exp[b].atrib.x = shot[n].atrib.x + shot[n].atrib.w/2;
exp[b].atrib.y = shot[n].atrib.y;
exp[b].estado = 1;

v = 1;
}
v = 0;
}
}
}
}
}
}

// Se actualizan las explosiones
for (i=1; i<=MAXEXP; i++)
{
if (exp[i].estado == 1)
{
if (exp[i].LastUpCiclo == UPEXP)
{
exp[i].frame++;
exp[i].LastUpCiclo = 0;
}
else
{
exp[i].LastUpCiclo++;
}

if (exp[i].frame == 6)
{
exp[i].frame = 0;
exp[i].estado = 0;
}
}
}

/***
Pegado de superficies
***/
// Se pega la superficie de la imagen de fondo
SDL_BlitSurface(background, NULL, screen, &coordscreen);

// Se pegan los aviones
for (i = 1; i<=MAXPLANES; i++)
{
if (planes[i].estado == 1)
{
SDL_BlitSurface(plane, NULL, screen, &planes[i].atrib);
}
}

// Se pegan los disparos
for (i=1; i<=MAXSHOT; i++)
{
if (shot[i].estado == 1)
{
SDL_BlitSurface(shotsurp, NULL, screen, &shot[i].atrib);
}
}

// Se pega la imagen del cañon antiaereo
SDL_BlitSurface(canonsurp, NULL, screen, &canon.atrib);

// Se pegan las explosiones
for (i=1; i<=MAXEXP; i++)
{
if (exp[i].estado == 1)
{
switch (exp[i].frame) // Segun el frame se renderizan imagenes diferentes
{
case 1:
SDL_BlitSurface(expsurp[1], NULL, screen, &exp[i].atrib);
break;

case 2:
SDL_BlitSurface(expsurp[2], NULL, screen, &exp[i].atrib);
break;

case 3:
SDL_BlitSurface(expsurp[3], NULL, screen, &exp[i].atrib);
break;

case 4:
SDL_BlitSurface(expsurp[4], NULL, screen, &exp[i].atrib);
break;

case 5:
SDL_BlitSurface(expsurp[5], NULL, screen, &exp[i].atrib);
break;
}
}
}

SDL_Flip(screen);


ciclo++; // Se suma un ciclo

// Si NO han pasado 30 milisegundos desde la renderizacion del ultimo frame, no se sigue renderizando
do
{
frametime=CurrentTime();
} while (frametime<30);


} // Aqui termina el bucle del juego

// Se liberan las superficies
SDL_FreeSurface(background);
SDL_FreeSurface(canonsurp);
SDL_FreeSurface(plane);
SDL_FreeSurface(shotsurp);
SDL_FreeSurface(expsurp[1]);
SDL_FreeSurface(expsurp[2]);
SDL_FreeSurface(expsurp[3]);
SDL_FreeSurface(expsurp[4]);
SDL_FreeSurface(expsurp[5]);


return 0;
}
#11
General Programadores / estructuras a funciones
28 de Abril de 2008, 04:17:53 PM
DIOS MIO que cantidad de respuesta....jja, ya me ha quedado claro y me funciona perfe. al que me ha dicho que consiga un libro, ya loo tengo y bueno pero no encontraba esto y valla ahora si lo he encontrado  :)

MUCHAS GRACIAs, este foro da gusto, preguntas algo y nosolo te la ocntesta sino que te enteras de 100 cosas mas  :D
#12
General Programadores / estructuras a funciones
27 de Abril de 2008, 04:04:11 PM
bueno, nunca habia tenido que pasar el valor de un miembro de una estructura como argumento a una funcion. Ahora, haciendo un jueguecito con SDL tengo que hacerlo, he hecho una pruba, pero para mi sorpresa me da errores. este es el codigo:


#include <stdio.h>

struct feo
{
int x;
int y;
int w;
int h;
}

struct olita
{
int estado;
feo atrib;
} ola[30];


void alejandro (int x)
{
x = x + 30;
}

void main()
{
ola[5].atrib.x = 8;

alejandro (ola[5].atrib.x);

printf ("%d", ola[5].atrib.x);
}


primero he puesto la estructura feo, despues la estructura olita, en la que uno de susu miembros es una estructura feo. tambien he creado un tabla (o matriz) de 30 estructuras olita.

para probar las funciones he creado una funcion llamada alejandro que accede a la estructura ola[5] y cambia le suma 30 a uno de sus miembros.

pero como ya dije antes me da errores.

GRACIAS, y perdon por ser tan novatillo, pero no lo encontraba en mi libro de C.
#13
General Programadores / estructuras a funciones
27 de Abril de 2008, 04:01:58 PM
bueno, nunca habia tenido que pasar el valor de un miembro de una estructura como argumento a una funcion. Ahora, haciendo un jueguecito con SDL tengo que hacerlo, he hecho una pruba, pero para mi sorpresa me da errores. este es el codigo:


#include <stdio.h>

struct feo
{
int x;
int y;
int w;
int h;
}

struct olita
{
int estado;
feo atrib;
} ola[30];


void alejandro (int x)
{
x = x + 30;
}

void main()
{
ola[5].atrib.x = 8;

alejandro (ola[5].atrib.x);

printf ("%d", ola[5].atrib.x);
}


primero he puesto la estructura feo, despues la estructura olita, en la que uno de susu miembros es una estructura feo. tambien he creado un tabla (o matriz) de 30 estructuras olita.

para probar las funciones he creado una funcion llamada alejandro que accede a la estructura ola[5] y cambia le suma 30 a uno de sus miembros.

pero como ya dije antes me da errores.

GRACIAS, y perdon por ser tan novatillo, pero no lo encontraba en mi libro de C.
#14
Programación gráfica / Eventos y SDL_LoadBMP en SDL
20 de Abril de 2008, 09:53:14 AM
respecto a lo del ingles, llevo 6 años casi 7 en una academia, pero cuando llegan palabras y frases muy complicadas pues me lio ni mi madre las entiende que es profesora  :?  (bueno en realidad si)
#15
Programación gráfica / Eventos y SDL_LoadBMP en SDL
19 de Abril de 2008, 10:34:58 PM
Muchas gracias he sustituido lo que me has puesto por lo que tenia y me funciona perfe XD, nose en que fallaria me habria olvidado de lgo  :shock:

por cierto me encanta SDL, he visto DirectX y opengl por encima y lo facil que es SDL es asombroso, aunque claro tambien tiene que es en 2D y creo que Directx en realidad es complicado por el propio windows, joder con todas las variables HWeg, no se los podian poner mas raros . :D





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.