SFML网络问题
SFML Networking problems
我是SFML网络的新手,我认为我做错了,我不断得到这个代码的错误。我所要做的就是发送位置的数据包,然后在另一个窗口上更新它们,这是我到目前为止所做的。
#include <iostream>
#include <string>
#include "player.h"
#include "gameAssets.h"
#include "zombie.h"
using namespace std;
sf::Vector2u size(1000, 800);
bool focused = true;
sf::Vector2f newPosition, oldPosition;
//Multiplayer code.
//sf::Thread* thread = 0;
char choice;
sf::Mutex globalMutex;
sf::TcpSocket socket;
sf::IpAddress ip;
void sendandReceiveData(){
//Server half
sf::Packet packetSendX, packetSendY;
packetSendX << oldPosition.x;
packetSendY << oldPosition.y;
socket.send(packetSendX);
socket.send(packetSendY);
sf::Packet packetReceiveX, packetReceiveY;
//Client half
socket.receive(packetReceiveX);
socket.receive(packetReceiveY);
packetReceiveX >> newPosition.x;
packetReceiveY >> newPosition.y;
cout << "Other Players X: " << newPosition.x << endl;
cout << "Other Players Y: " << newPosition.y << endl;
}
int main(){
sf::RenderWindow window(sf::VideoMode(size.x, size.y), "Zombie Defence", sf::Style::Titlebar | sf::Style::Close);
//Limited fps so we dont need deltaTime...
window.setFramerateLimit(60);
window.setVerticalSyncEnabled(true);
player player;
zombie zombie;
gameAssets gameAssets;
player.initialize();
zombie.initialize();
gameAssets.initialize();
gameAssets.loadContent();
zombie.loadContent();
player.loadContent();
//Multiplayer code.
system("CLS");
cout << "Multiplayer Dev Build 0.1" << endl;
cout << " " << endl;
cout << "Enter (S) for server or (C) for client." << endl;
cin >> choice;
if (choice == 'S'){
sf::TcpListener listener;
listener.setBlocking(false);
listener.listen(5000);
listener.accept(socket);
cout << "New Client Connected: " << socket.getRemoteAddress() << endl;
}
else if (choice == 'C'){
cin >> ip;
if (socket.connect(ip, 5000) == sf::Socket::Done){
cout << "Connected to server" << endl;
}
}
while (window.isOpen()){
sf::View view = player.getView();
sf::Vector2f playerPosition = player.getPosition();
sf::Event event;
while (window.pollEvent(event)){
if (event.type == sf::Event::Closed){
window.close();
}
if (event.type == sf::Event::GainedFocus){
focused = 1;
}
else if (event.type == sf::Event::LostFocus){
focused = 0;
}
}
//Only update if window is focused...
if (focused){
//Updating
player.update(window);
zombie.followPlayer(playerPosition);
zombie.update(window);
window.setView(view);
}
oldPosition = player.getPosition();
sendandReceiveData();
window.clear();
gameAssets.draw(window);
zombie.draw(window);
player.draw(window);
window.display();
}
return 0;
}
如果有人能告诉我我做错了什么,我将不胜感激,谢谢。
我修复了。我所要做的就是添加packetReceiveX.clear();
和y
来解决问题。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 为什么我的程序在打开网络设备时遇到问题
- OpenCV-从C/C++中的默认网络摄像头获取图片-GTK问题
- 我可以使用Boost::Asio而不用担心网络编程问题吗?
- 我的分类神经网络有逻辑问题
- 神经网络 MLP 问题
- C++ 网络和锁定问题
- 实现应用程序网络协议的安全问题
- 在Windows 10/OpenCV下访问网络摄像头时出现问题
- Caffe网络初始化出现问题
- winsock - recv -网络连接问题
- 神经网络与遗传算法问题
- SFML网络问题
- 将c++转换为VB.网络问题
- FD_SET问题/网络
- openCV-网络摄像头的视频捕获-延迟问题
- 我在神经网络中实现反向传播时遇到了问题
- 链接网络 pbm 库时出现问题
- 网络字节顺序和字节序问题
- 网络爬虫链接提取问题