.[ ČeskéHry.cz ].
Vícevláknový server a client - potebuji navod
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
mival



Založen: 28. 08. 2010
Příspěvky: 85

PříspěvekZaslal: 8. říjen 2011, 16:05:24    Předmět: Odpovědět s citátem

Uz to funguje jak ma, ale radsi to jeste otestuji Smile.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mival



Založen: 28. 08. 2010
Příspěvky: 85

PříspěvekZaslal: 9. říjen 2011, 10:28:45    Předmět: Odpovědět s citátem

Dam sem kod, kdyby jste vydeli nejakou chybu nebo neco co bych mohl nejak osetrit, reknete. Vlakna si tam ale hodlam nechat:

SERVER:
kód:
// ENATHORIA SERVER
//
#define WM_SOCKETEVENT  (WM_USER + 1)
#include "stdafx.h"

   
   vector <string> hraci(0);
   vector <string> novypole(0);
   string moznosti = "\n/stop a /vypnout - VYPNE SERVER \n/zavrit a /close - VYPNE PROGRAM A SERVER  \n/start   - NAHODI SERVER   \n/kick>Koho>duvod  - VYKOPNE UZIVATELE \n/size a /velikost  - Vypise velikosti poli  \n/?, /help a /pomoc - ZOBRAZI NAPOVEDU \n  ";
   SOCKADDR_IN addr;
   int addrlen = sizeof(addr);
   SOCKET sListen;
   SOCKET sConnect;
   int pripojenych = 0;
   vector<SOCKET> sockets(0);
   long answer;
   char message[100];
   char uvitani[100];
   string strmessage;
   string uvitacipozdrav = "Vitam te na nasem serveru.";

////
//////SOUBOR ULOZ
/////
bool uloz(string jmenosouboru, string co)
{
  ofstream SouborW(jmenosouboru, ios::app);
  SouborW << co;
  return true;
}
   
/////
/////////// SOUBOR NACTI
/////
string nacti(string jmenosouboru)
{
  string obsah;
  string line;
  ifstream myfile (jmenosouboru);
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      obsah += line;
    }
    myfile.close();
  }

  return line;
}

   ////
   //////// EXPLODE SPLIT
   ////
vector<string> explode(string str, string cim)
{   
   vector<string> text2(1);
    string momentalnistring; // lepsi kdyz je to char kdyz pristupujes k charu
    int polecislo = 0;
    for (int i=0; i < str.length(); i++)
    {
         momentalnistring= str.at(i);
         if(momentalnistring == cim)  // misto retezce char (tzn apostrofy)
         {
        polecislo += 1;
          text2.push_back("");
         }
         else
         {
         text2[polecislo] += momentalnistring; // nevim proc to tam davas
         }
    }


    return text2;
}

 


   ///
   ///////// PRIJMA KLIENTY
   ///
   class Prijmac : public IRunnable {
   public:
      Prijmac() {
         _pokracovani = true;   
      }
      virtual unsigned long run() {
         while(_pokracovani) {
      // run this thread procedure
      sConnect = accept(sListen, (SOCKADDR*)&addr, &addrlen);
      if(sConnect!= INVALID_SOCKET)
      {
         
         cout<<"Pripojil se ";
         answer = recv(sConnect, message, sizeof(message), NULL);
         answer = send(sConnect, uvitani,strlen(uvitani)+1,NULL);
          cout << message << ".\n";
         novypole = explode(message,"|");
         hraci.push_back(novypole[1]);
         sockets.push_back(sConnect);      
         u_long arg=1;
         ioctlsocket(sockets[sockets.size()-1], FIONBIO, &arg);
         pripojenych++;
          listen(sListen,1);
      }
      else
      {
      }
   
        }
         
         return 0;
      }
      virtual void stop() {
         _pokracovani = false;
      }
   protected:
      bool _pokracovani;      
   };
   ///
   //////// CTE ZPRAVY OD KLIENTU
   ///
      class Zpravy : public IRunnable {
      public:
      Zpravy() {
         _pokracovani = true;   
      }
      virtual unsigned long run() {
         while(_pokracovani) {

      if(sockets.size() != 0)
      {
      for(int i=0; i < sockets.size();i++)
      {   
      u_long arg = i+1;
      if(ioctlsocket(sockets[i], FIONREAD, &arg)==SOCKET_ERROR)
      {
      }
      else
      {
         if(!(recv(sockets[i], message, sizeof(message), NULL) == SOCKET_ERROR))
         {
         answer = recv(sockets[i], message, sizeof(message), NULL);
         strmessage = message;
         string text= message;
         vector<string>poletextu = explode(text,"|");
         string typ = poletextu[0];

            if(poletextu[0] == "Zprava")
            {
               if(poletextu[2] !="" || poletextu[1]!="")
               {
               cout <<poletextu[1] << ":" << poletextu[2] << "\n";
               }
            }
            else if(poletextu[0] == "New")
            {
            cout << poletextu[1] << " prisel.\n";
            }
         Rozesli(message);   
         
         }
        }
      }
      }
      }
         return 0;
      }
      virtual void Rozesli(char co[100])
      {
         for(int a=0; a < sockets.size();a++)
         {
            if(!(send(sockets[a], co,strlen(co)+1,NULL)==SOCKET_ERROR))
            {
            }
            else
            {
               cout << hraci[a] << "(" << sockets[a] << ")se nejspise odpojil. \n";
            closesocket(sockets[a]);

            sockets.erase(sockets.begin()+a);
            hraci.erase(hraci.begin()+a);
            pripojenych-= 1;
            }
         }
      
      }
      virtual void stop() {
         _pokracovani = false;
      }
   protected:
      bool _pokracovani;      
   };
   

 
   Prijmac *obj2;
   Thread *prijmac;
   Zpravy *obj;
   Thread *zpravy;


void CloseServer()
{
   prijmac->stop();
   zpravy->stop();
        delete prijmac;
   delete zpravy;
   for(int a=0; a < sockets.size();a++)
   {
   answer = send(sockets[a], "odpojse|Server byl vypnut nebo necekane spadnul, omlouvame se.",sizeof("odpojse|Server byl vypnut nebo necekane spadnul, omlouvame se."),NULL);
   }
   closesocket(sConnect);
   closesocket(sListen);
   for(int a=0; a < sockets.size();a++)
   {
   closesocket(sockets[a]);
   }
}
void main()
{
   // Nastaveni nadpisu okna
   SetConsoleTitle( "Enathoria Client 0.6.0.1" );   
   // START SERVERU
start:   
   /// PROMENE A JEJICH PLNENI
   string souborconfig;
   //// NACTENI KONFIGURACNIHO SOUBORU
   souborconfig= nacti("config.conf");
   vector<string> conf_prikazy(1);
   conf_prikazy = explode(souborconfig,";");
   vector<string> ipadresa(1);
   strcpy(uvitani, conf_prikazy[1].c_str());
   ipadresa= explode(conf_prikazy[0],":");
   WSADATA wsaData;
   WORD DLLVERSION;
   DLLVERSION = MAKEWORD(2,1);
   answer = WSAStartup(DLLVERSION, &wsaData);
   ///// IP ADRESA
   const char* ip=ipadresa[0].c_str();
   //// NAPLNENI PORTU
    int port= atoi(ipadresa[1].c_str());
   sConnect = socket(AF_INET, SOCK_STREAM, NULL);
   addr.sin_addr.s_addr = inet_addr(ip);
   addr.sin_family = AF_INET;
   addr.sin_port = htons(port);
   sListen= socket(AF_INET, SOCK_STREAM, NULL);
   bind(sListen,(SOCKADDR*)&addr, sizeof(addr));
   listen(sListen, SOMAXCONN);
   cout << "\n";

      ///
      ///// VLAKNA   THREADY
      ///
      obj2 = new Prijmac();
      prijmac = new Thread(obj2);
      obj = new Zpravy();
      zpravy = new Thread(obj);

      prijmac->start();
      zpravy->start();

   


   
   cout << "Cekam na klienty.\n\n\n PRIKAZY: Piste pred ne / - Moznosti:" << moznosti;    
   
      vector<string> prikazy(1);
   prikazy.push_back("");
   prikazy.push_back("");
   vector<string> prikaz(1);
   prikaz.push_back("");

   ///
   ///// PRIKAZOVY RADEK SERVER ADMINA
   ///
   prikazovyradek:   
   char duvod[100];
   string text;
   char prikazovy_znak = '/';
   getline(cin,text);
   // POUZE POKUD ZADA ZNAK PRO PRIKAZ
   if(text.at(0) == prikazovy_znak)
   {
   prikazy = explode(text, "/");
   prikaz = explode(prikazy[1], ">");
   if(prikaz[0]=="stop" || prikaz[0]=="vypnout")
   {
      //ADMIN chce vypnout server

   cout << "Vypnuli jste server.\n";
   }
   else if(prikaz[0]=="start")
   {   
   CloseServer();
   goto start;
   }
   else if(prikaz[0]=="?" || prikaz[0]=="help" || prikaz[0]=="pomoc")
   {
   cout << "\n////\n/////Prikazy:"<< moznosti;
   }
   else if(prikaz[0]=="size" || prikaz[0] == "velikost")
   {
   cout <<"Pocet poli v promenne sockets:"<< sockets.size()<<"\n";
   cout <<"Pocet poli v promenne hraci:"<< hraci.size()<<"\n";
   }
   else if(prikaz[0]=="kick")
   {
   int id=-1;
   cout<<"Vykopnuti "<< prikaz[1] <<".\n";
   for(int c=0;c<hraci.size();c++)
   {
   if(hraci[c] == prikaz[1])
   {
   id = c;
   break;
   }
   }
   if(id == -1)
   {
   cout<<"Spatne jste zadal hrace!\n";
   }
   else
   {
   prikaz[2] = "Kick|"+prikaz[2];
   strcpy(duvod, prikaz[2].c_str());
   send(sockets[id],duvod,strlen(duvod)+1,NULL);
   closesocket(sockets[id]);
   sockets.erase(sockets.begin()+id);
   hraci.erase(hraci.begin()+id);
   pripojenych-= 1;   
   }
   }
   else if(prikaz[0] == "close" || prikaz[0] == "zavrit")
   {
   CloseServer();
   exit(1);
   }
   else
   {
   cout<<"Spatny prikaz!\n";
   }
   }
   else
   {
   cout << "POZOR !! Nenapsal jste / pred prikaz !! :).\n";
   }
   goto prikazovyradek;
   

}


CLIENT:
kód:
////
/////// ENATHORIA CLIENT by MiVal.
////


#include "stdafx.h"
#include "Client.h"

using namespace std;
//
////
///// PROMENNE
////
//

char message[100];
char messageforsend[100];
string confirm;
string prezdivka;
string strmessage;
long answer;
SOCKET sConnect;
SOCKADDR_IN addr;
WSADATA wsaData;
void CloseClient();
////
//////  EXPLODE   SPLIT
////
vector<string> explode(string str, string cim)
{   
   vector<string> text2(1);
    string momentalnistring; // lepsi kdyz je to char kdyz pristupujes k charu
    int polecislo = 0;
    for (int i=0; i < str.length(); i++)
    {
         momentalnistring= str.at(i);
         if(momentalnistring == cim)  // misto retezce char (tzn apostrofy)
         {
        polecislo += 1;
          text2.push_back("");
         }
         else
         {
         text2[polecislo] += momentalnistring; // nevim proc to tam davas
         }
    }


    return text2;
}
////
////// ULOZ
////
bool uloz(string jmenosouboru, string co)
{
  ofstream SouborW(jmenosouboru, ios::app);
  SouborW << co;
  return true;
}
 /////
//////// SOUBOR NACTI
/////
string nacti(string jmenosouboru)
{
  string obsah;
  string line;
  ifstream myfile (jmenosouboru);
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      obsah += line;
    }
    myfile.close();
  }

  return line;
}

////
////// PRIJMAC ZPRAV
////

class Zpravy : public IRunnable {
      public:
      Zpravy() {
         _pokracovani = true;   
      }
      virtual unsigned long run() {
         while(_pokracovani) {
            char message[100];
            answer = recv(sConnect, message, sizeof(message), NULL);
            string text= message;
            vector<string>poletextu = explode(text,"|");
            string typ = poletextu[0];
            if(poletextu[0] == "odpojse")
            {
            cout << poletextu[1] << "\n";
            CloseClient();
            }
            else if(poletextu[0] == "Zprava")
            {
               if(poletextu[1] != prezdivka)
               {
                  cout <<  poletextu[1] << " :"<< poletextu[2] << "\n";
               }

            }
            else if(poletextu[0] == "New")
            {
            cout << "Vitej" << poletextu[1] << ".\n";
            }
            else if(poletextu[0] == "Kick")
            {
            cout<< "Byl jsi vyhozen, Duvod:"<<poletextu[1]<<"\n";
            CloseClient();
            }
      }
         return 0;
      }

      virtual void stop() {
         _pokracovani = false;
      }
   protected:
      bool _pokracovani;      
   };

///
/////// VYTVORENI VLAKEN
///
Zpravy * obj = new Zpravy();
Thread * zpravy = new Thread(obj);

///
/////// Close CLIENT   VYPNE PRIPOJENI CLIENTA ,...
///
void CloseClient()
{
   zpravy->stop();
   delete zpravy;
   closesocket(sConnect);
}   


///
/////// MAIN - HLAVNI FUNKCE - RIDICI CENTRUM
///
void main ()
{

   /////
   /////// NASTAVENI
   /////
   string souborconfig;
   souborconfig= nacti("config.conf");
   vector<string> ipadresa(1);
   ipadresa= explode(souborconfig,":");
   SetConsoleTitle( "Enathoria Client 0.6.0.1" );
   WORD DLLVersion = MAKEWORD(2,1);
   answer = WSAStartup(DLLVersion, &wsaData);
   int addrlen = sizeof(addr);
   sConnect = socket(AF_INET,SOCK_STREAM,NULL);
   const char* ip=ipadresa[0].c_str();
   addr.sin_addr.s_addr = inet_addr(ip);
   addr.sin_family = AF_INET;
    int port= atoi(ipadresa[1].c_str());
   addr.sin_port = htons(port);
prezdivka:

   cout << "Zadej svou prezdivku:";
   getline(cin,prezdivka);
   if(prezdivka == "")
goto prezdivka;

   cout << "\nChces se pripojit na server? [A/N] " << endl;
   getline(cin,confirm);
   if(confirm != "A")
   {
   exit(1);
   }
   else if(confirm == "A")
   {
   connect(sConnect, (SOCKADDR*)&addr, sizeof(addr));
            

   strmessage = "New|" + prezdivka;
   strcpy(messageforsend, strmessage.c_str());
   answer = send(sConnect, messageforsend,strlen(messageforsend)+1,NULL);   
   answer = recv(sConnect, message, sizeof(message), NULL);
   strmessage = message;
   cout << strmessage << endl;

   }
   //
    ////  SPUSTENI VLAKEN
   //
      zpravy->start();

   A:
    string yourmessage;
    const char *yourmsg = yourmessage.c_str();
    getline(cin,yourmessage);
    yourmsg=  yourmessage.c_str();
    if(yourmsg != "")
    {
      string zprava = "Zprava|"+prezdivka+"|"+yourmsg;
      strcpy(messageforsend, zprava.c_str());
      answer = send(sConnect, messageforsend,strlen(messageforsend)+1,NULL);
    }
   goto A;

system("pause");
closesocket(sConnect);
}



Naposledy upravil mival dne 9. říjen 2011, 16:50:35, celkově upraveno 2 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 9. říjen 2011, 13:53:03    Předmět: Odpovědět s citátem

Doufam, ze ti "nerozslapu vsechny tve hracky" napsanim toho prospevku. Jen bych te chtel motivovat aby ses vydal spravnym smerem, pokud to myslis s programovanim vazne.

Hodnoceni kodu bych videl jako "Kravina na kvadrat, výplod šílence, debilní paskvil" ... tot slova klasika.

Chapu, je ti 13, ocividne si nejaky cas travil hranim si s nejakym klonem Basicu pripadne nejakeho sileneho skriptovaciho jazyku. A je to poznat. C/C++ znas jen z rychliku. Naucil ses sesmolit neco co sice funguje, urcite se ted citis jako nejvetsi borec a hacker na svete, ale ja osobne bych z neceho takoveho nemel dobry pocit.

Takze moje doporuceni je si sednout a precist nejakou knizku o C++. Nejspis rovnou Mistrovstvi v C++. Dozvis se tam ruzne zasady psani kodu, rozdeleni kodu do souboru, nepouzivani stejnych implementaci funkci, pouzivani sablon ze STL...

Pokud jde o tvuj kod, tak me jeste zarazilo pouzivani GOTO. To neni v C++ zrovna koser. Bezesporu ma sva vyuziti, ve chvíli kdy zjednodusi kod, ktery by se jinak staval nesrozumitelnym. V tvem pripade je ovsem pouzite naprosto zbytecne. Pro nekonecny cyklus stejne tak jako pro opakovani kodu s podminkou na konci ma C++ syntakticke konstrukce. To jen utvrzuje muj pohled na to, ze tvou prioritou by melo byt pokorne studium knih a zlepsovani tvych schopnosti v tomto smeru.

P.S.: i po esteticke strance je to katastrofa, a priste spis pastebin a nebo podobna sluzba, kde se zvyraznuje syntaxe.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 9. říjen 2011, 16:43:36    Předmět: Odpovědět s citátem

Plus tam alokuje paměť přes new a nikde to neuklízí Rolling Eyes Dotyčný by se měl vrátit na zem a vyprdnout se na na C++... a začít pěkně s C, pokud to myslí vážně. Objekty každého hned zkazí Smile Tam se člověk naučí předávat pointery a pracovat s pamětí a není to taková ultra-mega-čunačina jako C++ Smile .. hlavně pro začátečníka
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 9. říjen 2011, 17:09:54    Předmět: Odpovědět s citátem

No já jsem na takovéto "vykašli se na C++ a nejdříve se nauč C" trochu alergický. Správné programátorské návyky se naučíš stejně dobře na C jako na C++. Vždyť rozdíl je akorát v tom, že místo alloc a free píšeš new a delete a v tom, že "metodám" se pointer na "objekt" předává automaticky. Uznávám, že streamy jsou specialitka, ale k získání správných návyků nepotřebuješ nutně pochopit, jak fungujou streamy.

Dle mého názoru, o kterém jsem nebývale pevně přesvědčen, se programovat naučíš na C++. Musíš trénovat, zpočátku nepoužívat cizí knihovny, zpočátku nepoužívat ani std. Až pochopíš, jak jsou implementovány a jak fungují, pak teprve je můžeš s čistým svědomím použít. A hlavně pochopit do hloubky správu paměti - pointery, reference, dynamicky alokované proměnné, výhoda staticky alokovaných objektů, kopírující konstruktory a tak. Z toho ti pak automaticky vyplyne účel a smysl OOP.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 9. říjen 2011, 17:14:57    Předmět: Odpovědět s citátem

Číst si nějakou literaturu (Mistrovství v C++ apod.) je super. Rozhodně přečti pár knih.

Není důležitý být nejlepší programátor na světě v tvém věku teď, ale asi tak za 10 let. Smile A to jsem si skoro jistý, že budeš.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 9. říjen 2011, 18:01:22    Předmět: Odpovědět s citátem

TeaTime napsal:
Dle mého názoru, o kterém jsem nebývale pevně přesvědčen, se programovat naučíš na C++. Musíš trénovat, zpočátku nepoužívat cizí knihovny, zpočátku nepoužívat ani std.


Jo.. na C++ se naučíš programovat stejně jako na čemkoliv jiném (skoro), ale C++ je primárně objektový jazyk. Pokud z C++ vyhodíš objekty, tak máš zase C. Nějak mi přijde, že se nějak nerozlišuje v poslední době C a C++. Cílem bylo myšleno nepsat v C++, ale v C.. tudíž začít se učit procedurální programování a pak přejít na objekty.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



Založen: 28. 07. 2007
Příspěvky: 290

PříspěvekZaslal: 9. říjen 2011, 18:33:58    Předmět: Odpovědět s citátem

Perry, píšeš kraviny. C++ má k objektově orientovanému jazyku celkem daleko, a je to jen jedno z mnoha paradigmat, které v něm lze aplikovat, ne lepší či horší než sekvenční, procedurální, funkcionální či generické.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 9. říjen 2011, 19:46:24    Předmět: Odpovědět s citátem

Jo, objektovost není zas tak závislá na jazyku. Na objekty s dědičností a polymorfismem stačí jen nějaké struktury a možnost přiřadit adresu funkce do proměnné (ukazatel na funkci, handle na funkci, atd.), ze které se ta funkce dá později volat. Toho se dá dosáhnout ve velkém množství jazyků, které typ třídy nemají, přesto se v nich dá psát objektově (např C nebo Lua).
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crypton



Založen: 14. 05. 2009
Příspěvky: 306
Bydliště: The Void

PříspěvekZaslal: 9. říjen 2011, 20:10:23    Předmět: Odpovědět s citátem

Dám ti asi nejlepší radu ze všech: Vyser se na to, a jdi raději nahánět holky, a blbni dokud můžeš, věk na to máš a motivace do budoucna je to doslova univerzální.

Až budeš starší tak budeš moct vzpomínat na bouřlivou pubertu a krásně prožité chvíle, a né na nějaké usrané C++ Wink
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 10. říjen 2011, 09:38:19    Předmět: Odpovědět s citátem

Eosie napsal:
Číst si nějakou literaturu (Mistrovství v C++ apod.) je super.

Ano, můžete si s wenym v naivitě podat ruce Wink Kdo se v tomhle věku učí, tak chce hned vidět nějaký výsledek, a těžko vydrží číst 14 dní knížku jen nanečisto nebo s trapnými příklady. "Správně" se to klidně naučí až později

Spíš by se ale měl vykašlat na C/C++ a učit se algoritmy v něčem přívětivějším, třeba C#
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 10. říjen 2011, 15:18:45    Předmět: Odpovědět s citátem

Mem -- ja nevim, ale ja v tom veku studoval QPascal z 600-strankove knizky a problem jsem s tim nemel.
Nouma -- hledani holek a programovani se nutne nemusi vylucovat, vsak nebude makat 24 hodin denne...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 10. říjen 2011, 23:32:48    Předmět: Odpovědět s citátem

Pro moderátora: Tohle téma bych přesunul z C++ spíš do Inkubátoru. Cool
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 11. říjen 2011, 06:59:42    Předmět: Odpovědět s citátem

Al napsal:
Pro moderátora: Tohle téma bych přesunul z C++ spíš do Inkubátoru. Cool


Pro Aleyho od Nalima Karcinoma: toto je ciste C++ tema. Neresi se tu zadny konkretni projekt v jeho zarodku. Nevidim duvod "Inkubatorovat"
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Yossarian



Založen: 28. 07. 2007
Příspěvky: 274
Bydliště: Šalingrad

PříspěvekZaslal: 11. říjen 2011, 08:02:44    Předmět: Odpovědět s citátem

Fila napsal:
Mem -- ja nevim, ale ja v tom veku studoval QPascal z 600-strankove knizky a problem jsem s tim nemel.
Nouma -- hledani holek a programovani se nutne nemusi vylucovat, vsak nebude makat 24 hodin denne...


Radsi pekne studuj. Ja taky studoval, holky nahanel jen okrajove, a ted mam pomerne dobrou praci, a i cas na zenske Wink znami, kteri to delali opacne (v mladem veku chteli hledat baby/chlapy) ted umi hovno, v lepsim pripade maji vystudovanou fildu, nemaji praci a jsou z toho nestastni. he he he.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
Strana 5 z 6

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna