Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Symulator wind

Ostatnio zmodyfikowano 2018-06-13 21:55
Autor Wiadomość
dervill
Temat założony przez niniejszego użytkownika
Symulator wind
» 2012-03-28 12:21:26
Witam, nie bardzo wiedziałem gdzie założyć temat ale chyba dobrze wybrało.
Chodzi mi o ogólną pomoc oraz porady.

Muszę wykonać symulator wind oparty o c++ oraz jedną z bibliotek graficznych. Wybrałem sfml ponieważ wielu z was mi ją poleciło.
O co dokładnie chodzi:
Nie używałem nigdy jeszcze bibliotek graficznych, umiem tylko tyle co w tutejszych kursach i dlatego jestem trochę zagubiony. Chciałbym abyście mi doradzili jak pisać owy symulator? Sam szkielet programu + jego działanie chciałem oprzeć na obiektach (piętra + windy) lecz czy jest to dobry pomysł, bo nie wiem jak to poźniej będzie z wyświetlaniem sprajtów.
Jeszcze na myśl przyszła mi lista dwukierunkowa jako piętra hmm.?

Dla przykładu znalazłem coś podobnego w C# lecz ktoś nie ukończył tego i zostawił.
http://www61.zippyshare.com/v/24226412/file.html

Podsumowując, jaką mam obrać ścieżkę w tworzeniu symulatora aby dało się to stworzyć coś na wzór tego symulatora z C#
P-53345
GoldWolf
» 2012-03-28 13:47:46
Spróbuj Sam zrobić szkielet, nie każdy ma takie zadanie jak Ty, a ja chcąc Ci doradzić musiałbym sam napisać program.
Jeśli czas Cię mocno nie goni, to zacznij, a potem pytaj i systematycznie coś osiągniesz.
P-53346
Chlorek
» 2012-03-28 17:50:37
Gotowego rozwiązania nikt Ci nie da (chyba). Taki "symulator" to niemały kawałek kodu, nikt Ci nie napisze co i jak, bo można zrobić to na kilka, ba dziesiątki sposobów. Jak napisał poprzednik, zacznij sam, jak będziesz miał problem z czymś konkretnym, coś nie zadziała - wówczas napisz tutaj. Tak na marginesie to ten program wydaje się raczej banalny, samo renderowanie grafiki to raczej nie problem, skup się na mechanizmie, a potem nałóż na to "okładkę" graficzną.
P-53369
dervill
Temat założony przez niniejszego użytkownika
» 2012-03-28 19:35:50
Tak wiem, że to nie mało wyjdzie linijek.
Co do czasu mam na to jakiś miesiąc.
Nie oczekiwałem gotowca, chciałem tylko sie dowiedzieć jak zacząć by później nie mieć problemów z ową nakładką graficzną.
To w takim razie, biorę się za pisanie.

Dzieki i pozdrawiam.
P-53388
pentional
» 2012-03-28 19:43:56
Może się przyda:

C/C++
#include <iostream>

using namespace std;


class winda
{
public:
    int numer_pietra, liczba_pieter, kierunek;
   
    winda()
    {
        numer_pietra = 0;
        cout << "Winda dostepna!\n";
    }
   
    void zmiana_pietra( int nowe_pietro ) // -------------------------- jazda winda
    {
        // sprawdza czy pietro jest prawidlowe, jezeli zle to komunikat i zakonczenie funkcji
        if( nowe_pietro > liczba_pieter )
        {
            cout << "Nie ma takiego pietra";
            kierunek = 0; // ustawia na 0 bo winda stoi w miejsu
            //return;
        }
        if( nowe_pietro < 0 )
        {
            cout << "Nie ma takiego pietra";
            kierunek = 0; // ustawia na 0 bo winda stoi w miejsu
        }
       
        // -----------------------------zapisuje kierunek jazdy
        if( nowe_pietro > numer_pietra )
        { kierunek = 1; } // jedziemy do gory
        else
        {
            if( nowe_pietro == numer_pietra )
            { kierunek = 0; } // jedziemy w bok ;)
            else
            { kierunek = - 1; } // jedziemy w dol
        }
        numer_pietra = nowe_pietro; // dojechalismy na podane pietro
    }
    int gdzie_jest_winda() //--------------------- gdzie jest winda
    {
        cout << "\nWinda jest na pietrze: " << numer_pietra << endl;
        return numer_pietra;
    }
   
    void gdzie_ostatnio_jechala_winda() //--------------- winda ostatnio jechala
    {
        if( kierunek == - 1 ) { cout << "W dol"; }
        if( kierunek == 1 ) { cout << "W gore"; }
        if( kierunek == 0 ) { cout << "Nie jechala"; }
    }
   
    ~winda()
    {
        cout << "Do widzenia";
    }
   
}; // ----------------------------------------------------------------- koniec klasy WINDA


class budynek
{
public:
    winda winda1;
    winda winda2;
   
    void polozenie();
    int przywolaj( int );
};

int roznica( int w1, int w2 )
{
    if(( w1 < w2 ) < 0 )
         return( w1 - w2 ) *- 1;
    else
         return w1 - w2;
   
}


int main()
{
    budynek budynek1;
    winda winda1, winda2;
    winda1.liczba_pieter = 0;
    winda2.liczba_pieter = 0;
    int krotnosc = 0, moje_pietro, nowe_pietro;
    cout << "Start wind.\n\n Podaj liczbe pieter dla wind: \n";
    cin >> winda1.liczba_pieter;
    winda2.liczba_pieter = winda1.liczba_pieter;
   
    do {
        krotnosc++;
        cout << "\n\n\n##########################\nKrotnosc: " << krotnosc << endl;
        cout << "\nPodaj pieto na ktorym jestes: ";
        cin >> moje_pietro;
        cout << "\nPodaj pietro na ktore chesz dojechac: ";
        cin >> nowe_pietro;
       
        if( roznica( moje_pietro, winda1.numer_pietra ) < roznica( moje_pietro, winda2.numer_pietra ) ) // najblisza winda
        {
            cout << "Winda nr 1.\n";
            winda1.zmiana_pietra( nowe_pietro );
            winda1.gdzie_jest_winda();
            winda1.gdzie_ostatnio_jechala_winda();
           
        }
        else
        {
            cout << "Winda nr 2.\n";
            winda2.zmiana_pietra( nowe_pietro );
            winda2.gdzie_jest_winda();
            winda2.gdzie_ostatnio_jechala_winda();
        }
       
       
       
       
       
    } while( krotnosc <= 10 );
    //winda1::~winda();
    //winda2::~winda();
    system( "pause" );
    return 0;
}
P-53390
dervill
Temat założony przez niniejszego użytkownika
» 2012-03-30 13:57:52
Witam, Tu ponownie ja.
Powyższy kod, przydał się i jest w miarę poprawny, wprowadziłem drobne zmiany, ponieważ miał gdzie nie gdzie błędy. Dopisałem również funkcje przywoływania windy na dane piętro.

Teraz mam pytanie:
Czy na tym etapie, można już go odziać w grafikę? Przynajmniej na ruszające sie kwadraty jako windy, ponieważ o wiele łatwiej tworzyło by mi sie kolejne funkcje widząc co sie dzieje niż czytając napisy ;/
Jeżeli tak to jak zacząć owe nakładanie grafiki? Nadać współrzędne x,y windzie oraz poszczególnym piętrom?
Oraz jak całość sprawnie wyświetlić?

Link do kodu: http://codeupload.com/5432
P-53493
Chlorek
» 2012-03-30 16:49:52
Nie widzę w tym jakiegoś większego problemu. Powiedzmy, że każde piętro ma w twoim oknie 50 pixeli wysokości, mnożysz to przez numer piętra, ustawiasz na tej pozycji obrazek windy i już. Zwiększając piętra możesz zrobić powolne dodawanie/odejmowanie wysokości windy. Stwórz jakiś timer ustalający prędkość ruchu windy, potem co odpowiednią ilość czasu podczas ruchu dodawaj/odejmuj 1 pixel do/od wysokości.
P-53501
pekfos
» 2012-03-30 17:40:38
potem co odpowiednią ilość czasu podczas ruchu dodawaj/odejmuj 1 pixel do/od wysokości.
Gdy ostatnio jechałem windą, to nie poruszała się ruchem jednostajnym :P
P-53505
« 1 » 2 3 4
  Strona 1 z 4 Następna strona