NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: 4 problémy s mým programem

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Dog
Člen
Avatar
Dog:30.5.2016 3:18
//program má načítat ve streamu (LIVE) handy z PokerStars...
//vychází z log file.
//nejsem programátor, ale stále se učím! :-))
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>

using namespace std;

int main ()
{
        ifstream file;
        file.open("C:\\Users\\Marek Schwarz\\Desktop\\PokerStars.log.0");

        //NEJLÉPE, ABY TO OTEVÍRALO KOPII PRAVÉHO LOGU

        string search0 = "MSG_0x0009-T";
        string search1 = "MSG_0x0007-T";
        string bazal = "TableAnimation::dealPlayerCards";

        //nedulezite promenne
        string find0;
        string find1;
        string air;

        //dulezite promenne
        string stack; //stack
        string bb; //bb
        string karta0; //hole find0
        string karta1; //hole find1
        string ID;

        string pomlcky = "------";
        string hvezdicky = "'*'";

        int lineCount;

                int i = 0;
                int c = 0;

while (!file.eof()){                    //POTŘEBUJI UPRAVIT PODMÍNKU CYKLU, TAK ABY ...
while(file.good())                      //VŽDY NAČETLO AKTUALIZOVANOU VERZI LOGU, ...
  {                                     //LOG SE STÁLE DOPLŇUJE A POTŘEBUJI TO ...
        getline(file, air);             //AKTUALIZOVAT ZHRUBA 3x ZA VTEŘINU.
        ++lineCount;

        if (air == bazal){              //vstupní podmínka, program má načítat ve streamu handy z pokerstars
                cout <<"Game no. ";     // počet string bazal = "TableAnimation::dealPlayerCards" se rovná reélnému počtu hand odehraných

                while (air != search0){                         //kdyz se air nerovná MSG_0x0009-T, pustí to do cyklu
                        file >> air;                                    //tyto podmínky načítají karty
                        while(air == search0){
                                file >> ID >> find0 >> find0;

                                if (find0 == pomlcky){
                                        while(air == search0){
                                                file >> air;
                                                while(air == search0){
                                                        file >> find0 >> find0 >> find0;
                                                        file >> karta0 >> find0 >> karta1;
                                                        cout << ++i << ", ID " << ID << " holecards " << karta0 << karta1 ;
                                                }
                                        }
                                        break;
                                }

                                else{
                                file >> karta0 >> find0 >> karta1;
                                cout << ++i << ", ID " << ID << ", holecards " << karta0 << karta1 ;
                                }
                                break;
                        }
           }

                while (air != search1){                 //kdyz se air nerovná MSG_0x0007-T, pustí to do cyklu
                        file >> air;                            ////tyto podmínky načítají bb a stack
                        while(air == search1){
                                file >> find1 >> find1 >> find1 >> find1 >> find1 >> find1 >> find1;
                                if(find1 == hvezdicky){
                                        file >> find1 >> find1 >> stack >> bb;
                                        cout <<  ", stack " << stack << ", bb " << bb << ", Radek " << lineCount << endl;
                                        break;
                                }
                                else{
                                        cout <<  ", stack NENACTEN " << ++c << ", bb " << 0 << ", Radek " << lineCount << endl; //tohle tady nebude, doufám, že se to podaří načíst
                                        break;
                                        // TADY BYCH POTŘEBOVAL, ABY TO ZAČALO VYHLEDÁVAT SMĚREM NAHORU (což asi není možné)...
                                        // A NAŠLO PRVNÍ string hvezdicky = "'*'", POTÉ BYCH SI UŽ PORADIL, A JESTLI BY TO NEBYLO...
                                        // MOŽNÉ, TAK ABY TO NAČETLO PŘEDCHOZÍ lineCount A POTÉ HLEDALO V ROZMEZÍ lineCount-1 PO...
                                        // lineCount (SAMOZŘEJMĚ, ŽE BYCH TO DAL DO NĚJÁKÉHO POLE, ZE KTERÉHO BYCH NAČETL PŘEDCHOZÍ)...
                                        // lineCount.

                                        // DÁLE BY MĚ ZAJÍMALO, PROČ KDYŽ ODDĚLÁM: ...
                                        /*
                                                cout <<  ", stack NENACTEN " << ++c << ", bb " << 0 << ", Radek " << lineCount << endl;
                                                break;
                                        */
                                        // TAK TO ZOBRAZÍ JEN 156 hand NAROZDÍL OD PŮVODNÍCH 267.
                                        // SPRÁVNĚ JICH MÁ BÝT 279. KDYŽ ODDĚLÁM I VŠECHNY PODMÍNKY NAČÍTÁNÍ KARET, STACKU A BB...
                                        // TAK TO ZOBRAZÍ PŘESNĚ 279 HAND, COŽ JE S MÝM MOMENTÁLNÍM C++ UMEM NAD VRCHOLY MÉHO CHÁPÁNÍ :-(.
                                }
                        }

           }
}
}
}
return 0;
}

//DÍKY MOC ZA KAŽDÝ TIP, JAK TO UDĚLAT LÉPE :-))
 
Odpovědět
30.5.2016 3:18
Avatar
Andrew
Člen
Avatar
Andrew:8.8.2016 9:16

Ahoj, pamatuji si že jsem kdysi potřeboval překreslovat obraz každých x sekund a právě na to byla funkce timer, která by se mohla hodit i tobě. Bohužel si nepamatuji jak se přesně jmenovala. Co se týče změny podmínky domnívám se, že není potřeba upravovat podmínku cyklu. Pokud jsem to správně pochopil stačí aby se vždy za 1/3 sekund zavolala funkce timer funkci aktualizovat, která udělá co potřebuješ.

Nahoru Odpovědět
8.8.2016 9:16
Scientia est potentia - Latinské přísloví
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 2 zpráv z 2.