本文整理汇总了C++中Network::SubmitAttack方法的典型用法代码示例。如果您正苦于以下问题:C++ Network::SubmitAttack方法的具体用法?C++ Network::SubmitAttack怎么用?C++ Network::SubmitAttack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Network
的用法示例。
在下文中一共展示了Network::SubmitAttack方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NET_PlayGameFlow
//.........这里部分代码省略.........
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 사이의 정수이다.*/
{
Coordinate netShot;
bool isAttacked;
while (true)
{
do
{
netShot = m_Player1->RandomAttack(); //Make AI Attack T-T
//netShot = m_GameInterface->AttackInterface(FIRST_MAP_GOTOX, FIRST_MAP_GOTOY); //Manual Mode
isAttacked = m_Player2->CheckAttacked(netShot);
} while (isAttacked);
Coord myShot(netShot.m_X, netShot.m_Y);
error = network.SubmitAttack(myShot);
if (error == ET_INVALID_ATTACK)
printf_s("유효하지 않은 공격");
else
break;
}
break;
}
case PKT_SC_ATTACK_RESULT:
{
Network::AttackResultData attackResult = network.GetAttackResult();
Coordinate shot;
shot.m_X = attackResult.pos.mX;
shot.m_Y = attackResult.pos.mY;
HitResult shotResult = (HitResult)attackResult.attackResult;
if (attackResult.isMine) //내 에너미 맵에 내가 공격한 결과를 반영 마크
{
m_GameRenderer->PrintResult(shotResult);
m_GameRenderer->PrintTurn(++m_Turn, DEFAULT_MAP_SIZE);
m_Player1->MarkOnEnemyMap(shot, shotResult);
m_Player2->MarkOnMyMap(shot, shotResult);
m_Player1->RenderUpdateEnemyMapStatus(FIRST_MAP_GOTOX, FIRST_MAP_GOTOY);
}
else //내가 어택당하는 함수
{
m_Player1->MarkOnMyMap(shot, shotResult);
m_Player1->RenderUpdateMyMapStatus((m_MapSize + 3) * 4 + 30, FIRST_MAP_GOTOY);
}
break;
}
case PKT_SC_GAME_OVER:
示例2: Networking
//.........这里部分代码省略.........
/*
** 게임 루프
내 차례라면 공격 위치를 전송한다.
차례가 끝나면 공격자와 공격 위치, 공격 결과를 받는다.
한 게임이 끝나면 PKT_SC_GAME_OVER 패킷이 들어온다.
*/
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 사이의 정수이다.
*/
while (true)
{
// Coord pos = MakeAttackPos();
Position attackpos = m_Attacker->RandomAttack();
error = network.SubmitAttack({ attackpos.x, attackpos.y });
if (error == ET_INVALID_ATTACK)
puts("유효하지 않은 공격 위치입니다.");
else
break;
}
break;
}
// 공격 결과
case PKT_SC_ATTACK_RESULT:
{
Network::AttackResultData attackResult = network.GetAttackResult();
Position attackpos;
attackpos.x = attackResult.pos.mX;
attackpos.y = attackResult.pos.mY;
HitResult hitResult = TranslateHitResult(attackResult.attackResult);
if (attackResult.isMine){
// puts("공격 결과:");
m_Attacker->ReceiveHitResult(attackpos, hitResult);
}
else
{
puts("피격 결과:");
//HandleOpositionAttackResult(attackResult.attackResult, attackResult.pos.mX, attackResult.pos.mY);
m_Zido_Attacker->ZidoMarkByGM(attackpos);
}
printf_s("X: %d, Y: %d, RESULT: %s\n", attackResult.pos.mX, attackResult.pos.mY, ATTACK_RESULT_STR[attackResult.attackResult]);
break;