Kezdőoldal » Számítástechnika » Programozás » C# (Visual Studio 2015) -ben...

Kerachi kérdése:

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?

Figyelt kérdés

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;

}

}

}

}



2015. szept. 26. 12:48
 1/5 anonim ***** válasza:
Kezeld a keyup eseményt is.
2015. szept. 26. 12:52
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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;

}

}

2015. szept. 26. 13:21
 3/5 anonim ***** válasza:

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.

2015. szept. 26. 14:11
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Játékokban hasonlóan oldják meg a mozgást:

[link]

2015. szept. 26. 14:59
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Ez a kód már rég máshogy néz ki nem kell kritizálni első windows formos játékom már az átlós mozgás is kész meg ilyenek...
2015. szept. 27. 18:41

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

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!