C# (Visual Studio 2015) -ben szeretnék egy png-t (player-t) mozgatni. Eddig minden jól működik, de én annyit szeretnék, hogy ha nem nyomom a w, s, a, d-t akkor álljon meg a karakter. Ezt hogyan tudnám megoldani?
Eddig jutottam:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Revenge_Everything
{
public partial class Form1 : Form
{
enum Position
{
Up,Down,Left,Right,nothing
}
private int X;
private int Y;
private Position playerPosition;
public Form1()
{
InitializeComponent();
X = 100;
Y = 100;
playerPosition = Position.nothing;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
//e.Graphics.FillRectangle(Brushes.BlueViolet, X,Y,50,50);
e.Graphics.DrawImage(new Bitmap("aaaa.png"), X, Y, 64, 64);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (playerPosition == Position.Up)
{
Y -= 8;
}
else if (playerPosition == Position.Down)
{
Y += 8;
}
else if (playerPosition == Position.Left)
{
X -= 8;
}
else if (playerPosition == Position.Right)
{
X += 8;
}
else if (playerPosition == Position.nothing)
{ Y +=0;X += 0; }
Invalidate();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.W)
{
playerPosition = Position.Up;
}
else if (e.KeyCode == Keys.S)
{
playerPosition = Position.Down;
}
else if (e.KeyCode == Keys.A)
{
playerPosition = Position.Left;
}
else if (e.KeyCode == Keys.D)
{
playerPosition = Position.Right;
}
else
{
playerPosition = Position.nothing;
}
}
}
}
Kész kösz!
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.W || e.KeyCode == Keys.S || e.KeyCode == Keys.A || e.KeyCode == Keys.D)
{
playerPosition = Position.nothing;
}
}
Borzasztó ez a kód amúgy.
A pozíció, az nem pozíció, hanem irány.
Mi értelme szerinted ennek? "{ Y +=0;X += 0; }"
Továbbá egy rakat "magic number", az objektumorientáltság teljes hiányáról nem is beszélve.
Játékokban hasonlóan oldják meg a mozgást:
Kapcsolódó 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!