Advertisement
Guest User

GameLobby

a guest
Oct 2nd, 2015
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class Player{
  8.     public:
  9.         Player(const string& name = "");
  10.         string GetName() const;
  11.         Player* GetNext() const;
  12.         void SetNext(Player* next);
  13.     private:
  14.         string m_Name;
  15.         Player* m_pNext;        //(ponteiro)aponta para o proximo jogador da lista
  16. };
  17.  
  18. Player::Player(const string& name):
  19.     m_Name(name),
  20.     m_pNext(0)
  21. {}
  22.  
  23. string Player::GetName() const{
  24.     return m_Name;
  25. }
  26.  
  27. Player* Player::GetNext() const{
  28.     return m_pNext;
  29. }
  30.  
  31. void Player::SetNext(Player* next){
  32.     m_pNext = next;
  33. }
  34.  
  35. class Lobby{
  36.     friend ostream& operator <<(ostream& os, const Lobby& aLobby);
  37.    
  38.     public:
  39.         Lobby();
  40.         ~Lobby();
  41.         void AddPlayer();
  42.         void RemovePlayer();
  43.         void Clear();
  44.     private:
  45.         Player* m_pHead;
  46. };
  47.  
  48. Lobby::Lobby():
  49.     m_pHead(0)
  50. {}
  51.  
  52. Lobby::~Lobby(){
  53.     Clear();
  54. }
  55.  
  56. void Lobby::AddPlayer(){
  57.     //cria um novo jogador
  58.     cout << "Entre um nome de um jogador: ";
  59.     string name;
  60.     cin >> name;
  61.     Player* pNewPlayer = new Player(name);
  62.    
  63.     //se a lista tiver vazia, faça o novo jogador ser a cabeça
  64.     if(m_pHead == 0){
  65.         m_pHead = pNewPlayer;
  66.     }else{  //ou, ache o final da fila e add ele
  67.         Player* pIter = m_pHead;
  68.         while(pIter -> GetNext() != 0){
  69.             pIter = pIter -> GetNext();
  70.         }
  71.         pIter -> SetNext(pNewPlayer);
  72.     }
  73. }
  74.  
  75. void Lobby::RemovePlayer(){
  76.     if(m_pHead == 0){
  77.         cout << "O Lobby esta vazio ninguém pra sair!\n";
  78.     }else{
  79.         Player* pTemp = m_pHead;
  80.         m_pHead = m_pHead -> GetNext();
  81.         delete pTemp;
  82.     }
  83. }
  84.  
  85. void Lobby::Clear(){
  86.     while(m_pHead != 0){
  87.         RemovePlayer();
  88.     }
  89. }
  90.  
  91. ostream& operator<<(ostream& os, const Lobby& aLobby){
  92.     Player* pIter = aLobby.m_pHead;
  93.     os << "\nAqui esta o Lobby: \n";
  94.     if(pIter == 0){
  95.         os << "O Lobby esta vazio.\n";
  96.     }else{
  97.         while(pIter != 0){
  98.             os << pIter -> GetName() << endl;
  99.             pIter = pIter -> GetName();
  100.         }
  101.     }
  102.     return os;
  103. }
  104.  
  105. int main(){
  106.     Lobby myLobby;
  107.     int choice;
  108.    
  109.     do{
  110.         cout << myLobby;
  111.         cout << "\nGAME LOBBY\n";
  112.         cout << "0 - Saia do programa.\n";
  113.         cout << "1 - Adicione o jogador ao lobby.\n";
  114.         cout << "2 - Retire um jogador do lobby.\n";
  115.         cout << "3 - Limpar lobby.\n";
  116.         cout << endl << "Entre a escolha: ";
  117.         cin >> choice;
  118.        
  119.         switch(choice){
  120.             case 0: cout << "Ate mais.\n"; break;
  121.             case 1: myLobby.AddPlayer(); break;
  122.             case 2: myLobby.RemovePlayer(); break;
  123.             case 3: myLobby.Clear(); break;
  124.             default: cout << "Isso nao foi uma escolha valida.\n";
  125.         }
  126.     }while(choice != 0);
  127.    
  128.     return 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement