CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z C# i przekazywaniem danych między klasami

Problem z C# i przekazywaniem danych między klasami

dział ogólny

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » czwartek, 31 grudnia 2015, 19:57

Kurde, działa idealnie, ale nie do końca rozumiem jak.
Wywołałeś obiekt potworek na rzecz klasy postac.
Rozumiem, że po to, żeby dane zostały przekazane z jednej klasy do drugiej co pewnie umożliwiają te metody z return, bo samo pole pozycja_mobx... no właśnie, ma wartość 0, a po return przypisuje prawidłową?
Wydawało mi się, że skoro wspomniane już pole hp jest widoczne to klasy widzą się prawidłowo.
Tak czy inaczej bardzo dziękuję :)
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez polymorphism » czwartek, 31 grudnia 2015, 20:58

Wywołałeś obiekt potworek na rzecz klasy postac.

Inaczej. Przekazałem obiekt* potworek do metody Ruch -> Strzelaj, tak żeby mogły pobrać jego pozycję.

*) w C# klasy są typami referencyjnymi.

(...) co pewnie umożliwiają te metody z return, bo samo pole pozycja_mobx... no właśnie, ma wartość 0, a po return przypisuje prawidłową?

Prawdę mówiąc, te metody są zbędne (w tym konkretnym przypadku), bo można od razu tak:
KOD cpp:     UKRYJ  
... = mob.pozycja_mobx;
... = mob.pozycja_moby;

Na samym początku oba pola zrobiłem prywatnymi, a wtedy dostęp przez gettery byłby konieczny, ale nie wiedziałem (a raczej nie chciało mi się sprawdzać :P), czy gdzieś nie odwołujesz się do tych pól w innych częściach kodu, więc zrobiłem je chronionymi.

Wydawało mi się, że skoro wspomniane już pole hp jest widoczne to klasy widzą się prawidłowo.

Wcześniej pisałem dlaczego hp "działa".

Generalnie musisz zrozumieć, czym jest klasa, a czym jest obiekt/instancja klasy. Bez tego nie ma sensu wchodzić w dziedziczenie.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » piątek, 1 stycznia 2016, 15:46

polymorphism napisał(a):Generalnie musisz zrozumieć, czym jest klasa, a czym jest obiekt/instancja klasy. Bez tego nie ma sensu wchodzić w dziedziczenie.

Popraw mnie jeśli się mylę: klasa to zbiór pól i metod, określających "zachowanie" danego elementu oraz jego właściwości, a obiekt to... hmmm, zmienna, której przypisujemy pewne metody z klasy?
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez Cyfrowy Baron » piątek, 1 stycznia 2016, 18:56

Obiekt to zmienna??? Hm... To jak w budownictwie. Klasa to projekt wieżowca, a obiekt to wieżowiec zbudowany dokładnie w oparciu o ten projekt.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » piątek, 1 stycznia 2016, 19:01

Napisałem zmienna, bo zasugerowałem się deklaracją:
typ nazwa
int zmienna
klasa obiekt

Ok, dzięki za wyjaśnienie :)
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » piątek, 1 stycznia 2016, 23:37

Jeszcze jedno pytanie.
Dlaczego korzystając z metody Strzelaj klasy ruch trafiam w moba, ale nie jestem w stanie ponownie zmienić mu pozycji?
Ustawiam znacznik=0 i uruchamiam metodę rodzica o nazwie WyswietlMob_01().
Efekt jest taki, że mob się losuje, pojawia, ale po chwili znika, a stary zostaje w tym samym miejscu co był, już zestrzelony.

KOD cpp:     UKRYJ  
public void Strzelaj(mob_01 mob)
                {
                        poz_strzal_x = pozycja_x+1;
                        poz_strzal_y = pozycja_y-1;
                        while (poz_strzal_y > 0 )
                        {
                int pozycjamobax = mob.get_mobx();
                int pozycjamobay = mob.get_moby();
                Console.SetCursorPosition(poz_strzal_x, poz_strzal_y);
                Console.WriteLine(".");
                                System.Threading.Thread.Sleep(25);
                if (pozycjamobay == poz_strzal_y-1 && pozycjamobax+1 == poz_strzal_x)
                {
                    Console.WriteLine("Trafiony");
                    znacznik = 0;
                    WyswietlMob_01();
//                  AnimacjaTrafienia();
                    System.Threading.Thread.Sleep(2500);
                    break;
                }
                                poz_strzal_y--;
                        }
                }


KOD cpp:     UKRYJ  
                void LosujPozycje()
                {
                Random random = new Random();
        pozycja_mobx = random.Next(0, 78);
                pozycja_moby = random.Next(0, 20);
        znacznik=1;
        }
               
                public void WyswietlMob_01()
                {
            if (znacznik == 0)
                LosujPozycje();

                    Console.SetCursorPosition(pozycja_mobx, pozycja_moby);
            Console.WriteLine("oOo");
                }
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez polymorphism » sobota, 2 stycznia 2016, 10:47

Ech, a Ty dalej swoje :shock: WyswietlMob_01 -> LosujPozycje wywoływane jest na rzecz obiektu klasy ruch, więc jakżeś wpadł na pomysł, że to zmieni pozycję obiektu mob przekazanego w parametrze?!
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » sobota, 2 stycznia 2016, 12:16

No bo jednak tego nie kumam :(
Mówisz, że nie zadziała, ale nowy mob pojawia się tylko znika, a stary nie chce zniknąć.
Czy możesz jakoś jasno wyjaśnić te zależności, bo tego pewnie będzie więcej na dalszym etapie, więc muszę się połapać w końcu.
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez polymorphism » sobota, 2 stycznia 2016, 16:05

Lepiej będzie jak zajrzysz do jakiejś dobrej książki wprowadzającej w programowanie obiektowe. Może być nawet do C++.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » sobota, 2 stycznia 2016, 20:07

Szukałem tego, ale nie trafiłem na nic ciekawego.
Oglądałem też kursy na youtube i miałem na wykładach, ale nigdzie nikt nie mówił o takim czymś.
Za kilka dni mam zaliczenie z tego, więc wolałbym, żebyś podpowiedział coś konkretnie, jeśli możesz.
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez polymorphism » niedziela, 3 stycznia 2016, 11:54

Jeszcze raz powtórzę: zamiast szukać kursów na youtube i innych podejrzanych tutoriali, sięgnij po jakąś książkę. Zapewne są jakieś dobre pozycje po polsku, jeśli angielski jest problemem. I nie pisz mi, że nie trafiłeś na coś ciekawego, bo jeśli nie ma pozycji, która mogłaby Ci w sposób zrozumiały wytłumaczyć klasy i programowanie obiektowe, to tym bardziej ja na tym forum nie będę w stanie tego zrobić.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Problem z C# i przekazywaniem danych między klasami

Nowy postprzez nvdante » niedziela, 3 stycznia 2016, 13:52

Powiem tylko tyle, że nie każdy chce czy musi by programistą. Wydaje mi się, że i tak sporo się nauczyłem, a siedzenie nad książkami, gdy to jeden z wielu projektów, które trzeba zaliczyć, nie jest czymś na co mogę sobie pozwolić. Jeżeli masz jakieś dobre rady, na przykład czego szukać ( bo przekazywanie wywołań jako parametr nie jest związane stricte z klasami czy projektowaniem obiektowym, a chyba właśnie tego przekazywania potrzebuję ), to poproszę. Postaram się to przeczytać. Podpowiedz ile możesz lub chcesz...
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows 7Firefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 29 gości

cron