Hogyan kell ezt a négyzetet mozgatni SharpDevelop-ban?
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;
}
}
}
}
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
}
}
}
#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.
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());}
}
}
Ú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());}
}
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!