本文整理汇总了C++中Network::SubmitName方法的典型用法代码示例。如果您正苦于以下问题:C++ Network::SubmitName方法的具体用法?C++ Network::SubmitName怎么用?C++ Network::SubmitName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Network
的用法示例。
在下文中一共展示了Network::SubmitName方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NET_PlayGameFlow
void GameManager::NET_PlayGameFlow()
{
Network network;
PacketType type;
ErrorType error;
try
{
Network::Initialize();
}
catch (Network::Exception)
{
puts("초기화 도중 문제가 발생했습니다.");
return;
}
try
{
network.Connect("10.73.42.117", 9000);
}
catch (Network::Exception ex)
{
switch (ex)
{
case Network::NETWORK_ERROR:
puts("서버와 연결에 실패했습니다.");
break;
case Network::PARAMETER_ERROR:
puts("함수의 인수가 잘못되었습니다.");
break;
}
return;
}
puts("접속 성공!");
try
{
const wchar_t name[MAX_NAME_LEN] = L"지면 F";
const int studentID = 141055;
error = network.SubmitName(name, studentID);
if (error == ET_DUPLICATED_NAME)
{
puts("이미 존재하는 이름입니다.");
return;
}
Network::GameStartData gameStartData;
puts("게임 시작 대기중");
network.WaitForStart(&gameStartData);
wprintf_s(L"매칭되었습니다. 상대방 이름: %s, 학번: %d\n", gameStartData.oppositionName, gameStartData.oppositionStudentID);
bool allOver = false;
while (!allOver) //10판 종료
{
ShipData shipData;
Network::Initialize();
char mapData[MAP_SIZE];
while (true)
{
ReadyToFight(m_Player1);
ReadyToFight(m_Player2);
m_GameRenderer->RenderPages(GAMEPLAY, NET_PLAY);
for (int i = 0; i < DEFAULT_SHIP_COUNT; ++i)
{
Position netPosition;
if (i != 4)
netPosition = ConvertPosionForNET((ShipType)i, m_ShipPositions[i]);
else if (i == 4)
netPosition = ConvertPosionForNET((ShipType)(i - 1), m_ShipPositions[i]);
shipData.SetShip((ShipData::ShipType)(i + 1), Coord(netPosition.m_X, netPosition.m_Y), netPosition.m_direction == 0 ? ShipData::DIR_VERTICAL : ShipData::DIR_HORIZONTAL);
}
shipData.ToMapData(mapData);
error = network.SubmitMap(mapData);
if (error == ET_INVALID_MAP)
puts("유효하지 않은 맵 데이터입니다.");
else
break;
}
bool gameOver = false;
while (!gameOver)
{
error = network.GetPacketType(&type);
switch (type)
{
case PKT_SC_ERROR:
if (error == ET_OPPOSITION_DISCONNECTED)
puts("상대방의 접속이 끊어졌습니다.");
else
puts("알 수 없는 에러입니다.");
return;
case PKT_SC_MY_TURN: /* 공격 위치 전송 x, y는 0~7 사이의 정수이다.*/
{
//.........这里部分代码省略.........
示例2: Networking
void GameManager::Networking()
{
Network network;
PacketType type;
ErrorType error;
srand((unsigned int)time(NULL));
/*
** 네트워크 초기화
*/
try
{
Network::Initialize();
}
catch (Network::Exception)
{
puts("초기화 도중 문제가 발생했습니다.");
return;
}
/*
** 서버에 연결
서버의 IP와 포트는 당일날 공지된다.
*/
const char* ip = "10.73.42.117";
const unsigned short port = 9001;
try
{
network.Connect(ip, port);
}
catch (Network::Exception ex)
{
switch (ex)
{
case Network::NETWORK_ERROR:
puts("서버와 연결에 실패했습니다.");
break;
case Network::PARAMETER_ERROR:
puts("함수의 인수가 잘못되었습니다.");
break;
}
return;
}
puts("접속 성공!");
try // 예외 처리를 위해 try문으로 모두 감싼다.
{
/*
** 이름&학번 전송
최대 길이는 MAX_NAME_LEN-1 == 15글자.
성공시 ET_OK가 리턴된다.
이미 있는 이름을 쓰면 ET_DUPLICATED_NAME이 온다.
*/
const wchar_t name[MAX_NAME_LEN] = L"버틸수없다";
const int studentID = 141044;
error = network.SubmitName(name, studentID);
if (error == ET_DUPLICATED_NAME)
{
puts("이미 존재하는 이름입니다.");
return;
}
/*
** 게임 시작 대기
게임이 시작되면 상대방의 정보가 들어온다.
Network::GameStartData 구조체로 상대방 정보를 가져온다.
*/
Network::GameStartData gameStartData;
puts("게임 시작 대기중");
network.WaitForStart(&gameStartData);
wprintf_s(L"매칭되었습니다. 상대방 이름: %s, 학번: %d\n", gameStartData.oppositionName, gameStartData.oppositionStudentID);
/*
** 게임 시작
맵 제출부터 게임 종료까지 n회 반복한다.
하나의 게임이 끝나고 다음 게임을 시작해야 한다면 PKT_SC_NEXT_GAME 패킷이
모든 게임이 끝나면 PKT_SC_ALL_OVER 패킷이 들어온다.
*/
bool allOver = false;
while (!allOver)
{
SetGame();
/*
** 맵 제출
자신이 배치한 맵 데이터를 서버로 전송한다.
맵 데이터를 만드는 방법에는 두 가지가 있다.
하나는 직접 MAP_WIDHT * MAP_HEIGHT 크기의 맵을 만드는 것이고,
하나는 ShipData 구조체를 이용해서 만드는 것이다.
*/
char mapData[MAP_SIZE];
//TransferMyMapData(mapData, m_Attacker);
memset(mapData, MI_EMPTY, sizeof(mapData));
int shiptype = 1;
//.........这里部分代码省略.........