Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem c# Pong program

Ahoj měl bych dotaz, zkoušel jsem si naprogramovat hru PONG na internetu jsem našel jakýsi návod jak jí naprogramovat tak, že vy ovládáte sebe pomocí myše ale hrajete proti "AI" měl bych otázku a to takovou, jak by se to mělo naprogramovat aby místo AI hrál druhý hráč na klávesách W - nahoru, S - dolu.
A ještě aby nahoře byla tabulka skore, která by počítala do 7 a poté by napsala Vyhrál hráč červený/modrý. Níže přikládám program, který zatím mám. Opravdu by se mi to hodilo a byl bych každýmu moc vděčný za pomoc.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Pong
{
    public partial class Form1 : Form
    {
        const int SCREEN_WIDTH = 800;
        const int SCREEN_HEIGHT = 600;

        int ballSpeedX = 3;
        int ballSpeedY = 3;
        int gameTimeInterval = 1;

        PictureBox picBoxPlayer, picBoxPlayer2, picBoxBall;

        Timer gameTime;

        Size sizePlayer = new Size(25, 100);
        Size sizePlayer2 = new Size(25, 100);
        Size sizeBall = new Size(20, 20);

        public Form1()
        {
            picBoxPlayer = new PictureBox();//
            picBoxPlayer2 = new PictureBox();//Initializes the PictureBoxes
            picBoxBall = new PictureBox();//

            gameTime = new Timer();//Initializes the Timer

            gameTime.Enabled = true;//Enables the Timer
            gameTime.Interval = gameTimeInterval;//Set the timer's interval

            gameTime.Tick += new EventHandler(gameTime_Tick);//Creates the Timer's Tick event

            InitializeComponent();
            this.Width = SCREEN_WIDTH;
            this.Height = SCREEN_HEIGHT;

            this.StartPosition = FormStartPosition.CenterScreen;//opens the form in center of the screen

            picBoxPlayer.Size = sizePlayer;//sets the size of the picturebox
            picBoxPlayer.Location = new Point(picBoxPlayer.Width / 2, ClientSize.Height / 2 - picBoxPlayer.Height / 2);//sets it's location (centered)
            picBoxPlayer.BackColor = Color.Blue;//fills the picturebox with a color
            this.Controls.Add(picBoxPlayer);//adds the picture box to the form

            picBoxPlayer2.Size = sizePlayer2;
            picBoxPlayer2.Location = new Point(picBoxPlayer2.Width / 2, ClientSize.Height / 2 - picBoxPlayer2.Height / 2);
            picBoxPlayer2.BackColor = Color.Red;
            this.Controls.Add(picBoxPlayer2);

            picBoxBall.Size = sizeBall;
            picBoxBall.Location = new Point(ClientSize.Width / 2 - picBoxBall.Width / 2, ClientSize.Height / 2 - picBoxBall.Height / 2);
            picBoxBall.BackColor = Color.Green;
            this.Controls.Add(picBoxBall);
        }

        private void gameTime_Tick(object sender, EventArgs e)
        {
            picBoxBall.Location = new Point(picBoxBall.Location.X + ballSpeedX, picBoxBall.Location.Y + ballSpeedY);
            gameAreaCollisions();//Checks for collisions with the form's border
            padlleCollision();//Checks for collisions with the padlles
            playerMovement();//Updates the player's position
            player2Movement();//Updates the ai's position
        }
        private void gameAreaCollisions()
        {
            if (picBoxBall.Location.Y > ClientSize.Height - picBoxBall.Height || picBoxBall.Location.Y < 0)
            {
                ballSpeedY = -ballSpeedY;
            }
            else if (picBoxBall.Location.X > ClientSize.Width)
            {
                resetBall();
            }
            else if (picBoxBall.Location.X < 0)
            {
                resetBall();
            }
        }
        private void resetBall()
        {
            picBoxBall.Location = new Point(ClientSize.Width / 2 - picBoxBall.Width / 2, ClientSize.Height / 2 - picBoxBall.Height / 2);
        }
        private void playerMovement()
        {
            if (this.PointToClient(MousePosition).Y >= picBoxPlayer.Height / 2 && this.PointToClient(MousePosition).Y <= ClientSize.Height - picBoxPlayer.Height / 2)
            {
                int playerX = picBoxPlayer.Width / 2;
                int playerY = this.PointToClient(MousePosition).Y - picBoxPlayer.Height / 2;
                //on click W player.Y++;
                //on click S player.Y--;

                picBoxPlayer.Location = new Point(playerX, playerY);
            }
        }
        private void player2Movement()
        {
            if (ballSpeedX > 0)
            {
                picBoxPlayer2.Location = new Point(ClientSize.Width - (picBoxPlayer2.Width + picBoxPlayer2.Width / 2), picBoxBall.Location.Y - picBoxPlayer2.Height / 2);
            }
        }
        private void padlleCollision()
        {
            if (picBoxBall.Bounds.IntersectsWith(picBoxPlayer2.Bo unds))
            {
                ballSpeedX = -ballSpeedX;
            }

            if (picBoxBall.Bounds.IntersectsWith(picBoxPlayer.Bou nds))
            {
                ballSpeedX = -ballSpeedX;
            }
        }
    }
}
Předmět Autor Datum
tak pohyb hráčů evidentně zajišťují player2movement a playerMovement. Player2Movement je počítaný ja…
touchwood 07.04.2014 18:14
touchwood
ehm ono všude kde je player2 bylo původně AI, já jsem to pouze změnil jako první krok a dále jsem ne…
dyraen 07.04.2014 18:20
dyraen
Příklad konkrétně čeho?
Wikan 07.04.2014 18:44
Wikan
jak to napsat jsem ztracený
dyraen 07.04.2014 18:45
dyraen
Já bych ti klidně pomohl s konkrétními problémy, ale celé to za tebe fakt dělat nechci.
Wikan 07.04.2014 18:48
Wikan
Jenže tu je problém, že já nemám vůbec představu o tom jak by to mělo vypadat a hledal jsem už i na…
dyraen 07.04.2014 18:57
dyraen
Prostě jenom zachytáváš stisk klávesy a podle toho s tím hýbeš nahoru nebo dolů.
Wikan 07.04.2014 19:00
Wikan
hledal jsem už i na angických forech Možno by si mal hľadať tu: www.devbook.cz
pme 07.04.2014 19:02
pme
ale tu jsem to nenašel v c #
dyraen 07.04.2014 19:07
dyraen
panebože! Ty lepíš kód, který nechápeš? Takto se přece neprogramuje!
touchwood 07.04.2014 19:13
touchwood
je to program do školy
dyraen 07.04.2014 19:17
dyraen
Tak o to víc by ses měl snažit sám. Zatím jsi jenom okopíroval kus kódu z webu.
Wikan 07.04.2014 19:18
Wikan
ano jenže mě to programování nikdy moc nešlo a jde mi celkem o hodně a času zrovna také není mnoho :…
dyraen 07.04.2014 19:22
dyraen
A jak dlouho máš ten úkol zadaný? Už to nějaký čas bude, že?
Wikan 07.04.2014 19:26
Wikan
máme to už týden ale zatím jsme to dělali jen ve škole
dyraen 07.04.2014 19:27
dyraen
Co jste zatím dělali ve škole? Vždyť tenhle kód je kompletně stažený z webu.
Wikan 07.04.2014 19:28
Wikan
Je to zadaná práce pro jednotlivce, každý si na tom dělá sám Za tu 1 hodinu ve škole jsem sám zvládl…
dyraen 07.04.2014 19:31
dyraen
Udělat? Stáhnout z webu. A hodinu nebo týden? Hele přiznej si, že jsi na to do teď zvysoka kašlal a…
Wikan 07.04.2014 19:36
Wikan
mám ještě dva týdny a programování máme jen jednou týdně tudíž 1hodinu. Ale chci to mít už dopředu a…
dyraen 07.04.2014 19:37
dyraen
Je to práce asi tak na hodinu. Ale nepočítej s tím, že to za tebe někdo bude dělat.
Wikan 07.04.2014 19:40
Wikan
však si napiš postup (algoritmus) na papír, česky bez technických fines. Zjistíš, že to je úplně tri…
touchwood 07.04.2014 19:12
touchwood
Tak jsem nakonec ten program začal od znova tak jak jsme to dělali ve škole a přidal jsem jednotlivé…
dyraen 09.04.2014 19:15
dyraen
Je naprostý nesmysl, aby jednotliví hráči byly dvě různé třídy. Pak je tam spousta menších chyb. Nap…
Wikan 09.04.2014 19:40
Wikan
Dobře děkuji prošel jsem to a jedna souřadnice tam byla špatně ted už to funguje. Už mi zbývá pouze…
dyraen 09.04.2014 19:56
dyraen
opravdu nikdo neví jak ošetřit to aby palky nevyjižděla z panelu a poté počítání počtu kolik bylo od…
dyraen 10.04.2014 17:14
dyraen
zkus se zamyslet, je to obojí víceméně o jednom řádku. pálky musíš kontrolovat před překreslením za…
touchwood 10.04.2014 18:26
touchwood
Já mám jakousi představu o tom jak by to mělo fungovat ale prostě nevím jak dát ten kod dohromady, f…
dyraen 10.04.2014 20:32
dyraen
Tak sem napiš, co jsi zkoušel.
Wikan 10.04.2014 20:35
Wikan
Ale ví, jen ses na to neptal. Psal jsi jenom, že ti to zbývá udělat.
Wikan 10.04.2014 18:42
Wikan
Tak dnes mám poslední den a vůbec netuším jak ověřit to vyjíždění a počítání těch úderu od pálky to…
dyraen 13.04.2014 10:52
dyraen
Prostě si vypočítáš, jestli by pálka byla mimo hrací pole, a pokud ne, tak s ní nepohneš. Pokud jde…
Wikan 13.04.2014 11:03
Wikan
asi jsem opravdu hloupý ale nedokážu si to ani představit, koukám se i do toho druhého programu ale…
dyraen 13.04.2014 11:17
dyraen
Jak si to nedokážeš představit? Znáš pozici pálky? Znáš. Znáš velikost pálky? Znáš. Znáš výšku hrací…
Wikan 13.04.2014 11:22
Wikan
no to je jedno já se zeptám ve škole, takhle bych na to asi opravdu nepřišel
dyraen 13.04.2014 11:36
dyraen
Tak trochu zapřemýšlej, na to stačí i matika z prvního stupně základní školy.
Wikan 13.04.2014 12:28
Wikan
Tak to počítání jsem už zvládl už se to počítá, jen když mám tu pálku blbě napozicovanou tak se míče…
dyraen 13.04.2014 13:06
dyraen
a napočítá to třeba 30 ale to se stane jednou za čas takže to nevadí doufám, že se nehodláš živit p…
touchwood 13.04.2014 13:48
touchwood
to rozhodně ne ale to myslím, že už si poznal není to žádný oficiální tak nevím v čem je problém od…
dyraen 13.04.2014 13:51
dyraen
Ked micek prejede palku tak mas blbo niektory test if ktory testuje poziciu micu oproti pozicii palk…
MM.. 13.04.2014 13:56
MM..
To "projíždění" ošetříš tak, že při změně směru míčku při odrazu, si opravdu ověříš, že jde míč od p…
Wikan 13.04.2014 14:44
Wikan
přišel jsem na to jak to udělat stačilo přidat: micekSpeedY = -micekSpeedY;
dyraen 13.04.2014 14:46
dyraen
micekSpeedY = -micekSpeedY; to je nezmysel to ti teraz odraza blbym smerom.
MM.. 13.04.2014 14:49
MM..
také na to ted koukám .. sakra
dyraen 13.04.2014 14:51
dyraen
Wikan ti pisal ze si mas kontrolovat pri tej kolizii ci je skutocne speedX kladna (>0) na levaj stra…
MM.. 13.04.2014 14:52
MM..
Na tu kolizi pálek to mám takto if (picBoxMicek.Bounds.IntersectsWith(palka2.Bounds)) { micekSpeed…
dyraen 13.04.2014 14:56
dyraen
No tak si ještě ověř, že se ten míček pohybuje správným směrem a je to.
Wikan 13.04.2014 14:59
Wikan
ok děkuji vám všem moc za pomoc :) to vyjíždění z toho panelu asi sám nezvládnu, jelikož tomu vůbec…
dyraen 13.04.2014 15:03
dyraen
Co je na tom nezvladnutelne? if (picBoxMicek.Bounds.IntersectsWith(palka2.Bounds)) { if(micekSpeedX…
MM.. 13.04.2014 15:06
MM..
Tak osobně bych to dal ještě před "IntersectsWith".
Wikan 13.04.2014 15:08
Wikan
Tak to je fuk, moze dat aj obe veci do jedneho if :) if (micekSpeedX < 0 && picBoxMicek.Bounds.Inte…
MM.. 13.04.2014 15:09
MM..
Takhle jsem to myslel. A díky zkrácenému vyhodnocování to fuk není.
Wikan 13.04.2014 15:12
Wikan
Do skoly to fuk je, tam sa nehra na optimalnost. Samozrejme ked clovek mysli optimalne tak da najprv…
MM.. 13.04.2014 15:18
MM..
Ach jo. Výška herního pole je 100 px, výška pálky je 20 px. Pálka je 50px od horní hrany. O kolik px…
Wikan 13.04.2014 15:07
Wikan
no o 40, pokud to teda beru tak že 50px je uprostřed a 10px je směrem dolu a 10px směrem nahoru
dyraen 13.04.2014 15:17
dyraen
Uff, zkus si to nakreslit. A ptal jsem se na dvě otázky.
Wikan 13.04.2014 15:20
Wikan
no když je přímo uprostřed (50px) a má 20px tak 40px směrem dolu a 40px nahoru
dyraen 13.04.2014 15:23
dyraen
Pokud auto stojí 1 m od zdi, myslí se tím snad vzdálenost zdi a poloviny auta?
Wikan 13.04.2014 15:24
Wikan
no nechme to být to je jedno
dyraen 13.04.2014 15:26
dyraen
OK, ty potřebuješ poradit, ne já.
Wikan 13.04.2014 15:27
Wikan
problém přetrvává opravdu nikdo neví ?
dyraen 24.05.2014 14:05
dyraen
Vždyť už jsi odpověď dostal. Co na ní nechápeš?
Wikan 24.05.2014 14:05
Wikan
ano dostal ale stále nevím jak to napsat do toho programu, jaký příkaz použít
dyraen 24.05.2014 14:15
dyraen
Uz sme ti napisali co je problem. Ked si nevies ani svoj vytvor zdebugovat, tak sa prestat hrat na p…
MM.. 24.05.2014 14:27
MM..
na nic si nehraju, už jsem psal, že to mám do školy, programování máme poslední rok tak chci projít…
dyraen 24.05.2014 14:33
dyraen
Tak zacni dole novu vetvu daj tam kompletny opraveny zdrojak tak jak to mas teraz, a napis k tomu ze…
MM.. 24.05.2014 14:40
MM..
ted ti nerozumím
dyraen 24.05.2014 14:43
dyraen
Nemame tvoje aktualne zdrojaky, nevieme co tam mas teraz zle.
MM.. 24.05.2014 14:53
MM..
tady je celý ten program pong-rar
dyraen 24.05.2014 14:56
dyraen
A jak sa prejavuje zavada? Mne to exe z Debug funguje spravne. Akurat ti tam uchadzaju palky mimo he…
MM.. 24.05.2014 15:14
MM..
no přesně tak to je jediný problém co mi tam zbývá
dyraen 24.05.2014 15:16
dyraen
Tak si urob kontrolu pohybu palky, nechapem preco to nenaprogramujes :)
MM.. 24.05.2014 15:17
MM..
public void nahoru() { this.Top += -20; } public void dolu() { this.Top += 20; } Ako prve len pod…
MM.. 24.05.2014 15:22
MM..
T.j. po znizovani to porovnavas s nulou a po zvysovani s panel1.Height public void nahoru() { this.…
MM.. 24.05.2014 15:28
MM..
... a predpokladam ze ti to bude hlasit compiler error ptz z classu hrac nevidis panel1, tak si do c…
MM.. 24.05.2014 15:37
MM..
no zkusil jsem něco napsat ale nefunguje mi to zatím to vypadá takto private void vyjizdeni_palek()…
dyraen 24.05.2014 15:41
dyraen
To co si tu vypotil je uplny nezmysel. Evidentne nemas ani paru co znamenaju tie pismena v tom progr…
MM.. 24.05.2014 15:43
MM..
imo takhle to také funguje public void dolu() { this.Top += 20; if (this.Top + this.Height > 380) t…
dyraen 24.05.2014 15:50
dyraen
Preco si do toho classu nepridas jednu posratu premennu? Je to jeden riadok, a druhy riadok na jej n…
MM.. 24.05.2014 16:00
MM..
moc děkuju všem za pomoc :)
dyraen 24.05.2014 16:02
dyraen
pomoc by to bola keby si to fakt pochopil a naucil sa z toho nieco. V prvom rade si to v hlave preds… poslední
MM.. 24.05.2014 16:26
MM..
Ne, ty jsi psal, že je ti to jedno a pak už ses neozval. Dokážeš mi teda správně odpovědět na tyhle…
Wikan 24.05.2014 14:18
Wikan
No vidím, že se neobtěžuješ odpovědět, takže o řešení nejspíš nestojíš. Tak sbohem.
Wikan 24.05.2014 14:58
Wikan
promin vůbec jsem si nevšiml, že je tu druhá strana... jelikož jsem asi furt odpovídal a psal na té…
dyraen 24.05.2014 15:58
dyraen

tak pohyb hráčů evidentně zajišťují player2movement a playerMovement. Player2Movement je počítaný jako AI, takže tam musíš změnit kód, aby nabíral ovládání z klávesnice.

Pokud řešíš počítání, tak to musíš implementovat do míst, kde se řeší "vypadení" z hřiště a následuje procedura "resetBall". Tam budeš muset připočítávat skóre nějakým dvěma proměnným, které můžeš vykreslovat na hřišti. Plus přidat kontrolu na dosažení 7 bodů.

však si napiš postup (algoritmus) na papír, česky bez technických fines. Zjistíš, že to je úplně triviální.

načteš klávesu -> zjistíš jaká to je -> odpočítáš pozici úplně stejným stylem jako u player1 (Y nahoru nebo dolů).

Počty jsou přece taky easy (dokonce bych řekl, že úplně megatriviál): na začátku je skóre P1=0, P2=0. Na místě, kde se provádí test vypadení, uděláš P1++, resp. P2++ (podle toho, jestli míček vypadl vlevo (x<0), nebo vpravo. Následně zkontroluješ, zda je P1 nebo P2 větší než 6 a podle toho případně vypíšeš výsledek hry.

Tak jsem nakonec ten program začal od znova tak jak jsme to dělali ve škole a přidal jsem jednotlivé hráče do tříd. Pouze míček mi nešel nějak udělat a pohyb toho míčku a následnou kolizi s palkama a hrací plochou se mi nepodařilo vymyslet takže tu část programu jsem zkopíroval a upravil hodnoty do mého programu. Jenže je tady problém, že se míček pohybuje stále jedním směrem a mám takové tušení, že ani nereaguje na pálky. Uploadl jsem celý soubor na uloz.to tak pokud by někdo měl chvilku a chut byl bych mu moc vděčný kdyby mi řekl co tam je špatně.
Podařilo se mi nastavit to ovládání obou pálek na klávesnici.

Zde je odkaz:
pong-rar

Dobře děkuji prošel jsem to a jedna souřadnice tam byla špatně ted už to funguje. Už mi zbývá pouze udělat to, aby ty pálky nevyjížděli z plochy. Oni se nezastaví dole na tom panelu ale prostě jedou dál a ještě jsem zjistil, že to nemá počítat "skore" ale počet kolikrát ty pálky ten míček odrazí např palka1 odrazí míček nahoře se objeví jedna letí to na palku 2 tak dkyž odrazí přičte se 2 a tak dále a v tom menu by měla být další možnost "rekord" která ukáže jaký byl nejvyšší počet pinknutí.

zkus se zamyslet, je to obojí víceméně o jednom řádku.

pálky musíš kontrolovat před překreslením zadaného pohybu, zda už nedosáhly určité Y-nové hranice (nahoře i dole, nezapomeň odečíst délku pálky)

počítání odpalů je taky jednoduché, stačí inkrementovat počitadla pokaždé, když se změní X-ový vektor pohybu (tj. směr pohybu vlevo se změní na pohyb vpravo a obráceně pro druhou pálku)

asi jsem opravdu hloupý ale nedokážu si to ani představit, koukám se i do toho druhého programu ale marně. Není to náhodou tohle ?
if (this.PointToClient(MousePosition).Y >= picBoxPlayer.Height / 2 && this.PointToClient(MousePosition).Y <= ClientSize.Height - picBoxPlayer.Height / 2)
{
int playerX = picBoxPlayer.Width / 2;
int playerY = this.PointToClient(MousePosition).Y - picBoxPlayer.Height / 2;

picBoxPlayer.Location = new Point(playerX, playerY);

Ked micek prejede palku tak mas blbo niektory test if ktory testuje poziciu micu oproti pozicii palky. Mne sa nechce ten zdrojak studovat, to by mala byt tvoja robota si to skontrolovat ten test.
Program musis chapat, to sa neda len tak lepit a sem tam cosi menit co ta napadne.

Wikan ti pisal ze si mas kontrolovat pri tej kolizii ci je skutocne speedX kladna (>0) na levaj strane alebo zaporna (<0) na pravej strane, ak neni tak nerobis nic (nepricitavas pocet uderov ani neobracias smer speedX) ptz to by znamenalo ze si nahodou trafil situaciu ked si koliziu zistil 2x pri stejnom udere (uz si raz to speedX ototcil)

Na tu kolizi pálek to mám takto

 if (picBoxMicek.Bounds.IntersectsWith(palka2.Bounds))   
            {
                micekSpeedX = -micekSpeedX;
                skore += 1;
                label1.Text = skore.ToString();
            }
            {
                if (picBoxMicek.Bounds.IntersectsWith(palka1.Bounds))   
                {
                    micekSpeedX = -micekSpeedX;
                    skore += 1;
                    label1.Text = skore.ToString();
                }

Dávej to do tagu "code", to se jinak nedá číst! (touchwood)

Co je na tom nezvladnutelne?
if (picBoxMicek.Bounds.IntersectsWith(palka2.Bounds))
{
if(micekSpeedX < 0)
{
micekSpeedX = -micekSpeedX;
skore += 1;
label1.Text = skore.ToString();
}
}
{
if (picBoxMicek.Bounds.IntersectsWith(palka1.Bounds))
{
if(micekSpeedX > 0)
{

micekSpeedX = -micekSpeedX;
skore += 1;
label1.Text = skore.ToString();
}
}

ked to bude zle (naopak) tak prehodis <0 za >0 a >0 za <0

Do skoly to fuk je, tam sa nehra na optimalnost. Samozrejme ked clovek mysli optimalne tak da najprv jednoduchsi test, ale ten test boundaries bude tiez len par jednoduchych if ktore CPU zvladne za nanosekundy, a neni to v slucke ktora by zlozitost algoritmu zvysovala, je to zlozitost O(n) t.j. nepodstatne zaoberat sa par if. Ale ok ked chces extremne optimalizovat tak ma vyznam pozerat sa na poradie testov.

A jak sa prejavuje zavada? Mne to exe z Debug funguje spravne. Akurat ti tam uchadzaju palky mimo herne pole (nemas kontrolu dosiahnutia okraja plochy pri pohybe palky)

P.S. a reagovanie na char event je dementne ptz sa musi pri stlaceni klavesy cakat na autorepeeat klavesnice. Normalne sa to riesi uplne inac (drzim si flag ci je klavesa stlacena alebo ne, a podla toho pohybujem palkou pri kazdom refreshi alebo v pravidelnych intervaloch). Ale do skoly toto riesit nemusis, profesorovi to je IMHO jedno.

        public void nahoru()
        {
            this.Top += -20;
        }

        public void dolu()
        {
            this.Top += 20;
        }

Ako prve len podotknem ze this.Top += -20; je dementne, zdravy clovek napise this.Top -= 20;
A to co chces je pridat tam po tom riadku "this.Top += neco;" test if ci je to Top vacsie alebo mesnie ako prislusny okraj plochy (na spodku testujes plus velkost palice) a ak ano nastavit ten this.Top na maximum resp. minimum co dovoluje velkost plochy.

T.j. po znizovani to porovnavas s nulou a po zvysovani s panel1.Height

public void nahoru()
        {
            this.Top -= 20;
            if(this.Top < 0)
                this.Top = 0;
        }

        public void dolu()
        {
            this.Top += 20;
            if(this.Top+this.Height > panel1.Height)
                this.Top = panel1.Height-this.Height;
        }

Mas to v programe 2x, co je tiez dementne (ptz zmysel triedy je mat class v programe len raz, a pouzit 2x steny class pre rozne objekty), ale to uz fakt nemam chut ti vysvetlovat. Co vas v tej skole vobec ucia?

no zkusil jsem něco napsat ale nefunguje mi to zatím to vypadá takto

private void vyjizdeni_palek()
{
if (this.Top > panel1.Height)
{
this.Top += 380;
}

jen nevím kam to přesně napsat já bych to napsal do té třídy ale ta třída nezná panel a když to napíšu do form1 tak jak to bude jaký Top to má měnit

pomoc by to bola keby si to fakt pochopil a naucil sa z toho nieco. V prvom rade si to v hlave predstavit tie objekty ako nejake bubliny v ktorych su ulozene nejake premenne definovane v classe, funkcie classu pracuju s tymi premennymi objektu. Mozes si tam pridat nejaku dalsiu premennu do classu hrac1 a hrac2, moze sa to robit vsetko aj uplne inac napr. ze kolizie palky o plochu sa mozu kontrolovat aj v tom classe panel1 (tam predsa mas hrac1 a hrac2 pristupne, apod.). "this" vo vnutri classu je samotny objekt, zvonku je to v tvojom pripade "hrac1" alebo "hrac2".

Ne, ty jsi psal, že je ti to jedno a pak už ses neozval.
Dokážeš mi teda správně odpovědět na tyhle otázky?

Výška herního pole je 100 px, výška pálky je 20 px. Pálka je 50px od horní hrany.
O kolik px se může pálka posunout nahoru? A o kolik px dolů?

Zpět do poradny Odpovědět na původní otázku Nahoru