Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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();
                }
            }
        }