Skocz do zawartości

Zablokowane Konsola w wątku.


Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem - przepisuje serwer do C++ i mam problem z konsolą ponieważ zatrzymywała ona cały program, więc dałem ją do innego wątku, ale teraz jeśli coś napiszę i wyświetli się jakiś text to wychodzi coś takiego "jakiś textGracz edie dołączył do gry." i nie wiem jak zrobić żeby przechwytywany tekst był zawsze w osobnej lini?

Opublikowano

Może dam kod

DWORD WINAPI ThreadProc() 
{ 
    while(1)
    {
        string tekst;
        cin >> tekst;
        clearbuffer(0);
        writebyte(8,0);
        const char* messageconst=tekst.c_str();
        char* charmessage=const_cast<char*>(messageconst);
        writestring(charmessage,0);
        for(int i=0; i<=maxplayers; i++) {
            if(Players[i].InUse) {
                sendmessage(Players[i].Sock, "", 0, 0);
            }
        }
    }
    return TRUE; 
}

 

DWORD threadID; 
HANDLE hThread = CreateThread( NULL, 0,  (LPTHREAD_START_ROUTINE)ThreadProc, 0, 0, &threadID );

Wszelki tekst jest wypisywany cout.

Opublikowano

Źle mnie zrozumieliście, chodzi mi o to że pisze coś w konsoli(np: "cześć") nie naciskając entera i nagle wchodzi gracz to tekst się łączy ("cześćEdie join the game").

Opublikowano

Po pierwsze to \n, a po drugie nie chodziło mi o to żeby "Edie join the game" było na dole tylko "cześć", chodzi o to że jeszcze nie "potwierdzony" tekst enterem był zawsze na dole.

  • 2 tygodnie później...
Opublikowano

A jak instalujesz Linuxa to jak myślisz jak oni tą instalację konsolową robili? Też tam polega to na poleceniach "clear" itp. Może średni przykład, ale z tego co widziałem to migać to może, ale przy okropnym zawaleniu procka.

Opublikowano

A jak instalujesz Linuxa to jak myślisz jak oni tą instalację konsolową robili? Też tam polega to na poleceniach "clear" itp. Może średni przykład, ale z tego co widziałem to migać to może, ale przy okropnym zawaleniu procka. Yhm.

 

Edit: Pokazał mi się komunikat o Antyfloodowaniu i miałem odczekać 30 sekund. Ciekawe, że jednak wysłało post...

Opublikowano

Hej.

Jesli to jest to co mi pisales, to roziazanie jest bardzo proste.

Po prostu umiesc kursor w pozycji x,y

i dopiero wtedy pisz to co chcesz.

Mazanie calego ekranu faktycznie moze spowodowac miganie.

 

Kiedys probowalem nauczyc sie c+ napisalem programik ktory szuka najkrotszej (najtanszej drogi).

Program zasypuje tablice liczbami 0-9 a nastepnie wyszukuje drogi z jednego rogu ekranu do drugiego zeby suma pol przez ktore przejdzie droga byla jak najmniejsza.

 

Sam zreszta zobacz, programik jest krotki, zaraz go zamieszcze.

Wybierz 1 losowe zapelnianie i zobacz np: animacje napisu.

 

Juz jest: POSZUKIWACZ NAJKROTSZEJ DROGI

https://gmclan.org/up7949_3_Poszukiwacz_naj...j_drogi_by.html

Opublikowano

@taxi_driver: Twój program nie wyszukuje najtańszej drogi. Założyłbym się, że gdybyś napisał program, który próbuje dojść z l.g. rogu do p.d. rogu, ale tym razem nie wybierał mniejszej z dwóch wartości (prawo-dół), tylko losował którąkolwiek, to koszt byłby mniejszy częściej niż w Twoim algorytmie.

Opublikowano
@taxi_driver: Założyłbym się, że gdybyś napisał program, który próbuje dojść z l.g. rogu do p.d. rogu, ale tym razem nie wybierał mniejszej z dwóch wartości (prawo-dół), tylko losował którąkolwiek, to koszt byłby mniejszy częściej niż w Twoim algorytmie.

 

Przegrałbyś. :)

  • 2 tygodnie później...
Opublikowano

Żeby nie robić spamu pytam w tym temacie.

Przeładowałem sobie operator << do dodawanie tekstu do konsoli:

konsola& operator<< (string text)
    {
        tekst[linika] += _pl(text);
        draw();
        return (*this);
    }

jak dodać do tego endl takie jak w cout?

Opublikowano

np:

 

konsola& operator<< (uint32 id)
    {
        if(id==ENDL)
        {
             //end line
         }
    }

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...