Jednoduchá hra PingPong v C#
Zde vám ukážu základy, jak si lze jednoduše vytvořit hru v jazyce C#. Nebudete ani potřebovat nějaké rozsáhlé znalosti, žádný speciální software (snad kromě Visual Studia) a dostanete se k dobrému výsledku.
Takže můžeme začít
Hra má velice jednoduchý vzhled, v podstatě nemusíme nic složitě malovat. Jednoduše si vystačíme s komponenty, které nám již Visual Studio nabízí.
Za prvé potřebujeme aby jsme měli hru na Celou obrazovku, neměli žádně okraje a nebyl vidět kurzor myši. Toho docílíme třemi řádky kódu.
cursor.Hide(); // Schová kurzor this.FormBorderStyle = FormBorderStyle.None; // Vymaže okraje Formu this.Bounds = Screen.PrimaryScreen.Bounds; // Celá obrazovka
Když to vyzkoušíme tak vidíme, že máme všechno, čeho jsme chtěli docílit. Můžeme tedy jít dál. Jako další potřebujeme samotnou hrací plochu. Do Formu vložíme Panel z Toolboxu, a po vložení vyplníme celý Form pomocí Docku v Properties Panelu. Nyní si vytvoříme pálku a míček pomocí dvou PictureBoxů. Velikosti si dejte, jaké vám vyhovují (já budu mít míček 40x40 a pálku 100x20) a nastavte jim nějakou barvu pozadí (já zvolím míček Červený a pálku černou).
Dále budeme potřebovat Timer, kterým budeme aktualizovat hrací pole a nastavíme Interval na 1 milisekundu. Pak ho po načtení Formu zapneme.
timer1.Enabled = true; // Zapne Časovač
Pak 2x klikneme na Timer a můžeme zapisovat kód.
První si nastavíme aby se pálka pohybovala pomocí kurzoru myši. Toho docílíme že nastavíme pozici pálky na pozici kurzoru, ale chceme pohybovat jen z leva do prava a naopak, takže pouze osu X. Dále jí přesuneme více ke spodnímu okraji.
palka.Left = Cursor.Position.X - (palka.Width / 2); // Střed pálky se bude pohybovat po ose X. palka.Top = playground.Bottom - (playground.Bottom / 10); // pálka bude u spodního okraje
Nyní si vytvoříme 3 veřejné proměnné. speed_Top, speed_Left, score.
public int speed_top = 3; // proměná vertikální rychlosti public int speed_left = 3; // proměná horizontální rychlosti public int score = 0; // proměná dosaženého scóre.
Tak už bychom si mohli míček rozpohybovat. Uděláme to tak že do našeho časovače (Timeru) vložíme následující kód.
micek.Left += speed_left; // Rozpohybuje míček po ose X. micek.Top += speed_top; // Rozpohybuje míček po ose Y.
Když nyní spustíme program, uvidíme, že se míček pohybuje šikmo. To je tím, že "jede" zároveň do prava i dolů. Naší pálkou ovšem jen projede. Ale my potřebujeme, aby se to od pálky odrazilo.
Za prvé musíme míčku říct, kdy se vlastně s pálkou srazil.
if (micek.Bottom >= palka.Top && micek.Bottom <= palka.Bottom && micek.Right >= palka.Left && micek.Right <= palka.Right) // Nastavíme kdy bude kolize míčku s pálkou {}
Dále musíme určit, co má míček udělat. Chtěli bychom, aby se odrazil a odražení se je vlastně jen změna směru.
speed_top = -speed_top; // obrátí směr míčku nahoru
Teď nám lítá míček a dokonce se odráží od pálky. Ale jelikož nemáme spoluhráče tak potřebujeme aby se nám míček odrážel zpět od stěn. Takže si nastavíme kolize se stěnami.
if( micek.Left <= playground.Left) // Když míček narazí na levou stěnu změní horizontální směr speed_left = -speed_left; if ( micek.Right >= playground.Right) // Když míček narazí na pravou směru změní horizontální směr speed_left = -speed_left; if ( micek.Top <= playground.Top) // Když míček narazí na horní stěnu změní vertikální směr speed_top = -speed_top;
Už máme skoro funkční hru. Teď když vyzkoušíme, tak to funguje, ale my chceme, aby se hra zastavila, když míček spadne pod pálku - tedy když se dotkne spodní stěny hracího pole. Opět nastavíme kolizi na stěnu. A při kolizi zastavíme časovač, čímž také zastavíme hru.
if (micek.Bottom >= playground.Bottom) { timer1.Enabled = false; // Zastavíme časovač this.Close(); // Vypne hru }
Nyní když míček skončí pod pálkou, celá hra zastaví a vypne.
To jsou základy. Poté si do hry můžete přidat Skóre, Menu, Obtížnost,
různé bloky na ničení atp. Pro ukázku, jak tato hra vůbec pracuje, to ale
bohatě stačí
Přiložil sem soubor se svou verzí, jak by to mohlo vypadat. Tato hra je
tak jednoduchá, že to ani nic víc nepotřebuje
Samozřejmě kdyby jste měli nějaké dotazy tak pište a rád poradím, když budu znát odpověď.
Galerie

Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 598x (48.3 kB)
Aplikace je včetně zdrojových kódů v jazyce C#