Kezdőoldal » Számítástechnika » Programozás » Hogyan kell ezt a négyzetet...

Progizo kérdése:

Hogyan kell ezt a négyzetet mozgatni SharpDevelop-ban?

Figyelt kérdés

Szeretném ezt a négyzetet mozgatni a nyíl gombokkal, de meg sem moccan. Kezdő vagyok még a SharpDeveloppal, így nem igazán értem, mi lehet a baj a progimmal. Valaki tud segíteni a megoldásban? Íme a kód:

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;


namespace teglalap

{

public partial class MainForm : Form

{

private int xhely;

private int yhely;

enum irany

{

bal,jobb,fel,le

}

private irany __iranya;

public MainForm()

{

InitializeComponent();

Paint+=new PaintEventHandler(Rajzol);

xhely=50;

yhely=50;

__iranya=irany.jobb;

}


void Rajzol(object sender, PaintEventArgs e)

{

e.Graphics.FillRectangle(Brushes.BlueViolet,xhely,yhely,100,100);

}


void iranyvaltas(object sender, EventArgs e)

{

if (__iranya==irany.jobb)

{

xhely+=5;

}

else if (__iranya==irany.bal)

{

xhely-=5;

}

else if (__iranya==irany.fel)

{

yhely-=5;

}

else if (__iranya==irany.le)

{

yhely+=5;

}

Invalidate();

}


void gombnyomas(object sender, KeyEventArgs e)

{

if (e.KeyCode==Keys.Left)

{

__iranya=irany.bal;

}

else if (e.KeyCode==Keys.Right)

{

__iranya=irany.jobb;

}

else if (e.KeyCode==Keys.Up)

{

__iranya=irany.fel;

}

else if (e.KeyCode==Keys.Down)

{

__iranya=irany.le;

}

}


}

}



2017. okt. 14. 20:20
 1/6 sharkxxx ***** válasza:

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;


namespace teglalap

{

    public partial class MainForm : Form

    {

        private int xhely;

        private int yhely;

        enum irany

        {

            bal,jobb,fel,le

        }

        private irany __iranya;


        public MainForm()

        {

            InitializeComponent();

            Paint += new PaintEventHandler(Rajzol);

            KeyDown += new KeyEventHandler(gombnyomas); // modified

            xhely=50;

            yhely=50;

            __iranya=irany.jobb;

        }

       

        void Rajzol(object sender, PaintEventArgs e)

        {

            e.Graphics.FillRectangle(Brushes.BlueViolet,xhely,yhely,100,100);

        }

       

        void iranyvaltas(object sender, EventArgs e)

        {

            if (__iranya==irany.jobb)

            {

                xhely+=5;

            }

            else if (__iranya==irany.bal)

            {

                xhely-=5;

            }

            else if (__iranya==irany.fel)

            {

                yhely-=5;

            }

            else if (__iranya==irany.le)

            {

                yhely+=5;

            }

            Invalidate();

        }

       

        void gombnyomas(object sender, KeyEventArgs e)

        {

            if (e.KeyCode==Keys.Left)

            {

                __iranya=irany.bal;

            }

            else if (e.KeyCode==Keys.Right)

            {

                __iranya=irany.jobb;

            }

            else if (e.KeyCode==Keys.Up)

            {

                __iranya=irany.fel;

            }

            else if (e.KeyCode==Keys.Down)

            {

                __iranya=irany.le;

            }

            iranyvaltas(sender, e); // modified

        }

       

    }

}

2017. okt. 15. 18:23
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

#1.: Köszönöm szépen; kiegészítéseid alapján már működik.

Amúgy az a furcsa, hogy a hiányos kódsort egy az egyben egy YouTube-os példából másoltam, ott működött, nálam meg nem. Igaz, a YouTube-os fickó MS-Visual Studio-t használt.

2017. okt. 16. 14:25
 3/6 tabaki ***** válasza:

Sajnos, nem ismerem sem a C#-ot, sem a SharpDevelopot, de nekem sharkxxx programja sem fordult le. IDE-ből fordítva nem hiányolja a Main()t? Igazából az sem világos, mire való az egész iranyvaltas(). Itt az én kísérletem, szerintem ugyanazt csinálja:


using System;

using System.Drawing;

using System.Windows.Forms;


namespace teglalap{

      public partial class MainForm : Form{

            private int xhely;

            private int yhely;

            enum irany {bal,jobb,fel,le}

           

            public MainForm(){

                  InitializeComponent();

                  Paint += new PaintEventHandler(Rajzol);

                  KeyDown += new KeyEventHandler(gombnyomas); // sharkxxx

                  xhely = 50; yhely = 50;

            }


            void Rajzol(object sender, PaintEventArgs e){

                  e.Graphics.FillRectangle(Brushes.BlueViolet, xhely, yhely, 100, 100);

            }


            void gombnyomas(object sender, KeyEventArgs e){

                  if (e.KeyCode == Keys.Left) xhely -= 5;

                  else if (e.KeyCode == Keys.Right) xhely += 5;

                  else if (e.KeyCode == Keys.Up) yhely -= 5;

                  else if (e.KeyCode == Keys.Down) yhely += 5;

                  Invalidate();

            }

           

            static public void Main() {Application.Run(new MainForm());}

      }

}

2017. okt. 17. 13:47
Hasznos számodra ez a válasz?
 4/6 tabaki ***** válasza:

Újabb próba, switch-csel:


using System;

using System.Drawing;

using System.Windows.Forms;


namespace teglalap{

      public partial class MainForm : Form{

            private int xhely, yhely;

            enum irany {bal,jobb,fel,le}

           

            public MainForm(){

                  InitializeComponent();

                  Paint += new PaintEventHandler(Rajzol);

                  KeyDown += new KeyEventHandler(Gombnyomas); // sharkxxx

                  xhely = 50; yhely = 50;

            }


            void Rajzol(object sender, PaintEventArgs e){

                  e.Graphics.FillRectangle(Brushes.BlueViolet, xhely, yhely, 100, 100);

            }


            void Gombnyomas(object sender, KeyEventArgs e){

                  switch(e.KeyCode){

                  case Keys.Left: xhely -= 5; break;

                  case Keys.Right: xhely += 5; break;

                  case Keys.Up: yhely -= 5; break;

                  case Keys.Down: yhely += 5; break;

                  }

                  Invalidate();

            }

           

            static public void Main() {Application.Run(new MainForm());}

      }

}

2017. okt. 17. 14:07
Hasznos számodra ez a válasz?
 5/6 SimkoL ***** válasza:
enum irany {bal,jobb,fel,le} -> kuka :)
2017. okt. 17. 14:30
Hasznos számodra ez a válasz?
 6/6 tabaki ***** válasza:
Khöm... bocsesz, nem t'om, hogy felejtettem benne.
2017. okt. 17. 14:53
Hasznos számodra ez a válasz?

További kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!