Jednoduchá hra PingPong v C #
Tu vám ukážem základy, ako si možno jednoducho vytvoriť hru v jazyku C #. Nebudete ani potrebovať nejaké rozsiahle vedomosti, žiadny špeciálny softvér (snáď okrem Visual Studia) a dostanete sa k dobrému výsledku.
Takže môžeme začať
Hra má veľmi jednoduchý vzhľad, v podstate nemusíme nič zložito maľovať. Jednoducho si vystačíme s komponentmi, ktoré nám už Visual Studio ponúka.
Po prvé potrebujeme aby sme mali hru na Celú obrazovku, nemala žiadne okraje a nebol vidieť kurzor myši. To docielime tromi riadky kódu.
cursor.Hide(); // Schová kurzor this.FormBorderStyle = FormBorderStyle.None; // Vymaže okraje Formu this.Bounds = Screen.PrimaryScreen.Bounds; // Celá obrazovka
Keď to vyskúšame tak vidíme, že máme všetko, čo sme chceli docieliť. Môžeme teda ísť ďalej. Ako ďalšie potrebujeme samotnú hraciu plochu. Do Formu vložíme Panel z Toolbox, a po vložení vyplníme celý Form pomocou doku v Properties Paneli. Teraz si vytvoríme pálku a loptička pomocou dvoch PictureBox. Veľkosti si dajte, aké vám vyhovujú (ja budem mať loptičku 40x40 a pálku 100x20) a nastavte im nejakú farbu pozadia (ja zvolím loptička Červený a pálku čiernu).
Ďalej budeme potrebovať Timer, ktorým budeme aktualizovať hracie pole a nastavíme Interval na 1 milisekundu. Potom ho po načítaní Formu zapneme.
timer1.Enabled = true; // Zapne Časovač
Potom 2x klikneme na Timer a môžeme zapisovať kód.
Prvý si nastavíme aby sa pálka pohybovala pomocou kurzora myši. To docielime že nastavíme pozíciu rakety na pozíciu kurzora, ale chceme pohybovať len z ľava do prava a naopak, takže iba osu X. Ďalej jej presunieme viac k spodnému okraju.
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
Teraz si vytvoríme 3 verejné premenné. 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ž by sme si mohli loptičku rozpohybovať. Urobíme to tak že do nášho časovača (Timeru) vložíme nasledujúci kód.
micek.Left += speed_left; // Rozpohybuje míček po ose X. micek.Top += speed_top; // Rozpohybuje míček po ose Y.
Keď teraz spustíme program, uvidíme, že sa loptička pohybuje šikmo. To je tým, že "ide" zároveň do prava i nadol. Našou pálkou však len prejde. Ale my potrebujeme, aby sa to od pálky odrazilo.
Po prvé musíme loptičky povedať, kedy sa vlastne s pálkou zrazil.
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 {}
Ďalej musíme určiť, čo má loptička urobiť. Chceli by sme, aby sa odrazil a odrazenie sa je vlastne len zmena smeru.
speed_top = -speed_top; // obrátí směr míčku nahoru
Teraz nám lieta loptičku a dokonca sa odráža od pálky. Ale keďže nemáme spoluhráčov tak potrebujeme aby sa nám loptička odrážal späť od stien. Takže si nastavíme kolízie so stenami.
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. Teraz keď vyskúšame, tak to funguje, ale my chceme, aby sa hra zastavila, keď loptička spadne pod pálku - teda keď sa dotkne spodnej steny hracieho poľa. Opäť nastavíme kolízii na stenu. A pri kolízii zastavíme časovač, čím tiež zastavíme hru.
if (micek.Bottom >= playground.Bottom) { timer1.Enabled = false; // Zastavíme časovač this.Close(); // Vypne hru }
Teraz keď loptička skončí pod pálkou, celá hra zastaví a vypne.
To sú základy. Potom si do hry môžete pridať Skóre, Menu, Obtiažnosť, rôzne bloky na ničenie atp. Pre ukážku, ako táto hra vôbec pracuje, to ale bohato stačí
Priložil sem súbor so svojou verziou, ako by to mohlo vyzerať. Táto hra je tak jednoduchá, že to ani nič viac nepotrebuje
Samozrejme keby ste mali nejaké otázky tak píšte a rád poradím, keď budem poznať odpoveď.
Galéria
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 598x (48.3 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#