Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <SFML/Network.hpp>
  3. #include <SFML/Graphics.hpp>
  4. #include <winsock2.h>
  5.  
  6. using std::cout;
  7. using std::cin;
  8.  
  9. class Player
  10. {
  11. public:
  12.     Player();
  13.  
  14.     int x, y;
  15.     sf::RectangleShape shape;
  16. };
  17.  
  18. Player::Player()
  19. {
  20.     x = y = 0;
  21.     shape.setFillColor(sf::Color::White);
  22.     shape.setSize(sf::Vector2f(50, 100));
  23. }
  24.  
  25. int main()
  26. {
  27.     sf::RenderWindow window(sf::VideoMode(400, 400), "SFML window");
  28.     window.setVerticalSyncEnabled(true);
  29.     bool isServer = false;
  30.     cout << "Server/Client ? 1/0\n";
  31.     cin >> isServer;
  32.  
  33.     if (!isServer)
  34.     {
  35.         sf::Int32 datax;
  36.         sf::Int32 datay;
  37.         Player player1, player2;
  38.         player2.shape.setFillColor(sf::Color::Red);
  39.  
  40.         sf::TcpSocket socket;
  41.         sf::Socket::Status status = socket.connect("localhost", 53000);
  42.         if (status != sf::Socket::Done)
  43.         {
  44.             cout << "Failed to connect!\n";
  45.             return 0;
  46.         }
  47.  
  48.         while (window.isOpen())
  49.         {
  50.             sf::Event event;
  51.             while (window.pollEvent(event))
  52.             {
  53.                 // Close window : exit
  54.                 if (event.type == sf::Event::Closed)
  55.                     window.close();
  56.                 if (event.type == sf::Event::KeyPressed)
  57.                 {
  58.                     if (event.key.code == sf::Keyboard::W)
  59.                     {
  60.                         player1.y--;
  61.                     }
  62.                     if (event.key.code == sf::Keyboard::S)
  63.                     {
  64.                         player1.y++;
  65.                     }
  66.                     if (event.key.code == sf::Keyboard::A)
  67.                     {
  68.                         player1.x--;
  69.                     }
  70.                     if (event.key.code == sf::Keyboard::D)
  71.                     {
  72.                         player1.x++;
  73.                     }
  74.                 }
  75.             }
  76.  
  77.             sf::Packet packet2;
  78.             if (socket.receive(packet2) != sf::Socket::Done)
  79.             {
  80.                 cout << "Couldn't recieve data from server.\n";
  81.             }
  82.             else
  83.             {
  84.                 cout << "Recieved data from server.\n";
  85.             }
  86.  
  87.             sf::Int32 enemydatax, enemydatay;
  88.             packet2 >> enemydatax;
  89.             packet2 >> enemydatay;
  90.             player2.x = enemydatax;
  91.             player2.y = enemydatay;
  92.             player2.shape.setPosition(player2.x, player2.y);
  93.             player1.shape.setPosition(player1.x, player1.y);
  94.             window.clear(sf::Color::Black);
  95.  
  96.             window.draw(player2.shape);
  97.             window.draw(player1.shape);
  98.             window.display();
  99.  
  100.             //Send our clients position to the server
  101.             sf::Packet packet1;
  102.             datax = player1.x;
  103.             datay = player1.y;
  104.             packet1 << datax << datay;
  105.  
  106.             // TCP socket:
  107.             if (socket.send(packet1) != sf::Socket::Done)
  108.             {
  109.                 cout << "Couldn't send data to server.\n";
  110.             }
  111.             else
  112.             {
  113.                 cout << "Sent data to server.\n";
  114.             }
  115.         }
  116.     }
  117.     else
  118.     {
  119.         sf::TcpListener listener;
  120.         sf::Int32 datax;
  121.         sf::Int32 datay;
  122.         Player player1, player2;
  123.         player2.shape.setFillColor(sf::Color::Red);
  124.  
  125.         // bind the listener to a port
  126.         if (listener.listen(53000) != sf::Socket::Done)
  127.         {
  128.             cout << "Error: No connections.\n";
  129.             return -1;
  130.         }
  131.         cout << "Server is listening to port 53000...\n";
  132.  
  133.         // accept a new connection
  134.         sf::TcpSocket client;
  135.         if (listener.accept(client) != sf::Socket::Done)
  136.         {
  137.             cout << "error client\n";
  138.             return -1;
  139.         }
  140.         std::cout << "Client connected: " << client.getRemoteAddress()
  141.                   << std::endl;
  142.  
  143.  
  144.         while (window.isOpen())
  145.         {
  146.             sf::Event event;
  147.             while (window.pollEvent(event))
  148.             {
  149.                 // Close window : exit
  150.                 if (event.type == sf::Event::Closed)
  151.                     window.close();
  152.                 if (event.type == sf::Event::KeyPressed)
  153.                 {
  154.                     if (event.key.code == sf::Keyboard::W)
  155.                     {
  156.                         player1.y--;
  157.                     }
  158.                     if (event.key.code == sf::Keyboard::S)
  159.                     {
  160.                         player1.y++;
  161.                     }
  162.                     if (event.key.code == sf::Keyboard::A)
  163.                     {
  164.                         player1.x--;
  165.                     }
  166.                     if (event.key.code == sf::Keyboard::D)
  167.                     {
  168.                         player1.x++;
  169.                     }
  170.                 }
  171.             }
  172.             sf::Packet packet1;
  173.             datax = player1.x;
  174.             datay = player1.y;
  175.             packet1 << datax << datay;
  176.  
  177.  
  178.             if (client.send(packet1) != sf::Socket::Done)
  179.             {
  180.                 cout << "Couldn't send data to client.\n";
  181.             }
  182.             else
  183.             {
  184.                 cout << "Data sent to client.\n";
  185.             }
  186.  
  187.  
  188.  
  189.             sf::Packet packet2;
  190.             if (client.receive(packet2) != sf::Socket::Done)
  191.             {
  192.                 cout << "Couldn't recieve data from client.\n";
  193.             }
  194.             else
  195.             {
  196.                 cout << "Recieved data from client.\n";
  197.             }
  198.  
  199.             sf::Int32 enemydatax, enemydatay;
  200.             packet2 >> enemydatax;
  201.             packet2 >> enemydatay;
  202.             cout << "enemy x: " << enemydatax << std::endl;
  203.             cout << "enemy y: " << enemydatay << std::endl;
  204.             player2.x = enemydatax;
  205.             player2.y = enemydatay;
  206.             player2.shape.setPosition(player2.x, player2.y);
  207.             player1.shape.setPosition(player1.x, player1.y);
  208.             window.clear(sf::Color::Black);
  209.  
  210.             window.draw(player2.shape);
  211.             window.draw(player1.shape);
  212.             window.display();
  213.  
  214.             //Send our clients position to the server
  215.         }
  216.         // use "client" to communicate with the connected client,
  217.         // and continue to accept new connections with the listener
  218.     }
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement