Skocz do zawartości

LyanVu

Użytkownicy
  • Postów

    49
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez LyanVu

  1. Witam, otóż wpierw pokażę ten oto kawałek kodu:

    void kMiasto::OdswiezMapa()
    {
    for (int y = 0; y < 5; ++y)
    {
    	cout << endl;
    	for (int x = 0; x < 9; ++x)
    	{
    				switch (mMapa[y][x])
    				{
    				case pl_Wolne:
    				{
    								 cout << "##\n##";
    
    								 break;
    				}
    				}
    		}
    	}
    }

     

    i chodzi mi tu o to aby pl_Wolne wyswietliło jako

    "##

    ##" .

    Z tym, że \n lub endl przechodzi do nastepnej linii i wtedy nastepne pl_Wolne wypisują się pod tym, natomiast chciałbym aby następne pl_Wolne wyświetliło się zaraz obok w tej powyższej formie ;p Jest na to jakiś sposób?

  2. W GML Szybciej się programuje i dlatego wszyscy tylko w tym piszą na tę ligę? :D Nie wiem jak to tam wygląda

     

    #Edit

    Spojrzałem na kodzenie w GML i już odpowiedziałem sobie na moje pytanie ^^

  3. #EDIT:

    Proponuję abyś jeszcze raz zbadał metodę cInt2dArray::ChangeRozmiar, możesz być niemile zaskoczony. Konkretnie chodzi o delete[] puNowaTablica;

     

    Czy chodzi ci o to, że ja wymazuję obszar pamięci gdzie rezyduje tablica? Bo nie jestem pewny czy dobrze pomyślałem :)

     

    EDIT - WIN:

     

    Udało mi się :) Zaczeło działać kiedy zmieniłem

    delete[] puTablica;
    puTablica = puNowaTablica;
    delete[] puNowaTablica;

    Na:

    	
    puTablica = NULL;
    delete[] puTablica;
    puTablica = puNowaTablica;
    puNowaTablica = NULL;
    delete[] puNowaTablica;

     

    Tak więc dzięki wszystkim :)

  4. Od razu podam kod:

    klasy.h:

    class cInt2dArray
    {
    private:
    const static unsigned short DOMYSLNYy = 2;
    const static unsigned short DOMYSLNYx = 2;
    
    unsigned muRozmiarY;
    unsigned muRozmiarX;
    unsigned* puTablica;
    
    public:
    cInt2dArray() { muRozmiarY = DOMYSLNYy; muRozmiarX = DOMYSLNYx; puTablica = new unsigned[muRozmiarY * muRozmiarX]; }
    cInt2dArray(unsigned uRozmiarY,unsigned uRozmiarX) { muRozmiarY = uRozmiarY; muRozmiarX = uRozmiarX; puTablica = new unsigned[muRozmiarY * muRozmiarX]; }
    ~cInt2dArray() { delete[] puTablica; }
    
    unsigned GetRozmiarY() { return muRozmiarY; }
    unsigned GetRozmiarX() { return muRozmiarX; }
    void SetDane(int* nDane, unsigned uIndeks1, unsigned uIndeks2)
    {
    	puTablica[uIndeks1 * uIndeks2] = *nDane;
    }
    int GetDane(unsigned uIndeks1, unsigned uIndeks2) { return puTablica[uIndeks1*uIndeks2]; }
    bool ChangeRozmiar(unsigned uRozmiarY, unsigned uRozmiarX);
    };

    main.cpp"

    // INCLUDY SĄ PRAWIDŁOWE
    bool cInt2dArray::ChangeRozmiar(unsigned uRozmiarY, unsigned uRozmiarX)
    {
    if (uRozmiarY < 0 || uRozmiarX < 0) return false;
    unsigned* puNowaTablica = new unsigned[uRozmiarY *uRozmiarX];
    memcpy(puNowaTablica, puTablica, (uRozmiarY*uRozmiarX)*sizeof(unsigned));
    
    delete[] puTablica;
    puTablica = puNowaTablica;
    delete[] puNowaTablica;
    
    return true;
    }
    
    int main()
    {
    
    unsigned uRozmiarY, uRozmiarX;
    int nDane;
    
    cout << "Podaj Rozmiar Y tablicy: ";
    cin >> uRozmiarY;
    cout << endl << "Podaj Rozmiar X tablicy: ";
    cin >> uRozmiarX;
    
    cInt2dArray* puTablica = new cInt2dArray(uRozmiarY,uRozmiarX);
    
    cout << endl <<  "Podaj Rozmiar Y tablicy: ";
    cin >> uRozmiarY;
    cout << endl << "Podaj Rozmiar X tablicy: ";
    cin >> uRozmiarX;
    cout << endl << "Podaj Dane do wprowadzenia: ";
    cin >> nDane;
    puTablica->SetDane(&nDane, uRozmiarY, uRozmiarX);
    cout << endl << "Dane to: " << puTablica->GetDane(uRozmiarY, uRozmiarX);
    cout << endl << "Zmieniamy Rozmiar. Rozmiar Y: ";
    cin >> uRozmiarY;
    cout << endl << "Rozmiar X: ";
    cin >> uRozmiarX;
    puTablica->ChangeRozmiar(uRozmiarY, uRozmiarX);
    cout << endl << "Podaj Rozmiar Y tablicy: ";
    cin >> uRozmiarY;
    cout << endl << "Podaj Rozmiar X tablicy: ";
    cin >> uRozmiarX;
    cout <<  endl << puTablica->GetDane(uRozmiarY, uRozmiarX);
    _getch();
    delete puTablica;
    
    
    _getch();
    return 0;
    }

     

    No a problem polega na tym, że po prostu wyskakuje coś takiego gdy już zmienię rozmiar tablicy i podaję y,x aby sprawdzic jakies dane ;p

     

    PROBLEM

     

    #Edit1

    Dodam, że umyślnie nie zrobiłem tego na zasadzie unsigned** pTablica :D

  5. Witam, mam mały/duży problem, ponieważ nie dawno co uczyłem się wskaźników i postanowiłem je przećwiczyć. Najpierw pokażę kod:

    Klasy.h:

    class cIntArray
    {
    private:
    const static short unsigned int mDOMYSLNY = 5;
    unsigned mRozmiar;
    int* mpTablica = NULL;
    public:
    cIntArray() { mRozmiar = mDOMYSLNY; }
    cIntArray(unsigned Rozmiar) { mRozmiar = Rozmiar; mpTablica = new int[mRozmiar]; }
    ~cIntArray() { delete[] mpTablica; }
    
    bool SetWartosc(int wartosc, int indeks);
    unsigned GetRozmiar() const { return mRozmiar; }
    unsigned GetDane(unsigned Indeks) const { return mpTablica[indeks]; }
    bool SetRozmiar(int NowyRozmiar);
    
    };

    Main.cpp(wiem, że implementacje lepiej w oddzielnym module ale to tylko krótkie ćwiczenie):

    #include <iostream>
    #include <conio.h>
    #include <memory.h>
    #include "Klasy.h"
    
    using namespace std;
    
    bool cIntArray::SetWartosc(int wartosc, int indeks)
    {
    if (indeks > mRozmiar || indeks < 0) return false;
    
    mpTablica[indeks] = wartosc;
    return true;
    }
    bool cIntArray::SetRozmiar(int NowyRozmiar)
    {
    if (NowyRozmiar == mRozmiar) return false;
    
    int* pNowaTablica = new int[NowyRozmiar];
    memcpy(pNowaTablica, mpTablica, NowyRozmiar * sizeof(int));
    delete[] mpTablica;
    
    mpTablica = pNowaTablica;
    mRozmiar = NowyRozmiar;
    return true;
    }
    
    int main()
    {
    cout << "Podaj Rozmiar Tablicy: ";
    int nRozmiar;
    cin >> nRozmiar;
    cIntArray* pIntTablica = new cIntArray(nRozmiar);
    
    cout << endl << pIntTablica->GetRozmiar();
    _getch();
    
    int nIndeks, nWartosc;
    cout << endl << "Podaj Indeks: ";
    cin >> nIndeks;
    cout << endl << "Podaj Wartosc: ";
    cin >> nWartosc;
    
    cout << endl << pIntTablica->GetDane(nIndeks);
    _getch();
    
    system("cls");
    
    cout << "Podaj Indeks do sprawdzenia: ";
    cin >> nIndeks;
    cout << endl << pIntTablica->GetDane(nIndeks);
    _getch();
    
    cout << endl << "Podaj Nowy Rozmiar: ";
    cin >> nRozmiar;
    pIntTablica->SetRozmiar(nRozmiar);
    
    cout << endl << "Dane o tamtym indeksie: ";
    cout << pIntTablica->GetDane(nIndeks);
    
    delete pIntTablica;
    
    _getch();
    return 0;
    }

     

    A problem jest taki, iż za każdym razem niezależnie jaką wartość wpiszę to jest tam liczba iluś cyfrowa(6 może 7) i przy każdym uruchomieniu programu jest taka sama -.-.

    Co się dzieje?

  6. Witam, przejdę do sedna.

    to jest wskaźnik na obiekt klasy cEnemy:

     

    cEnemy* pEnemy;

     

    No dobra, ale niby jaki obiekt?!

     

    załóżmy, że stworzę sobie 5 obiektów klasy cEnemy. a pozniej ten wskaźnik, to na co on niby wskazuje? (ni chu..chu.. tych cholernych wskaźników nie czaje.

  7. Witam, mam taki o to problem, którego rozwiązania nie mogę znaleźć w guglach. A więc, na jakiej zasadzie łączę moduły? Takie coś nie działa:

    Game.cpp:

    int Powitanie()
    {
    cout << "elo";
    return 0;
    }

     

    main.cpp:

    #include "Game.cpp"
    
    using namespace std;
    
    int main()
    {
    Powitanie();
    _getch();
    return 0;
    }

     

    Wystakuje:

    1>main.obj : error LNK2005: "int __cdecl Powitanie(void)" (?Powitanie@@YAHXZ) already defined in Game.obj

    1>C:\exe : fatal error LNK1169: one or more multiply defined symbols found

  8. Dobra już działa, przerzuciłem przypisanie tych stringów(eloszka) do wyższego konstruktora. Widocznie źle zrozumiałem przeciążenia, lub w ogóle ich nie rozumiem. Myślałem, że to będzie działało na zasadzie najpierw wykona pierwszy konstruktor, pozniej zajmie się drugim ;p. W każdym razie dziękuję za pomoc :)

  9. Otóż najpierw pokażę wam kod:

     

    consoler.h :

     

    #include <string>
    
    const int cmax_Strony = 500;
    
    class Ksiazka
    {
    private:
    string m_strTytul;
    string m_strStrony[cmax_Strony];
    int m_nIloscStron;
    public:
    Ksiazka(string strTytul, int nIloscStron) { m_strTytul = strTytul; m_nIloscStron = nIloscStron; }
    Ksiazka() { m_strStrony[0] = "Eloszka.", m_strStrony[1] = " blablablabla"; }
    
    string GetTytul() { return m_strTytul; }
    string GetStrona(int nStrona) { return m_strStrony[nStrona]; }
    int GetIloscStron() { return m_nIloscStron; }
    };
    

     

    main.cpp :

    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include "consoler.h"
    
    using namespace std;
    
    
    int main()
    {
    string strTytul;
    int nIloscStron;
    int nWpisStrona = true;
    
    cout << "Podaj Tytul Ksiazki: ";
    cin >> strTytul;
    cout << endl << "Podaj Ilosc Stron: ";
    cin >> nIloscStron;
    
    system("cls");
    
    Ksiazka oKsiazka1(strTytul, nIloscStron);
    
    
    while (nWpisStrona>0 && nWpisStrona<3)
    {
    	cout << "Tytul Twojej Ksiazki: " << oKsiazka1.GetTytul();
    	cout << endl;
    	cout << "Ilosc jej stron: " << oKsiazka1.GetIloscStron();
    	cout << endl;
    	cout << "Podaj Strone, ktora chcesz przeczytac: ";
    	cin >> nWpisStrona;
    	cout << endl;
    
    	cout << oKsiazka1.GetStrona(nWpisStrona - 1);
    	cout << endl;
    	_getch();
    }
    _getch();
    
    }

     

     

    Problem polega na tym, iż nie wyswietla mi zadnej z dwóch opisanych przeze mnie stron czyli "eloszka" i "blablabla". Wie Ktos o co chodzi? Dodam iż programowania obiektowego zacząłem się uczyć dopiero 1-2 godz temu, więc bez dziwienia jeżeli jest to trochę nagmatwane ;p

  10. Tytuł: MiniWizard(?..To po prostu system walki w sumie)

     

    Gatunek: RPG/Akcja

     

    Opis: Zasady:

    1. Po każdej wygranej walce mamy 2 punkty statystyk do rozdania.

    2. Po każdej wygranej dostajemy 1 punkt końcowy.

    3. To jest gra w stylu areny. Przetrwaj jak najdłużej.

    4. Jeszcze nie ma sztucznej inteligencji.

    5. Zręczność odpowiada za zdolność do unikania ataków

    6. Potki na HP są tylko dwie każdego rodzaju i na całą grę(nie tylko konkretną walkę), ale za to leczą procentowo.

    7. Skill - Głaz ma szansę na stun(ogłuszenie - 1 tura).

    8. Konsolę można powiększyć klikając prawym na nagłówek -> właściwości

    9. Powodzenia ;]

     

    Download: http://speedy.sh/JEeCC/Walka-Turowa.exe (22:53 - aktualizacja(bug fixes))

    Rozmiar pliku: 181 KB

     

    Autorzy:

    Programowanie:
    Marcin Siekierski(ja)

    Fabuła:
    brak fabuły

    Grafika:
    Microsoft

    Muzyka:
    Brak;

    Screeny:

     

    gkm8.png

     

    uijn.png

     

  11. Witam, otóż mam taki problem.

     

    1>\source.cpp(121): error C2440: '=' : cannot convert from 'initializer-list' to 'int'
    1>          Only an initializer-list with zero or one elements can be converted to this type

     

    zmienne z którymi mam problem:

    unsigned int tStatystyki[6] = {5 , 5, 10, 5, 5, 0 };
                unsigned int teStatystyki[6] = {5 , 5, 10, 5, 5, 0 };
    
                unsigned int tObrazenia[2] = { 0, 0 };
                unsigned int teObrazenia[2] = { 0, 0 };
    

     

    I miejsce gdzie ten problem występuje:

    tObrazenia[2] = { tStatystyki[0] * 2, tStatystyki[0] * 3 };
                 teObrazenia[2] = { teStatystyki[0] * 2, teStatystyki[0] * 3 };
    

     

    przy tStatystyki[0] *3 i teStatystyki[0] * 3 pokazuje sie komunikat: "Too many initializer values"

     

    Czy ktoś wie o co chodzi?

     

    //edit

    Jeżeli to nie wystarcza moge dać caly kod ale trochę tego jest

×
×
  • Dodaj nową pozycję...