Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

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#

 

Všetky články v sekcii
Zdrojákoviště C # .NET - Objektovo orientované programovanie
Článok pre vás napísal Verquido
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
.
Aktivity