potřeboval bych pomoct s programováním dělám do školy hru mam vše skoro dopsané jen mě chybí aby panel se ktarým but hejbu šipkama na klávesnici nebo v programu(panel) tak aby nezajížděl za ty šipky ktere jsem vytvořil jsou uložene v jednom panelu vím že to je naka podmínka ale nevím furt jaka předem děkuju za pomoc
Fórum › C / C++
Panely v C aby nemohl jeden přes druhy
Takto to mam napsané nevím ani kam tu podmínku mam napsat
namespace Hra
{
public partial class Hra : Form
{
public Hra()
{
InitializeComponent();
}
private void pnlUp_MouseClick(object sender, MouseEventArgs e)
{
pnlLod.Location = new Point(pnlLod.Location.X, pnlLod.Location.Y - (int)numKrok.Value);
if (pnlLod.Location.Y - numKrok.Value > 0)
pnlLod.Location = new Point(pnlLod.Location.X, pnlLod.Location.Y - (int)numKrok.Value);
else
pnlLod.Top = 0;
}
private void pnlDown_MouseClick(object sender, MouseEventArgs e)
{
if (pnlLod.Location.Y + pnlLod.Size.Height + numKrok.Value < ClientSize.Height)
pnlLod.Location = new Point(pnlLod.Location.X, pnlLod.Location.Y + (int)numKrok.Value);
else
pnlLod.Top = ClientSize.Height - pnlLod.Height;
}
private void pnlRight_MouseClick(object sender, MouseEventArgs e)
{
if (pnlLod.Location.X + pnlLod.Size.Width + numKrok.Value < ClientSize.Width)
pnlLod.Location = new Point(pnlLod.Location.X + (int)numKrok.Value, pnlLod.Location.Y);
else
pnlLod.Left = ClientSize.Width - pnlLod.Width;
}
private void pnlLeft_MouseClick(object sender, MouseEventArgs e)
{
if (pnlLod.Location.X - numKrok.Value > 0)
pnlLod.Location = new Point(pnlLod.Location.X - (int)numKrok.Value, pnlLod.Location.Y);
else
pnlLod.Left = 0;
}
private void Hra_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
if (pnlLod.Location.Y - numKrok.Value > 0)
pnlLod.Location = new Point(pnlLod.Location.X, pnlLod.Location.Y - (int)numKrok.Value);
else
pnlLod.Top = 0;
if (pnlLod.Location.Y + pnlLod.Size.Height < ClientSize.Height)
if (e.KeyCode == Keys.Down)
if (pnlLod.Location.Y + pnlLod.Size.Height + numKrok.Value < ClientSize.Height)
pnlLod.Location = new Point(pnlLod.Location.X, pnlLod.Location.Y + (int)numKrok.Value);
else
pnlLod.Top = ClientSize.Height - pnlLod.Height;
if (e.KeyCode == Keys.Left)
if (pnlLod.Location.X - numKrok.Value > 0)
pnlLod.Location = new Point(pnlLod.Location.X - (int)numKrok.Value, pnlLod.Location.Y);
else
pnlLod.Left = 0;
if (e.KeyCode == Keys.Right)
if (pnlLod.Location.X + pnlLod.Size.Width + numKrok.Value < ClientSize.Width)
pnlLod.Location = new Point(pnlLod.Location.X + (int)numKrok.Value, pnlLod.Location.Y);
else
pnlLod.Left = ClientSize.Width - pnlLod.Width;
if (e.KeyCode == Keys.Escape)
Close();
}
private void Hra_MouseDown(object sender, MouseEventArgs e)
{
pnlLod.Location = new Point(e.X, e.Y);
if (pnlLod.Location.X + pnlLod.Size.Width > ClientSize.Width)
pnlLod.Left = ClientSize.Width - pnlLod.Width;
if (pnlLod.Location.Y + pnlLod.Size.Height > ClientSize.Height)
pnlLod.Top = ClientSize.Height - pnlLod.Height;
}
}
}
Pokud nechceš aby nezajížděla vůbec pod šipky, tak musíš znát pozici těch šipek. Potom nastavíš podmínku že horizontální poloha nesmí být menší než poloha těch šipek a do toho dáš podmínku že jestliže je vertikální pozice menší než poloha šipek, pak to tento pohyb může udělat.
if (verticalniPoloha>vertPolohaSipek)
{
if (horizontalniPoloha<horizPolohaSipek+jejichSirka)
{
//pohyb se neprovede
}
else
{
//pohyb se provede
}
}
Tohle by melo platit podle obrazku ktery jsi sem dal. A jestli pocitas za pozici levy horni rozek ;-)
jinak jakou pouzivas grafickou knihovnu?
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Překrývají se mi panely, chci aby se zobrazovali oba dva — založil lukec
Jeden program čte, druhý zapisuje — založil Porcepoque
Image RGB jeden nejde ale druhý jde — založil hráč
Nefunkční MODIFIKACE + nejdou přesouvat panely — založil Martin Kokeš
Panely, jak je dat pod sebe? — založil Herm
Moderátoři diskuze