NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 15:24

Dobrý den. Píši složitější kód a chtěl bych si jej rozdělit na několik kódů. Nevíte jak na to? Chci se z Form1 odvolávat na public void xxx z jiného souboru. Například public void Control (), public void Camera atd.) Děkuji.

 
Odpovědět
15.9.2013 15:24
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na
Theodor Johnson:15.9.2013 15:25

Nechápu jak můžeš psát něco složitějšího a ptát se na základy oop

 
Nahoru Odpovědět
15.9.2013 15:25
Avatar

Člen
Avatar
Odpovídá na
:15.9.2013 15:33

Zkus se podívat na zdejší tutoriály

 
Nahoru Odpovědět
15.9.2013 15:33
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 15:37

Můžeš mi aspoň napovědět, kde mám hledat?

 
Nahoru Odpovědět
15.9.2013 15:37
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:15.9.2013 15:40

V tutoriálech.

Nahoru Odpovědět
15.9.2013 15:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 16:36

Asi jsme se špatně pochopili. Nenasel sem to nikde. Jde mi o tom udělat hlavni program, který si bude volat podprogramy. Můžete mi někdo stručně popsat jak na to?

 
Nahoru Odpovědět
15.9.2013 16:36
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na
Theodor Johnson:15.9.2013 16:38

Kdyby jsi uměl ty základy oop a nehledal to v nich tak to pochopíš, musíš si vytvořit třídy, zinicializovat je a volat na nich ty metody co chceš, třída může popřpadě dědit z jiné, nebo z formu.

 
Nahoru Odpovědět
15.9.2013 16:38
Avatar

Člen
Avatar
Odpovídá na
:15.9.2013 16:45

podprogramem myslíš funkci(/metodu)? - tu zavoláš takto:

xxx();

Btw.: jenom nepiš ze ti to Visual Studio podtrhlo - metoda musí být nekde definovaná

Editováno 15.9.2013 16:46
 
Nahoru Odpovědět
15.9.2013 16:45
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 20:32

Ať dělám cokoli, stejně to nejede :( Já mám napsaný dlouhý kód, který chci rozškatulkovat do jednotlivých kódů a pak je z hlavního programu volat.

 
Nahoru Odpovědět
15.9.2013 20:32
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:15.9.2013 20:34

Prosím, přečti si zdejší tutoriály .... tímhle to nikam nevede. Nemáš páru vůbec o čem se zde hovoří :) .. je pro zajímavost .. postni sem ten kód at třeba pomůžeme

Nahoru Odpovědět
15.9.2013 20:34
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Michal Žůrek - misaz:15.9.2013 20:35

podle mě nezná ani funkce natož metody.

 
Nahoru Odpovědět
15.9.2013 20:35
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:15.9.2013 20:44

Hlavně je mi podivné, že se chce odvolávat na nějaké public void xxx z jiného souboru. Nevím, co s tím chce dělat. To má být nějaké novodobé imperativní programování nebo co?

Nahoru Odpovědět
15.9.2013 20:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 21:01

Asi mě stále nechápete. Chci, aby byl kód přehlednější, a proto chci kód rozdělit. Aby každý void měl svůj vlastní soubor. A pak v hlavním kódu volat jednotlivé voidy

 
Nahoru Odpovědět
15.9.2013 21:01
Avatar
coderex213
Člen
Avatar
Odpovídá na
coderex213:15.9.2013 21:08

Void? Snad funkce, nebo ne?

 
Nahoru Odpovědět
15.9.2013 21:08
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:15.9.2013 21:15

Ne ne a ne .... přečti si zdejší tutoriály o OOP. Žádné "void" voalt nebudeš. Budeš si zakládat instance tvých tříd a v nich volat metody.

Nahoru Odpovědět
15.9.2013 21:15
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na
Michal Žůrek - misaz:15.9.2013 21:19

předpokládám že už si prošel první třídou a umíš číst.

// Usoudil jsem podle toho, že umí psát.

 
Nahoru Odpovědět
15.9.2013 21:19
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Kit
Petr Nymsa:15.9.2013 21:19

Obávám se že ta hromada kódu bude jenom spousta ale moc spousta metod (těžko říct zda public či private) nabušené ve Form1.cs které ještě ani nic nevrací. A Form1 bude obsahovat desítky různých datových položek.

Nahoru Odpovědět
15.9.2013 21:19
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Kit:15.9.2013 21:27

Otázkou také je, co znamená "složitější kód". Například pro Luboš Běhounek Satika by to mohlo být něco nad 10000 řádek.

Void je docela hezké slovo. Možná by nebylo špatné se podívat do slovníku, co vlastně znamená. Takové spojení "void noName" také nezní špatně.

Nahoru Odpovědět
15.9.2013 21:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 21:33

Tak zde je ten kód:

using System;
using System.Collec­tions.Generic;
using System.Componen­tModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Window­s.Forms;
using System.Diagnostics;

namespace Maze
{
public partial class Form1 : Form
{
public Form1()
{
InitializeCom­ponent();
start();
}

// STOPWATCH:
public Stopwatch watch = new Stopwatch();

// START:
public void start()
{
player.Location = new Point(0, 575);
watch.Reset();
watch.Start();
}

//RECTANGLE:
public void rectangle()
{
int rPx = player.Location.X;
int rPy = player.Location.Y;
Rectangle rPlayer = new Rectangle(rPx, rPy, 24, 24);
Rectangle rFinish = new Rectangle(end­.Location.X, end.Location.Y, end.Size.Width, end.Size.Height);
Rectangle r1 = new Rectangle(label1­.Location.X, label1.Location.Y, label1.Size.Width, label1.Size.He­ight);
Rectangle r2 = new Rectangle(label2­.Location.X, label2.Location.Y, label2.Size.Width, label2.Size.He­ight);
Rectangle r3 = new Rectangle(label3­.Location.X, label3.Location.Y, label3.Size.Width, label3.Size.He­ight);
Rectangle r4 = new Rectangle(label4­.Location.X, label4.Location.Y, label4.Size.Width, label4.Size.He­ight);
Rectangle r5 = new Rectangle(label5­.Location.X, label5.Location.Y, label5.Size.Width, label5.Size.He­ight);
Rectangle r6 = new Rectangle(label6­.Location.X, label6.Location.Y, label6.Size.Width, label6.Size.He­ight);
Rectangle r7 = new Rectangle(label7­.Location.X, label7.Location.Y, label7.Size.Width, label7.Size.He­ight);
Rectangle r8 = new Rectangle(label8­.Location.X, label8.Location.Y, label8.Size.Width, label8.Size.He­ight);
Rectangle r9 = new Rectangle(label9­.Location.X, label9.Location.Y, label9.Size.Width, label9.Size.He­ight);
Rectangle r10 = new Rectangle(label10­.Location.X, label10.Location.Y, label10.Size.Width, label10.Size.He­ight);
Rectangle r11 = new Rectangle(label11­.Location.X, label11.Location.Y, label11.Size.Width, label11.Size.He­ight);
Rectangle r12 = new Rectangle(label12­.Location.X, label12.Location.Y, label12.Size.Width, label12.Size.He­ight);
Rectangle r13 = new Rectangle(label13­.Location.X, label13.Location.Y, label13.Size.Width, label13.Size.He­ight);
Rectangle r14 = new Rectangle(label14­.Location.X, label14.Location.Y, label14.Size.Width, label14.Size.He­ight);
Rectangle r15 = new Rectangle(label15­.Location.X, label15.Location.Y, label15.Size.Width, label15.Size.He­ight);
Rectangle r16 = new Rectangle(label16­.Location.X, label16.Location.Y, label16.Size.Width, label16.Size.He­ight);
Rectangle r17 = new Rectangle(label17­.Location.X, label17.Location.Y, label17.Size.Width, label17.Size.He­ight);

if (rPlayer.Inter­sectsWith(rFi­nish))
{
finish();
}
if (rPlayer.Inter­sectsWith(r1))
{
start();
}
if (rPlayer.Inter­sectsWith(r2))
{
start();
}
if (rPlayer.Inter­sectsWith(r3))
{
start();
}
if (rPlayer.Inter­sectsWith(r4))
{
start();
}
if (rPlayer.Inter­sectsWith(r5))
{
start();
}
if (rPlayer.Inter­sectsWith(r6))
{
start();
}
if (rPlayer.Inter­sectsWith(r7))
{
start();
}
if (rPlayer.Inter­sectsWith(r8))
{
start();
}
if (rPlayer.Inter­sectsWith(r9))
{
start();
}
if (rPlayer.Inter­sectsWith(r10))
{
start();
}
if (rPlayer.Inter­sectsWith(r11))
{
start();
}
if (rPlayer.Inter­sectsWith(r12))
{
start();
}
if (rPlayer.Inter­sectsWith(r13))
{
start();
}
if (rPlayer.Inter­sectsWith(r14))
{
start();
}
if (rPlayer.Inter­sectsWith(r15))
{
start();
}
if (rPlayer.Inter­sectsWith(r16))
{
start();
}
if (rPlayer.Inter­sectsWith(r17))
{
start();
}
}

// CONTROL:
public void Form1_KeyDown(ob­ject sender, KeyEventArgs e)
{
// UP:
if (e.KeyCode == Keys.W)
{
player.Top -= 10;
}
// DOWN:
if (e.KeyCode == Keys.S)
{
player.Top += 10;
}
// LEFT:
if (e.KeyCode == Keys.A)
{
player.Left -= 10;
}
// RIGHT:
if (e.KeyCode == Keys.D)
{
player.Left += 10;
}

// RECTANGLE:
rectangle();
}
// FINISH:
public void finish()
{
watch.Stop();
string time = watch.Elapsed­.Seconds.ToStrin­g();
Form Start = new Form();
Start.Show();
MessageBox.Show("Con­gratulations! " + "Your time: " + time + " seconds.");
}
}
}

A já chci každý ten VOID uložit zvlášť do souboru, abych je mohl využít i u jiného programu. Např. public void Form1_KeyDown, který rozhoduje, která klávesa byla stisknuta.

 
Nahoru Odpovědět
15.9.2013 21:33
Avatar
Odpovídá na
Michael Olšavský:15.9.2013 21:34

Děláš si srandu? Přečteš si už ty tutoriály nebo ne? To je naprostá blbost, to co se snažíš

 
Nahoru Odpovědět
15.9.2013 21:34
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 21:38

Že to není technicky možné?

 
Nahoru Odpovědět
15.9.2013 21:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:15.9.2013 21:42

Ještě jsi nepřišel na to, co znamená slovo void?

Nahoru Odpovědět
15.9.2013 21:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 21:43

tak void nevrací hodnoty ne?

 
Nahoru Odpovědět
15.9.2013 21:43
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:15.9.2013 21:51

No vida, a jak se tedy říká tomu, co má vlastnost void a týká se nějakého kusu programu?

Nahoru Odpovědět
15.9.2013 21:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
noName
Neregistrovaný
Avatar
noName:15.9.2013 21:58

Myslíš metodu?

 
Nahoru Odpovědět
15.9.2013 21:58
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:15.9.2013 22:07

Skvělé. Když místo slova "void" budeš používat slovo "metoda", tak ti snad ostatní budou rozumět.

Škoda, že sis nevšiml tlačítka pro vložení zdrojového kódu. Je mezi tlačítkem pro kurzívu a tlačítkem pro vložení nicku. Pak by se tvůj kód ostatním sice také nelíbil, ale byl by podstatně čitelnější.

Nahoru Odpovědět
15.9.2013 22:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na
Jan Vargovský:15.9.2013 22:34

Soutěž o nejpekelnější kód ? Kdybys alespoň znal AND, OR operátory ... Zkus si prosím tě přečíst raději tutoriály a pak si budeš trhat vlasy, co jsi to vůbec napsal :)

 
Nahoru Odpovědět
15.9.2013 22:34
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na
Honza Bittner:16.9.2013 7:58

Ukládat tvé metody každý do jiného souboru je blbost ...

Píšeš že tam chceš dát metodu na ovládání vstupu klávesnice ...
Proč si na to neuděláš třídu ?

Dávat každou metodu do jednoho souboru, přičemž může být třeba 5 metod podobných, jen u jedné ověřuješ stisk, u druhé podržení atd. je dost špatné ...

Jak ti radí ostatní, nevyšiluj a přečti si ZNOVA celý tutoriál na C#.

Nahoru Odpovědět
16.9.2013 7:58
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:16.9.2013 8:12

To je opravdu katastrofa. Přečti si ty zdejší tutoriály. Ty tvé "voidy" stejně v jiném programu fungovat nebudou například ten "void" co určuje stisknutou klávesu. A to jednodušše proto že to je callback události KeyDown na Formu :`

Nahoru Odpovědět
16.9.2013 8:12
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na
Luboš Běhounek Satik:16.9.2013 8:36

Pokud chceš kód jedné třídy rozstrkat do víc souborů, tak se koukni na klíčové slovo partial.

Nahoru Odpovědět
16.9.2013 8:36
https://www.facebook.com/peasantsandcastles/
Avatar
noName
Neregistrovaný
Avatar
Odpovídá na Luboš Běhounek Satik
noName:16.9.2013 8:38

Děkuji. Konečně mi někdo stručně odpověděl.

 
Nahoru Odpovědět
16.9.2013 8:38
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:16.9.2013 8:40

Ano používej partial pokud to má smysl. V tvém případě to smysl nemá. Podívej se na tutoriály o OOP a sám poznáš že by js to mohl napsat mnohem lépe ;)

Nahoru Odpovědět
16.9.2013 8:40
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
noName
Neregistrovaný
Avatar
noName:16.9.2013 8:48

Už na tom pracuji :D Například jsem zkoušel využít && pro

if (rPlayer.IntersectsWith(r1))
{
start();
}

ALE když to napíši:

if (rPlayer.IntersectsWith(r1&&r2))
{
start();
}

tak to nejede :(

 
Nahoru Odpovědět
16.9.2013 8:48
Avatar
Odpovídá na
Luboš Běhounek Satik:16.9.2013 8:50

Myslím, že by ten kód mohl klidně zůstat v jednom souboru, zatím to není složitý kód ;)

Zaměř se raději na kód metody rectangle, dala by se napsat asi na 5 řádků :) .

Nahoru Odpovědět
16.9.2013 8:50
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na
Luboš Běhounek Satik:16.9.2013 8:52

Bylo by to takhle:

if (rPlayer.IntersectsWith(r1) || rPlayer.IntersectsWith(r2))
{
  start();
}

Ale doporučuji to přepsat úplně :)

Nahoru Odpovědět
16.9.2013 8:52
https://www.facebook.com/peasantsandcastles/
Avatar
noName
Neregistrovaný
Avatar
Odpovídá na Luboš Běhounek Satik
noName:16.9.2013 9:57

Stále nemohu najít cestu pro jednodušší řešení než:

if (rPlayer.IntersectsWith(r1) || rPlayer.IntersectsWith(r2))
 {
   start();
 }

poradíš mi prosím?

 
Nahoru Odpovědět
16.9.2013 9:57
Avatar
Jakub Lásko[Saarix]:16.9.2013 10:13

Zkus se mrknout na cyklus foreach a skze něj prověř ty své rectangly zda nekolidují s hráčem. Poznámka nezapomeň si udělat list těch rectanglů, aby jsi je mohl projet.

Nahoru Odpovědět
16.9.2013 10:13
Časem je vše možné.
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Jakub Lásko[Saarix]
Honza Bittner:16.9.2013 10:16

nemůžeš napsat:
if (rPlayer.Inter­sectsWith(r1&&r2))
chceš napsat 2 parametry do 1dnoho ...

udělej si metodu na :
if (rPlayer.Inter­sectsWith(r1,r2))

Nahoru Odpovědět
16.9.2013 10:16
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Jakub Lásko[Saarix]:16.9.2013 13:03

Tuším že to neměla být odpověď mě? :-)

Nahoru Odpovědět
16.9.2013 13:03
Časem je vše možné.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na
Jan Vargovský:16.9.2013 14:09

Nemůžeš spojovat parametry, musíš spojit ty výsledky. Když se zamyslíš nad tím kódem, tak i když spustíš hned u první podmínky ten start, tak se potom testujou ty všechny. (je to zbytečné - ale to je jen takový detail)

Jestli si pamatuju, jsi ten člověk, co dělal ty microsoftácké tutoriály.

Takže jestli ano, tak několik rad:

Ty všechny labely můžeš získat skrz foreach cyklus z formuláře :

foreach (Control c in Controls)
            {
                if (c is Label)
                {
                    // TODO
                }
            }

Pozn. Kdyby to bylo v panelu, tak by jsi akorát volal panel.Controls místo Controls.

Každý label má vlastnost ClientRectangle (velikost toho labelu), takže si je stačí uložit někde na začátku programu a jen snima pracovat.

Vytvořil by sis privátní list:

private List<Rectangle> rectangles = new List<Rectangle>();

přidal do listu v konstruktoru všechny ty velikosti a souřadnice těch labelů

foreach (Control c in Controls)
            {
                if (c is Label)
                {
                    rectangles.Add(c.ClientRectangle);
                }
            }

A pak si jen napsal metodu, která ti proiteruje toho playera se zbytkem těch rectanglu.

private bool IsThrough(Rectangle playerRectangle, params Rectangle[] rectangles)
       {
           foreach (Rectangle r in rectangles)
           {
               if (playerRectangle.IntersectsWith(r))
                   return true;
           }

           return false;
       }

Takže tvůj kód by byl

if (IsThrough(label1.ClientRectangle, rectangles.ToArray()))
{
    start();
}

Tvůj kód je pak univerzální, že ať předěláš své bludiště jakkoliv (bylo by těm těch labelů třeba 1000) tak nebudeš vytvářet r1 - r1000 (kdybys použil alespoň pole), ale jednoduše si pomůžeš.

Snad ti to pomůže :)

 
Nahoru Odpovědět
16.9.2013 14:09
Avatar
Odpovídá na
Luboš Běhounek Satik:16.9.2013 14:09

Jak píše Jakub Lásko[Saarix] - místo procházení každého labelu a kolizí ručně v kódu použij cyklus a kolize testuj v něm.

Budeš potřebovat foreach (nebo případně for) cyklus a v něm projít všechny labely, které představují překážky (najdeš je třeba u formuláře v kolekci Controls a zareagovat na to.

Nahoru Odpovědět
16.9.2013 14:09
https://www.facebook.com/peasantsandcastles/
Avatar
noName
Neregistrovaný
Avatar
Odpovídá na Jan Vargovský
noName:16.9.2013 16:10

Díky. Přesně takto sem si to představoval, jen jsem nevěděl jak na to :D

 
Nahoru Odpovědět
16.9.2013 16:10
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na
Petr Nymsa:16.9.2013 17:08

Problémem který tu všichni řešíme je ten, že zřejmě nechápeš přesně co se tam děje :) Pokud to potřebuješ splácat narychlo, opisuj. Pokud tomu chceš porozumět přečti si zdejší tutoriály ;)

Nahoru Odpovědět
16.9.2013 17:08
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Neaktivní uživatel:17.9.2013 0:02

ještě 500x mu to řekněte, evidentně o ně má veliký zájem :)

Nahoru Odpovědět
17.9.2013 0:02
Neaktivní uživatelský účet
Avatar
noName
Neregistrovaný
Avatar
Odpovídá na Neaktivní uživatel
noName:17.9.2013 7:28

Zájem mám, ale prvně musím dodělat toto :(

 
Nahoru Odpovědět
17.9.2013 7:28
Avatar
noName
Neregistrovaný
Avatar
Odpovídá na Jan Vargovský
noName:17.9.2013 12:24

Stále mi to nejede :( Můžeš prosím vložit ty kódy do mého kódu?
Labely jsou umístěny na panel1

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;
using System.Diagnostics;

namespace Maze
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            start();
        }

        // STOPWATCH:
        public Stopwatch watch = new Stopwatch();

        // START:
        public void start()
        {
            player.Location = new Point(0, 575);
            watch.Reset();
            watch.Start();
        }

        // CONTROL:
        public void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            // UP:
            if (e.KeyCode == Keys.W)
            {
                player.Top -= 10;
            }
            // DOWN:
            if (e.KeyCode == Keys.S)
            {
                player.Top += 10;
            }
            // LEFT:
            if (e.KeyCode == Keys.A)
            {
                player.Left -= 10;
            }
            // RIGHT:
            if (e.KeyCode == Keys.D)
            {
                player.Left += 10;
            }
        }
        // FINISH:
        public void finish()
        {
            watch.Stop();
            string time = watch.Elapsed.Seconds.ToString();
            MessageBox.Show("Congratulations! " + "Your time: " + time + " seconds.");
        }
    }
}

Předem děkuji.

 
Nahoru Odpovědět
17.9.2013 12:24
Avatar

Neregistrovaný
Avatar
Odpovídá na Petr Nymsa
:17.9.2013 12:32

Odpovídá na Zirko

A ano, toto potřebuji udělat narychlo, ale hned jak to dokončím, začnu studovat tutoriály!

 
Nahoru Odpovědět
17.9.2013 12:32
Avatar
Odpovídá na
Luboš Běhounek Satik:17.9.2013 12:54

Teď musíš někam pověsit ty kontroly pozic, jestli hráč nekoliduje s nějakým objektem - udělej si na to metodu a volej ji třeba na konci form1_keydown.

Do té kontrolní funkce musíš dát cyklus, kde projedeš všechny Controls toho panelu a zkontroluješ, jestli nekoliduje s hráčem.

Nahoru Odpovědět
17.9.2013 12:54
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 67.