Kezdőoldal » Számítástechnika » Programozás » Hogy oldanátok meg ezt a...

Hogy oldanátok meg ezt a problémát? (C#)

Figyelt kérdés

Egy formon leraktam, egy pictureboxot, ami a nyilak lenyomására mozog. De én azt szeretném, hogy a nyíl megnyomásával folyamatosan menjen arra az irányba míg másik irányt nem adok neki a nyilakkal. A kód ez lenne:


private void Form1_KeyDown(object sender, KeyEventArgs e)

{


if (e.KeyCode == Keys.Up)

{

if (pont.Y == 0)

{

pont.Y = 330;

}


pont.Y = pont.Y - 1;

pictureBox1.Location = pont;

}

if (e.KeyCode == Keys.Down)

{

if (pont.Y == 330)

{

pont.Y = 0;

}

pont.Y = pont.Y + 1;

pictureBox1.Location = pont;


}

if (e.KeyCode == Keys.Left)

{

if (pont.X == 0)

{

pont.X = 330;

}

pont.X = pont.X - 1;

pictureBox1.Location = pont;

}

if (e.KeyCode == Keys.Right)

{

if (pont.X == 330)

{

pont.X = 0;

}

pont.X = pont.X + 1;

pictureBox1.Location = pont;

}

}



Én egy while-ra gondoltam, hogy azzal lehetne megoldani a "fél" automata mozgást. Ilyen feltételre gondoltam:


if (e.KeyCode == Keys.Up)

{

while(e.KeyCode!=Keys.Down||e.KeyCode!=Keys.Left||e.KeyCode!=Keys.Right||)

{

if (pont.Y == 0)

{

pont.Y = 330;

}


pont.Y = pont.Y - 1;

pictureBox1.Location = pont;

}

}

De amint ezt berakom valamelyik iránygomb kódrészéhez, abba az irányba nem mozdul.(ha mindhez berakom akkor sehova nem mozog) Most csinálok először ilyen irányítást, nem tudom mennyire felel meg ez a kód. De amíg folyamatosan nyomva tartjuk a nyilakat úgy rendesen mozog. Szóval már csak ezt a "fél" automata mozgást kéne megoldani, hogy amelyik irányba megnyomtuk a gombot arra menjen anélkül, hogy nyomva tartanánk. Köszönöm előre a segítséget.


2011. júl. 15. 21:43
 1/8 anonim ***** válasza:

A példaprogram az alábbi helyről tölthető le: *****


Én ugyan egy kicsit egyszerűsítettem, két gomb, egy balra egy jobbra de a lényeg átjön szerintem. A kulcs hogy egy timer-ből kell bizonyos időközönként ellenőrizni, a 'while' itt szükségtelen. (forras.txt elolvasandó ha nincs Delphi telepítve!)



* Automatikusan eltávolított tartalom.
2011. júl. 16. 01:08
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Ezt a timer t c# ban h kell használni? Iet még sose használtam, elég kezdő vagyok, már maga az irányítás megoldása, is az első ilyen alakalom volt amikor szügség volt rá. Szóval akkor egy kicsit bővebben nem tudnád c#-ban elmagyarázni, hogy h is kéne ezt? De köszönöm a segítséget amúgy. :)
2011. júl. 16. 09:03
 3/8 anonim ***** válasza:
C#-ban is ugyanígy kell a timert használni. Na egy kis magyarázat: Az alapirány 0 ilyenkor álló helyzetben van. Ha bal gombot nyomsz -1 lesz ha jobbat akkor 1. A timer 1 milliszekundumonként ellenörzi hogy mit kell lépnie, ha -1 akkor a timer1.left-jéből kivon 10-et, 1-nél meg hozzáad 10-et.
2011. júl. 16. 17:29
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
És ez addig fog menni amíg másik gombot nem nyomok? vagy h van? és pontosan h nézne ki ennek a szerkezete c#-ban? vagy az teljesen ugyan az mint ahogy a link mutatta?
2011. júl. 16. 18:47
 5/8 anonim ***** válasza:
c#-ban csak a szintaktika más nagyjából ugyanúgy menne, addig megy ameddig rá nem kapcsolsz más gombra vagy a stop gombra.m
2011. júl. 16. 23:54
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
én mégmindig nem biztos, hogy értem. akkor ez a timer dolog azt csinálja hogy a beállított miliszekundum letelte után mindig ellenőrzi h a felhasználó nyomott e gombot, ha nem akkor megy tovább a dolog?egyfajta időzített ha utasítás???
2011. júl. 17. 08:35
 7/8 A kérdező kommentje:
és itt most h nézne ki a szintaktika?
2011. júl. 17. 08:43
 8/8 anonim válasza:
Úristen mi van itt! Véletlenül idekeveredtem de már megyek is sziasztok! :DDD
2011. júl. 17. 11:14
Hasznos számodra ez a válasz?

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!