Logo

¡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 - zaga666

#1
sere un poco mas especifico este es mi codigo y no se como meter el mapa no me sale el mapa

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include "csprite.h"




#define MAXMAP 400
SDL_Surface *screen;
CFrame fnave;
CFrame fmalo;
CFrame tile1;
CFrame tile2;
CFrame tile3;
CSprite nave(1);
CSprite malo(1);
CSprite suelo[3];
SDL_Rect rectangulo;
SDL_Joystick *joystick;
char mapa[401];
int joyx, joyy;
int done=0;
int indice, indice_in;
FILE *f;
// estructura que contiene la información
// de nuestro avión
struct minave {
int x,y;
} jugador;
// Estructura que contiene información
// del avión enemigo
struct naveenemiga {
int x,y;   
} enemigo;
// Dibuja el escenario
void DrawScene(SDL_Surface *screen) {
int i,j,x,y,t;
// movimiento del scenario (scroll)
indice_in+=2;
if (indice_in>=64) {
  indice_in=0;
  indice-=10;
}
 
if (indice <= 0) {
  indice=MAXMAP-100; // si llegamos al final, empezamos de nuevo.
  indice_in=0;
}
//dibujar escenario
for (i=0 ; i<10 ; i++) {
  for (j=0 ; j<10 ; j++) {
   t=mapa[indice+(i*10+j)]; 
   // calculo de la posición del tile
   x=j*64;
   y=(i-1)*64+indice_in;
   
   // dibujamos el tile
   suelo[t].setx(x);
   suelo[t].sety(y);
   suelo[t].draw(screen);
  } 
}
// dibuja avión
nave.setx(jugador.x);
nave.sety(jugador.y);
nave.draw(screen);
// Dibuja enemigo
malo.setx(enemigo.x);
malo.sety(enemigo.y);
malo.draw(screen);
     
// ¿ha colisionado con la nave?
if (malo.colision(nave) == TRUE) {
  done=1;
}
// Mostramos todo el frame
SDL_Flip(screen);
}
// Inicializamos estados
void inicializa() {
int c;
jugador.x=300;
jugador.y=300;
enemigo.x=100;
enemigo.y=100;
indice=MAXMAP-100;
indice_in=0;
// Carga del mapa
if((f=fopen("C:/mapa.map","r")) != NULL) {
  c=fread(mapa,MAXMAP,1,f); 
  fclose(f);
}
}
void finaliza() {
// finalizamos los sprites
nave.finalize();
malo.finalize();
suelo[0].finalize();
suelo[1].finalize();
suelo[2].finalize();
// cerramos el joystick
if (SDL_JoystickOpened(0)) {
  SDL_JoystickClose(joystick);
}
}
// Preparamos los esprites
int InitSprites() {
fnave.load("C:/minave.bmp");
nave.addframe(fnave);
fmalo.load("C:/malo1.bmp");
malo.addframe(fmalo);
tile1.load("C:/tile_0.bmp");
suelo[0].addframe(tile1);
tile2.load("C:/planeta.bmp");
suelo[1].addframe(tile2);
tile3.load("C:/wood.bmp");
suelo[2].addframe(tile3);

return 0;
}
int main(int argc, char *argv[]) {
SDL_Event event;
Uint8 *keys;
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
  printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
  return 1;
}
screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE);
if (screen == NULL) {
  printf("No se puede inicializar el modo gráfico: \n",SDL_GetError());
  return 1;
}
atexit(SDL_Quit);
inicializa(); 
InitSprites();
 
while (done == 0) {
   
  // dibujamos el frame
  DrawScene(screen);
  // consultamos el estado del teclado
  keys=SDL_GetKeyState(NULL);
  // consultamos el estado del joystick
  SDL_JoystickUpdate();
   
  joyx = SDL_JoystickGetAxis(joystick, 0);
  joyy = SDL_JoystickGetAxis(joystick, 1);
  if ((keys[SDLK_UP] || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
  if ((keys[SDLK_DOWN] || joyy > 10) && (jugador.y < 460)) {jugador.y=jugador.y+(5);}
  if ((keys[SDLK_LEFT] || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
  if ((keys[SDLK_RIGHT] || joyx > 10) && (jugador.x < 620)) {jugador.x=jugador.x+(5);}
  while (SDL_PollEvent(&event)) {
     
   if (event.type == SDL_QUIT) {done=1;}
   if (event.type == SDL_KEYDOWN || event.type == SDL_JOYBUTTONDOWN) {
       
    if (event.key.keysym.sym == SDLK_ESCAPE) {
     done=1;
   }   
   }   
         
  } 
}
   
finaliza();
return 0;
}
#2
General Programadores / Dudas sobre SDL en MS Visual C++
14 de Mayo de 2012, 10:43:05 PM
Hola que tal me soy novato en esto de la programacion de videojuegos, estoy leyendo este libro http://www.agserrano.com/libros/sdl/[ebook]Programacion%20de%20videojuegos%20con%20SDL.pdf
se me hace un libro muy directo para los que apenas empiezan en la programacion con sdl, y mi duda es que no encuentro un editor de mapas con tiles y como ingresarlo en mi codigo, en este libro hay ejemplos pero no me funcionan si me recomiendaran mas libros o paginas para poder aprender mas sobre la programacion de videojuegos con c++ muchas gracias.





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