protected void PosicionarKibus() { Sdl.SDL_Event evento; Sdl.SDL_Rect rectangulo; kibus = new Personaje(); bool puesto; //if(this.casa == null) if(requierePosicionarCasa) { Sprite casa = new Sprite("Assets/GFX/casini.png"); puesto = false; do { while(Sdl.SDL_PollEvent(out evento) > 0) { switch(evento.type) { case Sdl.SDL_MOUSEMOTION: if (evento.motion.x > 0 && evento.motion.y > 0 && evento.motion.x < Hardware.Ancho && evento.motion.y < Hardware.Alto) { rectangulo.x = /*(short)(evento.motion.x - 16);*/(short)(((int)(20 - (((Hardware.Ancho - evento.motion.x) / (float)Hardware.Ancho)) * 20)) * 32); rectangulo.y = /*(short)(evento.motion.y - 16);*/(short)(((int)(20 - (((Hardware.Alto- evento.motion.y) / (float)Hardware.Alto)) * 20)) * 32); try { if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { casa.Mover(rectangulo); } } catch (IndexOutOfRangeException) {} } break; case Sdl.SDL_MOUSEBUTTONDOWN: try { if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { sprites[rectangulo.x/32,rectangulo.y/32] = casa; this.casa = casa; puesto = true; } } catch (IndexOutOfRangeException) {} break; } } Hardware.DibujarFondo(); DibujarObstaculos(); casa.Dibujar(); Hardware.RefrescarPantalla(); }while(!puesto); } puesto = false; do { while(Sdl.SDL_PollEvent(out evento) > 0) { switch(evento.type) { case Sdl.SDL_MOUSEMOTION: if (evento.motion.x > 0 && evento.motion.y > 0 && evento.motion.x < Hardware.Ancho && evento.motion.y < Hardware.Alto) { rectangulo.x = /*(short)(evento.motion.x - 16);*/(short)(((int)(20 - (((Hardware.Ancho - evento.motion.x) / (float)Hardware.Ancho)) * 20)) * 32); rectangulo.y = /*(short)(evento.motion.y - 16);*/(short)(((int)(20 - (((Hardware.Alto- evento.motion.y) / (float)Hardware.Alto)) * 20)) * 32); try { if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { kibus.Mover(rectangulo); } } catch (IndexOutOfRangeException) {} } break; case Sdl.SDL_MOUSEBUTTONDOWN: try { if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { puesto = true; } } catch (IndexOutOfRangeException) {} break; } } Hardware.DibujarFondo(); DibujarObstaculos(); kibus.Dibujar(); Hardware.RefrescarPantalla(); }while(!puesto); }
public static void Inicializar(short ancho, short alto, int colores,bool pantalla_completa) { BarraHerramientas = 200; int bpp; int flags = Sdl.SDL_HWSURFACE | Sdl.SDL_DOUBLEBUF | Sdl.SDL_ANYFORMAT; Console.WriteLine("Inicializando SDL"); Hardware.Ancho = ancho; Hardware.Alto = alto; if(pantalla_completa) { flags |= Sdl.SDL_FULLSCREEN; } #region video if(Sdl.SDL_Init(Sdl.SDL_INIT_VIDEO) < 0) { Console.WriteLine("No se pudo inicar el sistema de video"); Console.WriteLine("ERROR: {0}", Sdl.SDL_GetError()); Environment.Exit(1); } bpp = Sdl.SDL_VideoModeOK(ancho, alto, colores, flags); if(bpp == 0) { Console.WriteLine("No se pudo establecer el modo de video"); Console.WriteLine("ERROR: {0}", Sdl.SDL_GetError()); Environment.Exit(1); } pantalla = Sdl.SDL_SetVideoMode(ancho, alto, bpp, flags); #endregion #region Fuentes if(SdlTtf.TTF_Init() < 0) { Console.WriteLine("No se pudo inicar el manejador de fuentes"); Console.WriteLine("ERROR: {0}", Sdl.SDL_GetError()); Environment.Exit(1); } #endregion origen = new Sdl.SDL_Rect(0 , 0, ancho, alto); //Sdl.SDL_SetClipRect(pantalla, ref origen); #region Sonido if(Sdl.SDL_InitSubSystem(Sdl.SDL_INIT_AUDIO) < 0) { Console.WriteLine("No se pudo inicar el sistema de audio"); Console.WriteLine("ERROR: {0}", Sdl.SDL_GetError()); SonidoActivo = false; } else { SonidoActivo = true; } if(SonidoActivo) { if(SdlMixer.Mix_OpenAudio(22050, Sdl.AUDIO_S16, 2, 4096) < 0) { Console.WriteLine("No se pudo inicar el mezclador de audio"); Console.WriteLine("ERROR: {0}", Sdl.SDL_GetError()); SonidoActivo = false; } } AlmacenSonidos.Inicializar(); #endregion Console.WriteLine("SDL inicializado con exito"); Sprite boton = new Sprite("Assets/Botones/boton.png"); fuente = new Fuente("Assets/Fuentes/FreeSansBold.ttf", 14); CambiarColorTexto(0,0,0); boton.Mover(650, 100); boton.Dibujar(); EscribirTexto("Arriba", 685, 115); boton.Mover(650, 154); boton.Dibujar(); EscribirTexto("Abajo", 685, 169); boton.Mover(650, 207); boton.Dibujar(); EscribirTexto("Izquierda", 685, 222); boton.Mover(650, 270); boton.Dibujar(); EscribirTexto("Derecha", 685, 285); boton.Mover(650, 324); boton.Dibujar(); EscribirTexto("Buscar", 685, 339); fuente = new Fuente("Assets/Fuentes/FreeSansBold.ttf", 20); }
public override void Iniciar() { Sdl.SDL_Event evento; Sdl.SDL_Rect rectangulo; bool terminado = false; bool casaTaim = false; Random random = new Random(System.DateTime.Now.Millisecond); int elemento; elemento = random.Next(36,42); Sprite obstaculo = new Sprite("Assets/GFX/"+ elemento+".png");; do { while(Sdl.SDL_PollEvent(out evento) > 0) { switch(evento.type) { case Sdl.SDL_MOUSEMOTION: if (evento.motion.x > 0 && evento.motion.y > 0 && evento.motion.x < Hardware.Ancho && evento.motion.y < Hardware.Alto) { rectangulo.x = /*(short)(evento.motion.x - 16);*/(short)(((int)(20 - (((Hardware.Ancho - evento.motion.x) / (float)Hardware.Ancho)) * 20)) * 32); rectangulo.y = /*(short)(evento.motion.y - 16);*/(short)(((int)(20 - (((Hardware.Alto- evento.motion.y) / (float)Hardware.Alto)) * 20)) * 32); //try //{ if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { obstaculo.Mover(rectangulo); } /*} catch (IndexOutOfRangeException) {}*/ } break; case Sdl.SDL_MOUSEBUTTONDOWN: try { if(sprites[rectangulo.x/32,rectangulo.y/32] == null) { sprites[rectangulo.x/32,rectangulo.y/32] = obstaculo; if(casaTaim) { matriz[rectangulo.x/32,rectangulo.y/32] = EditorMapas.CASA; terminado = true; } else { matriz[rectangulo.x/32,rectangulo.y/32] = elemento; elemento = random.Next(36,42); obstaculo = new Sprite("Assets/GFX/"+ elemento+".png"); } } } catch (IndexOutOfRangeException) {} break; case Sdl.SDL_KEYDOWN: if(evento.key.keysym.sym == Sdl.SDLK_SPACE) { obstaculo = new Sprite("Assets/GFX/casini.png"); casaTaim = true; } break; } } Hardware.DibujarFondo(); DibujarObstaculos(); obstaculo.Dibujar(); Hardware.RefrescarPantalla(); }while(!terminado); string nombre = ""; terminado = false; do { Hardware.DibujarFondo(); DibujarObstaculos(); Hardware.EscribirTexto("Nombre del mapa: ", 200, 300); Hardware.EscribirTexto(nombre, 200, 340); Hardware.RefrescarPantalla(); while(Sdl.SDL_PollEvent(out evento) > 0) { switch(evento.type) { case Sdl.SDL_KEYDOWN: if(evento.key.keysym.sym == Sdl.SDLK_RETURN) { terminado = true; } else { nombre += Char.ConvertFromUtf32(evento.key.keysym.sym); } break; } } }while(!terminado); List<string> lineasArreglo = new List<string>(); for(int i = 0; i < 20; i++) { StringBuilder linea = new StringBuilder(); for(int j = 0; j < 20; j++) { linea.Append(matriz[i, j]); if(j != 19) { linea.Append(","); } } lineasArreglo.Add(linea.ToString()); } File.WriteAllLines("Mapas/"+nombre+".txt", lineasArreglo.ToArray()); }
public static void DibujarFondo() { Sprite pasto = new Sprite("Assets/GFX/pasto.jpg"); for(int i = 0; i < 20; i++) { for(int j = 0; j < 20; j++) { pasto.Mover(i * pasto.Ancho, j * pasto.Alto); pasto.Dibujar(); } } }