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

#1
General Programadores / Re: Ayuda(Mover sprite con mouse)
02 de Mayo de 2009, 05:15:29 AM
Cita de: [EX3] en 02 de Mayo de 2009, 05:01:41 AM
Que lenguaje y que librerias estas usando?

Salu2...


A perdón jaja, es C#, lo estoy haciendo en XNA.  :-X
#2
General Programadores / Ayuda(Mover sprite con mouse)
02 de Mayo de 2009, 02:27:25 AM
Hola que tal, tengo otro proyecto para mi clase de programación, es algo relativamente sencillo..

Lo que tengo que hacer es un juego en el que salgan del lado izquierda personajes saltando en una curva(con animación) y abajo hay una plataforma que es movida con el mouse y si chocan con la plataforma regresan rebotando.

Lo que no logro hacer es como asignarle el valor de X del mouse a la plataforma para moverla con el mismo, ya que va abajo y solo tiene que moverse en el eje X.

http://www.disbelieving.com/fun/games/tomato/index.html                     

Esta es la liga por si alguien quiere ver cual debe ser el resultado final, la plataforma que digo es la espatula en la que caen los tomates.


Saludos a todos. ;)

#3
General Programadores / Re: Ayuda con clic
21 de Abril de 2009, 12:10:08 AM
No, si da clic se devuelve 1, y pues si, puede ser cualquier numero, yo elegí el cero por representar nulidad.. pero igual pudo haber sido 3, mientras no de clic el valor no importa mientras se lo des.
#4
General Programadores / Re: Ayuda con clic
20 de Abril de 2009, 08:09:13 PM
Por fin!!! Al fin está terminado :D:D

Muchas gracias a todos por su ayuda, fue entregado en tiempo y con buena presetnación..

Solo una duda mas, alguien sabe como o donde puedo subirlo? alguna pagina o algo así?

Por lo pronto les dejo el codigo por si quieres criticar jaja

Código (csharp) [Seleccionar]

namespace WindowsGame6
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D fondo;
        Texture2D Hongo;
        Texture2D pis;
        Texture2D mario;
        Texture2D luigi;
        Texture2D marioj;
        Texture2D luigij;
        Texture2D reset;
        Texture2D playagain;
        Texture2D start;
        Texture2D instrucciones;
        MouseState mouse;
        double tiempo;
        int gameover;
        SpriteFont fuente;
        Color color = Color.White;
        Color color2 = Color.White;
       
        Rectangle strt = new Rectangle(250, 380,250,50);

        int[] arr = new int[7];
        Rectangle[] arreglo = new Rectangle[7];
        Rectangle rreset = new Rectangle(10,140,150,100);
        Rectangle rplay = new Rectangle(350, 50, 200, 150);
        Texture2D koopa;

        int x = 0;
        int y = 100;
        int xm = 80;
        int ym = 80;
        bool inicia = true;
        bool perder = true;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            this.IsMouseVisible = true;
            arr[0] = 1;
            arr[1] = 1;
            arr[2] = 1;
            arr[3] = 0;
            arr[4] = 2;
            arr[5] = 2;
            arr[6] = 2;



            for (int i = 0; i < 7; i++)
            {
                arreglo[i] = new Rectangle(i * 120, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, xm, ym);

            }

            tiempo = 0;
            gameover = 0;

            base.Initialize();
        }

        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            fondo = Content.Load<Texture2D>("fondo");
            Hongo = Content.Load<Texture2D>("GoombaN");
            pis = Content.Load<Texture2D>("GoombaP");
            mario = Content.Load<Texture2D>("mario");
            luigi = Content.Load<Texture2D>("luigi");
            marioj = Content.Load<Texture2D>("marioj");
            luigij = Content.Load<Texture2D>("luigij");
            reset = Content.Load<Texture2D>("reset");
            playagain = Content.Load<Texture2D>("playagain");
            fuente = Content.Load<SpriteFont>("Verdana");
            koopa = Content.Load <Texture2D>("koopa");
            start = Content.Load<Texture2D>("start");
            instrucciones = Content.Load<Texture2D>("instrucciones");

           
        }

        // TODO: use this.Content to load your game content here


        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        ///

        int clicEn(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

            for (int x = 0; x < 7; x++)
            {


                if (rmouse.Intersects(arreglo[x]))
                {
                   
                    return x;

                }

            }
            return 0;
        }

        int clicreset(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

               if (rmouse.Intersects(rreset))
                {

                    return 1;

                }
               return 0;
                       
           
        }

        int clicagain(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

            if (rmouse.Intersects(rplay))
            {

                return 1;

            }
            return 0;


        }

        int clicstart(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

            if (rmouse.Intersects(strt))
            {

                return 1;

            }
            return 0;


        }
       




        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();



            // TODO: Add your update logic here
            mouse = Mouse.GetState();

            if (mouse.LeftButton == ButtonState.Pressed)
            {
                int a;
                a = clicagain(mouse.X, mouse.Y);

                if (a == 1)
                {
                    this.Initialize();
                    perder = true;
                }
            }

            if (perder == true)
            {
                for (int r = 1; r < graphics.GraphicsDevice.Viewport.Width; r++)
                {
                    x += 2;
                    if (x == graphics.GraphicsDevice.Viewport.Width)
                        x = 0;
                }
                try
                {
                    if (mouse.LeftButton == ButtonState.Pressed)
                    {

                        int pos = clicEn(mouse.X, mouse.Y);

                        if (arr[pos] == 1)
                        {
                            if (arr[pos + 1] == 0)
                            {
                                color = Color.Red;
                                arr[pos] = 0;
                                arr[pos + 1] = 1;
                            }
                            else if (arr[pos + 2] == 0)
                            {
                                color = Color.Red;
                                arr[pos] = 0;
                                arr[pos + 2] = 1;
                            }



                        }


                        else
                        {
                            pos = clicEn(mouse.X, mouse.Y);

                            if (arr[pos] == 2)
                            {
                               
                                if (arr[pos - 1] == 0)
                                {
                                    color2 = Color.Blue;
                                    arr[pos] = 0;
                                    arr[pos - 1] = 2;
                                }
                                else if (arr[pos - 2] == 0)
                                {
                                    color2 = Color.Blue;
                                    arr[pos] = 0;
                                    arr[pos - 2] = 2;
                                }


                            }


                        }


                    }

                    else if (mouse.LeftButton == ButtonState.Released)
                    {
                        color = Color.White;
                        color2 = Color.White;
                    }

                    if (inicia == false)
                    {
                        if (tiempo < 60)
                            tiempo += gameTime.ElapsedGameTime.TotalSeconds;
                        else
                            tiempo = 0;

                    }
                    base.Update(gameTime);
                }

                catch (Exception)
                {
                }
               
                if (mouse.LeftButton == ButtonState.Pressed)
            {
                int p;
                p = clicreset(mouse.X, mouse.Y);

                if (p == 1)
                {
                    arr[0] = 1;
                    arr[1] = 1;
                    arr[2] = 1;
                    arr[3] = 0;
                    arr[4] = 2;
                    arr[5] = 2;
                    arr[6] = 2;
                }

            }

            }

           

           
        }




        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            double segundos;
            if(mouse.LeftButton == ButtonState.Pressed)
            {
                int d;
                d = clicstart(mouse.X, mouse.Y);
                    if(d==1)
                    {
                        inicia = false;
                    }
            }

            if (inicia == true)
            {
                spriteBatch.Draw(instrucciones, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
               
                spriteBatch.Draw(start, strt, color);

                segundos = 61;
            }

            else if (inicia == false)
            {


                segundos = Math.Truncate(61.0 - tiempo);
                spriteBatch.Draw(fondo, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle(5, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) + 10, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 2 + 15, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 3 + 20, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 4 + 25, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 5 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 6 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
                spriteBatch.Draw(reset, rreset, Color.White);
                spriteBatch.Draw(playagain, rplay, Color.White);
                spriteBatch.Draw(koopa, new Rectangle(x, y, 80, 80), Color.White);

                for (int xx = 0; xx < 7; xx++)
                {
                    if (arr[xx] == 1)
                    {

                        spriteBatch.Draw(mario, arreglo[xx], color);


                    }

                    if (arr[xx] == 2)
                    {
                        spriteBatch.Draw(luigi, arreglo[xx], color2);

                    }

                   

                }


                Vector2 V = new Vector2(graphics.GraphicsDevice.Viewport.Width - 125, 0);
                if (gameover == 0)

                    spriteBatch.DrawString(fuente, segundos + "", V, Color.White);

                if (segundos == 0)
                {

                    {
                        spriteBatch.DrawString(fuente, "Game Over", new Vector2(350, 300), Color.White);
                        gameover = 1;

                        perder = false;

                       
                       
                    }
                   
                }

                if (arr[0] == 2 && arr[1] == 2 && arr[2] == 2 && arr[4] == 1 && arr[5] == 1 && arr[6] == 1)
                {
                    spriteBatch.DrawString(fuente, "You Won!!!", new Vector2(350, 300), Color.White);

                    GraphicsDevice.Clear(Color.Black);
                    perder = false;
                    gameover = 1;


                }
            }
                spriteBatch.End();





                base.Draw(gameTime);
            }
        }
    }






A y para los que me preguntaban el por qué se regresa el valor 0 en el metodo, es por que primero, para poder compilar me pide que regrese una variable mas, y es por que esa variable necesita una valor alterlo por si no se da clic, y ese valor es 0.

Gracias de nuevo :D

Saludos.
#5
General Programadores / Re: Ayuda con clic
19 de Abril de 2009, 07:31:34 AM
Hoal de nuevo a todos, he seguido sus consejos y de antemano muchas gracias por ellos, hasta ahora todo va muy bien, cambié algunos codigos y el programa ya jala como debería, le agregué un contar de tiempo hacia atrás, un botón para reiniciar el juego, y mensajes para cuando pierdes o ganas,.. ahora lo unico que me falta son 2 botones, uno que es el "RESET" que lo que hace es regresar a los personajes a su posición inicial sin modificar el cronometro.. lo que hice es esto:

Código (csharp) [Seleccionar]
if (mouse.LeftButton == ButtonState.Pressed)
            {
                int p;
                p = clicreset(mouse.X, mouse.Y);//Clicreset es un metodo que hice para que el mouse intersecte con el rectangulo del botón

                if (p == 1)
                {
                    for (int n = 0; n <= 6; n++)
                    {
                        if (n < 3)
                            arr[n] = 1;
                        else if (n >= 4)
                            arr[n] = 2;
                    }
                }
            }




Aparte de esto me falta hacer que al iniciar el juego me aparesca un cuadro con las instrucciones y un botón "START" que al darle clic inicie el juego, y la mosca que aparece.

Les dejo el codigo que he hecho para que me critiquen:

Código (csharp) [Seleccionar]
namespace WindowsGame6
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D fondo;
        Texture2D Hongo;
        Texture2D pis;
        Texture2D mario;
        Texture2D luigi;
        Texture2D marioj;
        Texture2D luigij;
        Texture2D reset;
        Texture2D playagain;
        MouseState mouse;
        double tiempo;
        int gameover;
        SpriteFont fuente;
        Color color = Color.White;

        int[] arr = new int[7];
        Rectangle[] arreglo = new Rectangle[7];
        Rectangle rreset = new Rectangle(10,140,150,100);
        Rectangle rplay = new Rectangle(350, 50, 200, 150);
       

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            this.IsMouseVisible = true;
            arr[0] = 1;
            arr[1] = 1;
            arr[2] = 1;
            arr[3] = 0;
            arr[4] = 2;
            arr[5] = 2;
            arr[6] = 2;




            for (int i = 0; i < 7; i++)
            {
                arreglo[i] = new Rectangle(i * 120, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80);

            }

            tiempo = 0;
            gameover = 0;

            base.Initialize();
        }

        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            fondo = Content.Load<Texture2D>("fondo");
            Hongo = Content.Load<Texture2D>("GoombaN");
            pis = Content.Load<Texture2D>("GoombaP");
            mario = Content.Load<Texture2D>("mario");
            luigi = Content.Load<Texture2D>("luigi");
            marioj = Content.Load<Texture2D>("marioj");
            luigij = Content.Load<Texture2D>("luigij");
            reset = Content.Load<Texture2D>("reset");
            playagain = Content.Load<Texture2D>("playagain");
            fuente = Content.Load<SpriteFont>("Verdana");
        }

        // TODO: use this.Content to load your game content here


        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        ///

        int clicEn(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

            for (int x = 0; x < 7; x++)
            {


                if (rmouse.Intersects(arreglo[x]))
                {
                   
                    return x;

                }

            }
            return 0;
        }

        int clicreset(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

               if (rmouse.Intersects(rreset))
                {

                    return 1;

                }
               return 0;
                       
           
        }

        int clicagain(int xmouse, int ymouse)
        {
            Rectangle rmouse;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);

            if (rmouse.Intersects(rplay))
            {

                return 1;

            }
            return 0;


        }
       




        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();



            // TODO: Add your update logic here
            mouse = Mouse.GetState();
            try
            {
                if (mouse.LeftButton == ButtonState.Pressed)
                {

                    int pos = clicEn(mouse.X, mouse.Y);

                    if (arr[pos] == 1)
                    {
                        if (arr[pos + 1] == 0)
                        {
                            arr[pos] = 0;
                            arr[pos + 1] = 1;
                        }
                        else if (arr[pos + 2] == 0)
                        {
                            arr[pos] = 0;
                            arr[pos + 2] = 1;
                        }



                    }


                    else
                    {
                        pos = clicEn(mouse.X, mouse.Y);

                        if (arr[pos] == 2)
                        {

                            if (arr[pos - 1] == 0)
                            {
                                arr[pos] = 0;
                                arr[pos - 1] = 2;
                            }
                            else if (arr[pos - 2] == 0)
                            {
                                arr[pos] = 0;
                                arr[pos - 2] = 2;
                            }


                        }


                    }
                }


                if (tiempo < 60)
                    tiempo += gameTime.ElapsedGameTime.TotalSeconds;
                else
                    tiempo = 0;


                base.Update(gameTime);
            }

            catch (Exception)
            {
            }

            if (mouse.LeftButton == ButtonState.Pressed)
            {
                int p;
                p = clicreset(mouse.X, mouse.Y);

                if (p == 1)
                {
                    for (int n = 0; n <= 6; n++)
                    {
                        if (n < 3)
                            arr[n] = 1;
                        else if (n >= 4)
                            arr[n] = 2;
                    }
                }
            }

            if (mouse.LeftButton == ButtonState.Pressed)
            {
                int a;
                a = clicagain(mouse.X, mouse.Y);

                if (a == 1)
                    this.Initialize();
            }
        }




        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            double segundos = Math.Truncate(61.0 - tiempo);
            spriteBatch.Draw(fondo, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle(5, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) + 10, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 2 + 15, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 3 + 20, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 4 + 25, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 5 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 6 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(reset, rreset, color);
            spriteBatch.Draw(playagain, rplay, color);

            for (int xx = 0; xx < 7; xx++)
            {
                if (arr[xx] == 1)
                {

                    spriteBatch.Draw(mario, arreglo[xx], Color.White);


                }

                if (arr[xx] == 2)
                {
                    spriteBatch.Draw(luigi, arreglo[xx], Color.White);

                }

               
            }


            Vector2 V = new Vector2(graphics.GraphicsDevice.Viewport.Width - 125, 0);
            if (gameover == 0)

                spriteBatch.DrawString(fuente, segundos + "", V, Color.White);

            if (segundos == 0)
            {
               
                    {
                        spriteBatch.DrawString(fuente, "Game Over", new Vector2(350, 300), Color.White);
                        gameover = 1;

                        //GraphicsDevice.Clear(Color.Black);
                    }
                if (gameover == 1)
                {
                    GraphicsDevice.Clear(Color.Black);
                }
            }

                if (arr[0] == 2 && arr[1] == 2 && arr[2] == 2 && arr[4] == 1 && arr[5] == 1 && arr[6] == 1)
                {
                    spriteBatch.DrawString(fuente, "GANASTE!!!!", new Vector2(350, 300), Color.White);

                    GraphicsDevice.Clear(Color.Black);

                    gameover = 1;


                }

                spriteBatch.End();





                base.Draw(gameTime);
            }
        }
    }






De nuevo, gracias por sus consejos, este juego es para hoy en la noche jaja, les estaré muy agradecido si me dan retroalimentación y uno que otro consejo mas :D:D

Saludos.

#6
General Programadores / Re: Ayuda con clic
17 de Abril de 2009, 04:42:07 PM
Hice lo que me sugirieron, y si efectivamente tenia ese error de logica jeje, lo siento.

Pero el error lo sigue marcando aqui:


Código (csharp) [Seleccionar]
if (mouse.LeftButton == ButtonState.Pressed)
                {
                    obj = clicEnLuigi(mouse.X, mouse.Y);

             ->   if (arr[obj - 1] == 0)//INDICE FUERA DE LOS LIMITES DE LA MATRÍZ
                    {
                        arr[obj] = 0;
                        arr[obj - 1] = 2;
                    }
                    else if (arr[obj - 2] == 0)
                    {
                        arr[obj] = 0;
                        arr[obj - 2] = 2;
                    }



                }


Para mover a Mario, como se tiene que mover a la derecha, le sumo uno o 2 según sea el caso y funciona bien; el problema viene al meter el metodo y codigo de luigi, luigi debe moverse a la izquierda, entonces el darle click lo muevo -1 o -2 en el arreglo igual que mario, pero no se mueve y marca ese error; y aparte mario deja de funcionar(repito solo cuando el de luigi está compilando.

Y una disculpa, soy nuevo en el foro y no sabia lo de los iconos jejeje.
#7
General Programadores / Re: Ayuda con clic
17 de Abril de 2009, 05:42:29 AM
#8
General Programadores / Re: Ayuda con clic
17 de Abril de 2009, 05:29:05 AM
Si, si compila.. pero me manda un error al darle click a cualquiera de los luigis o marios en:

if (mouse.LeftButton == ButtonState.Pressed)
                {
                    obj = clicEnLuigi(mouse.X, mouse.Y);

       -------> if (arr[obj - 1] == 0) //ME DICE: INDICE FUERA DE LOS LIMITES DE LA MATRÍZ
                    {
                        arr[obj] = 0;
                        arr[obj - 1] = 2;
                    }
                    else if (arr[obj - 2] == 0)
                    {
                        arr[obj] = 0;
                        arr[obj - 2] = 2;
                    }
               

----------------------------------

Mira, hasta aquí todo va bien, con esto ya se mueven correctamente los 3 de la derecha(marios):

namespace WindowsGame6
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D fondo;
        Texture2D Hongo;
        Texture2D pis;
        Texture2D mario;
        Texture2D luigi;
        Texture2D marioj;
        Texture2D luigij;
        MouseState mouse;
       
        int objeto;

        int[] arr = new int[7];
        Color color = Color.White;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            this.IsMouseVisible = true;
            arr[0] = 1;
            arr[1] = 1;
            arr[2] = 1;
            arr[3] = 0;
            arr[4] = 2;
            arr[5] = 2;
            arr[6] = 2;
            base.Initialize();
        }

        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            fondo = Content.Load<Texture2D>("fondo");
            Hongo = Content.Load<Texture2D>("GoombaN");
            pis = Content.Load<Texture2D>("GoombaP");
            mario = Content.Load<Texture2D>("mario");
            luigi = Content.Load<Texture2D>("luigi");
            marioj = Content.Load<Texture2D>("marioj");
            luigij = Content.Load<Texture2D>("luigij");
        }

        // TODO: use this.Content to load your game content here


        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        ///

        int clicEnMario(int xmouse, int ymouse)
        {
            Rectangle rmouse, rmario;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);
            for (int x = 1; x <= 3; x++)
            {
                rmario = new Rectangle(x * 120, 400, 150, 150);
                if (rmouse.Intersects(rmario))
                    return x;
            }
            return 0;
        }


        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Add your update logic here
            mouse = Mouse.GetState();

            if (mouse.LeftButton == ButtonState.Pressed)
            {
                objeto = clicEnMario(mouse.X, mouse.Y);
                if (arr[objeto + 1] == 0)
                {
                    arr[objeto] = 0;
                    arr[objeto + 1] = 1;
                }
                else if (arr[objeto + 2] == 0)
                {
                    arr[objeto] = 0;
                    arr[objeto + 2] = 1;


                }













                base.Update(gameTime);
            }
        }

        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            spriteBatch.Draw(fondo, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle(5, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) + 10, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 2 + 15, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 3 + 20, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 4 + 25, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 5 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 6 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);




           

                for (int xx = 1; xx <= 7; xx++)
                {
                    if (arr[xx - 1] == 1)
                    {

                        spriteBatch.Draw(mario, new Rectangle(xx * 122 - 122, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);


                    }

                    if (arr[xx - 1] == 2)
                    {
                        spriteBatch.Draw(luigi, new Rectangle(xx * 120 - 120, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);

                    }
                }

                spriteBatch.End();




                base.Draw(gameTime);
            }
        }
    }



Lo que tengo que hacer es algo parecido a esto:

http://www.disbelieving.com/fun/games/crackshot/index.html

la animación es lo menos importante, lo que importa es que funcione como ese juego, incluyendo a la mosca de arriba y los botones, contador e instrucciones.

Lo demas creo que si lo sé hacer, pero no sé como hacer que se muevan los de la izquierda :(


#9
General Programadores / Ayuda con clic
16 de Abril de 2009, 11:02:15 PM
Hola, estoy haciendo un proyecto para mi clase de programación; hay algo que no entiendo por que está mal; es un arreglo de 7 posiciones para dibujar 2 imagenes, 3 en las primeras 3 posiciones, una vacia y en las otras 3 otros 3 cuadros [1,1,1,0,2,2,2].

Ya está dibujado, pero al darle clic a las de "2",  me manda un error, y no se por que, y si le quito ese pedazo de codigo los "1" si sirven, pero al ponerle el otro codigo ya no. :(

namespace WindowsGame6
{
    /// <summary>
    /// This is the main type for your game
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D fondo;
        Texture2D Hongo;
        Texture2D pis;
        Texture2D mario;
        Texture2D luigi;
        Texture2D marioj;
        Texture2D luigij;
        MouseState mouse;
        int obj;
        int objeto;
       
        int[] arr = new int[7];
        Color color = Color.White;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            this.IsMouseVisible = true;
            arr[0] = 1;
            arr[1] = 1;
            arr[2] = 1;
            arr[3] = 0;
            arr[4] = 2;
            arr[5] = 2;
            arr[6] = 2;
            base.Initialize();
        }

        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            fondo = Content.Load<Texture2D>("fondo");
            Hongo = Content.Load<Texture2D>("GoombaN");
            pis = Content.Load<Texture2D>("GoombaP");
            mario = Content.Load<Texture2D>("mario");
            luigi = Content.Load<Texture2D>("luigi");
            marioj = Content.Load<Texture2D>("marioj");
            luigij = Content.Load<Texture2D>("luigij");
        }

            // TODO: use this.Content to load your game content here
       

        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Unload any non ContentManager content here
        }

        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        ///

        int clicEnMario(int xmouse, int ymouse)
        {
            Rectangle rmouse, rmario;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);
            for (int x = 1; x <= 3; x++)
            {
                rmario = new Rectangle(x * 120, 400, 150, 150);
                if (rmouse.Intersects(rmario))
                    return x;
            }
            return 0;
        }

        int clicEnLuigi(int xmouse, int ymouse)
        {
            Rectangle rmouse, rluigi;

            rmouse = new Rectangle(xmouse, ymouse, 1, 1);
            for (int xx = 1; xx >= 3; xx++)
            {

                if (arr[xx - 1] == 2)
                {
                    rluigi = new Rectangle(xx * 120, 400, 150, 150);
                    if (rmouse.Intersects(rluigi))
                        return xx;
                }
            }
            return 0;
        }
        protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // TODO: Add your update logic here
            mouse = Mouse.GetState();

            if (mouse.LeftButton == ButtonState.Pressed)
            {
               
                objeto = clicEnMario(mouse.X, mouse.Y);
                if (arr[objeto + 1] == 0)
                {
                    arr[objeto] = 0;
                    arr[objeto + 1] = 1;
                }
                else if (arr[objeto + 2] == 0)
                {
                    arr[objeto] = 0;
                    arr[objeto + 2] = 1;


                }

                if (mouse.LeftButton == ButtonState.Pressed)
                {
                    obj = clicEnLuigi(mouse.X, mouse.Y);
               
                    if (arr[obj - 1] == 0)
                    {
                        arr[obj] = 0;
                        arr[obj - 1] = 2;
                    }
                    else if (arr[obj - 2] == 0)
                    {
                        arr[obj] = 0;
                        arr[obj - 2] = 2;
                    }


               
            }

                base.Update(gameTime);
            }
        }

        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            spriteBatch.Draw(fondo, new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle(5, (graphics.GraphicsDevice.Viewport.Height)/8 * 6+4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7)+10, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 + 4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 2 + 15, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 +4, 80,80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 3 + 20, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 +4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 4 + 25, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 +4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 5 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 +4, 80, 80), Color.White);
            spriteBatch.Draw(Hongo, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 6 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 6 +4, 80, 80), Color.White);


           
           
            /*for (int x = 1; x <= 3; x++)
            {
                if (x == objeto)
                {
                    xm = 100;
                }
                else
                {
                    spriteBatch.Draw(mario, new Rectangle(5, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
           
                }
            }**/

            for (int x = 1; x <= 7; x++)
            {
                if (arr[x - 1] == 1)
                {
                   
                    spriteBatch.Draw(mario, new Rectangle(x * 122 - 122, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80),Color.White);
                    //spriteBatch.Draw(mario, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) + 10, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
                    //spriteBatch.Draw(mario, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 2 + 15, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
               
                   
                }

                if (arr[x - 1] == 2)
                {
                    spriteBatch.Draw(luigi, new Rectangle(x* 120 - 120, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
                    //spriteBatch.Draw(luigi, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 5 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
                    //spriteBatch.Draw(luigi, new Rectangle((graphics.GraphicsDevice.Viewport.Width / 7) * 6 + 30, (graphics.GraphicsDevice.Viewport.Height) / 8 * 5 + 12, 80, 80), Color.White);
                }
             }

            spriteBatch.End();




            base.Draw(gameTime);
        }
    }
}


Ese es el codigo, tiene algunas basuras en comentarios, por si las llegase a necesitar, por favor ayuda!!!! :'(
#10
XNA / Ayuda con XNA(Principios basicos)
13 de Abril de 2009, 01:10:34 AM
Hola que tal, soy nuevo el el foro y este es mi primer mensaje jeje..
Mi nombre es Fernando :)

Tengo algo de conocimiento de C#, pero recién me inicié en la programación con XNA.. ya tengo un proyecto para la escuela, es algo sencillo, pero hasta ahora tengo los conocimientos basicos(Cargar imagenes, mover con las teclas, deformar imagenes agrandando y cosas asi, dar click y que haga algo la imagen y delimitar el movimiento de las imagenes al ancho y alto de la pantalla)..


Nos dejaron un ejemplo que tenemos que seguir ---> http://www.disbelieving.com/fun/games/leapfroggie/index.html

La forma en la que lo haré es bastante primitiva, mover las imagenes con simples calculos e "if"´s.. pero quiero saber si alguien tiene una forma mejor basica y obia de hacerlo(quiero sorprender a mi maestra jeje), tambien quiero ver si alguien puede ayudarme con el movimiento de las ranas, según yo es con diferentes imagenes reemplazandolas con cada movimiento pero pienso que puede existir otra manera.

Y por ultimo la mosca.. esa si no tengo idea de como hacer que se mueva sola, se me ocurre hacerla como un objeto de la clase "random", si es asi? 0o

Espero alguien pueda ayudarme y pueda obtener algun bono extra por parte de mi maestra :D.. y si puedo ayudar a alguien en cualquier cosa no duden en pedirmelo, tambien estoy un poco metido en el mundo 3D, no se mucho pero pues tal vez podría ser de un poco de ayuda.

Creo que es todo por ahora. Saludos ;)


P.D.: Les dejo el link del ejemplo del que les hablé--> http://www.disbelieving.com/fun/games/leapfroggie/index.html





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.