亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? server.hpp

?? 本程序是主要是掃雷
?? HPP
字號(hào):
/*     Copyright(c) Ben Bear 2003-2004  */

//  This program is free software; you can redistribute it and/or
//  modify it under the terms of the GNU General Public License as
//  published by the Free Software Foundation; either version 2 of the
//  License, or (at your option) any later version.
//  
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  General Public License for more details.
//  
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
//  02111-1307, USA.

/*  This file provide a final server, which can run at background.
 *  Once the server has been build, it waits for players to join.
 */

#ifndef __server_hpp
#define __server_hpp

#include "info.hpp"
#include "checkers_server.hpp"
#include "server_connector.hpp"

class server: public checkers_server, public server_con
{
protected:
  // join a new player[p]
  void new_player (int p);
  
  // quit a player[p]
  void quit_player (int p);

  void game_over ();
public:
  server(const setting& set);

  bool run ();
};

server::server (const setting& set)
  : checkers_server (set)
{
  start_net ();
}

bool
server::run ()
{
  //fprintf (stderr, long_jump ? "long" : "short");
  do
    {
      char player_name[PLAYER_NAME_LEN];
      try
	{
	  wait_player (player_name);
	}
      catch (char* err)
	{
	  //fprintf (stderr, "%s\n", err);
	  continue;
	}
      int p = join (player_name);
      if (p == -1)
	{
	  waiter_close (GAME_OVER);
	  continue;
	}
      new_player (p);
    }
  while (!checkers_server::full());

  checkers_server::restart ();

  // send game started message
  for (int i = 0; i < 6; ++i)
    {
      if (player[i].end == -1)
	continue;

      send_int (i, GAME_START);
      if (recv_int (i) == PLAYER_QUIT)
	{
	  // now, don't support quit at this time
	}
    }

  do
    {
      int p = cur_player;
      cur_player = order[cur_player];

      //fprintf (stderr, "order move: %d\n", p);
      send_int (p, ORDER_MOVE);
      int s, e;
      int r = recv_int (p);
      if (r == MOVE_FAILED)
	continue;
      else if (r == PLAYER_QUIT)
	{
	  server_con::delete_sock (p);
	  checkers_server::quit (p);
	  game_over ();
	  return false;
	}

      //fprintf (stderr, "recv move chess from: %d\n", p);
      s = recv_int (p);
      e = recv_int (p);
      
      if (move (p, s, e))
	{
	  send_int (p, ALL_OK);
	  // send the move message to other players
	  for (int i = 0; i < 6; ++i)
	    {
	      if ((i == p) || (player[i].end == -1))
		continue;
	      //fprintf (stderr, "send move chess to: %d\n", i);
	      send_int (i, MOVE_CHESS);
	      send_int (i, s);
	      send_int (i, e);

	      // a player quit
	      if (recv_int (i) == PLAYER_QUIT)
		{
		  server_con::delete_sock (i);
		  checkers_server::quit (i);
		  game_over ();
		  return false;
		}
	    }
	}
      else  // move failed
	{
	  send_int (p, MOVE_FAILED);
	  // but without move again
	}
      if (win (p) && group_win(p))
	{
	  //fprintf (stderr, "player win: %d\n", p);
	  // send the win message
	  for (int i = 0; i < 6; ++i)
	    {
	      if (player[i].end == -1)
		continue;
	      
	      send_int (i, PLAYER_WIN);
	      send_int (i, p);
	    }
	  /*
	  // receive the response
	  for (int i = 0; i < 6; ++i)
	    {
	      if (player[i].end == -1)
		continue;

	      if (recv_int (i) == PLAYER_QUIT)
		{
		  quit_player (i);
		}
	    }
	  */
	  // has win, quit
	  break;
	}
    }
  while (true);
  return true;
}

void
server::new_player (int p)
{
  //fprintf (stderr, "new player: %d\n", p);
  save_sock (p);

  send_int (p, JOINED_GAME);
  send_int (p, floor);
  send_int (p, num_player);
  send_bool (p, long_jump);
  send_int (p, group);
  send_bool (p, stay_limit);

  send_int (p, p);

  int r = recv_int (p);
  if (r == PLAYER_QUIT)
    {
      checkers_server::quit (p);
      delete_sock (p);
      return;
    }
  // send new player name to other players
  for (int i = 0; i < 6; ++i)
    {
      if ((i == p) || (player[i].end == -1))
	continue;
      
      send_int (i, NEW_PLAYER);
      send_int (i, p);
      send_name (i, player[p].name.c_str());
      // get the responses of the player
      int r = recv_int (i);
      if (r == PLAYER_QUIT)
	{
	  quit_player (i);
	  continue;
	}
      
      send_int (p, NEW_PLAYER);
      send_int (p, i);
      send_name (p, player[i].name.c_str());
      // get the responses of the player
      r = recv_int (p);
      if (r == PLAYER_QUIT)
	{
	  quit_player (p);
	  break;
	}
    }
}

void
server::quit_player (int p)
{
  //fprintf (stderr, "delete player: %d\n", p);
  server_con::delete_sock (p);
  checkers_server::quit (p);

  for (int i = 0; i < 6; ++i)
    {
      if (player[i].end == -1)
	continue;

      send_int (i, PLAYER_QUIT);
      send_int (i, p);
      int r = recv_int (i);
      if (r == PLAYER_QUIT)
	quit_player (i);
    }
}

void
server::game_over ()
{
  for (int i = 0; i < 6; ++i)
    {
      if (player[i].end == -1)
	continue;
      send_int (i, GAME_OVER);
      server_con::delete_sock (i);
      checkers_server::quit (i);
    }
}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产电影在线观看| 一区二区三区精品| 欧美日韩一级黄| 成人性生交大片免费| 丝袜美腿高跟呻吟高潮一区| 日本一区二区成人| 91精品国产欧美一区二区成人| kk眼镜猥琐国模调教系列一区二区| 日产国产欧美视频一区精品| 中文字幕一区二区三区在线播放| 精品国产乱码久久久久久久久 | 激情五月婷婷综合| 亚洲成人动漫在线观看| 国产精品污www在线观看| 91精品国产综合久久精品性色| www.爱久久.com| 国产成人av电影在线观看| 日韩av午夜在线观看| 一区二区欧美在线观看| 欧美国产欧美综合| 久久伊人蜜桃av一区二区| 3d成人h动漫网站入口| 91精品办公室少妇高潮对白| 成人av午夜电影| 国内精品视频一区二区三区八戒| 热久久久久久久| 亚洲一级二级在线| 一区二区三区资源| 亚洲精品视频在线观看免费| 国产精品国产三级国产aⅴ中文| 久久久久久久久久久99999| 日韩久久精品一区| 日韩欧美一区二区不卡| 日韩一区二区在线播放| 在线观看91精品国产麻豆| 欧美日韩国产综合一区二区| 欧美无砖砖区免费| 欧美日韩国产片| 欧美伦理影视网| 3d动漫精品啪啪一区二区竹菊 | 欧美视频在线观看一区| 欧美影视一区二区三区| av影院午夜一区| 处破女av一区二区| 99久久精品久久久久久清纯| 91麻豆成人久久精品二区三区| 国产69精品一区二区亚洲孕妇| 国产成人日日夜夜| 成人晚上爱看视频| 91麻豆视频网站| 欧美三级电影精品| 日韩一区二区三区免费观看| 日韩精品中文字幕一区| 久久这里只精品最新地址| 欧美激情自拍偷拍| 亚洲精品水蜜桃| 亚洲1区2区3区视频| 免费观看在线色综合| 国产酒店精品激情| 9i看片成人免费高清| 在线亚洲精品福利网址导航| 91精品国模一区二区三区| 久久青草国产手机看片福利盒子| 国产精品网曝门| 亚洲自拍偷拍九九九| 蜜臀va亚洲va欧美va天堂 | 亚洲一区二区黄色| 免费观看在线综合色| 国产aⅴ精品一区二区三区色成熟| av在线这里只有精品| 欧美精品第1页| 久久婷婷成人综合色| 专区另类欧美日韩| 日本成人在线电影网| 成人永久看片免费视频天堂| 欧洲色大大久久| 久久色在线视频| 亚洲九九爱视频| 蜜桃精品视频在线| 99热国产精品| 日韩欧美国产1| 亚洲另类在线视频| 精品亚洲aⅴ乱码一区二区三区| 99麻豆久久久国产精品免费优播| 欧美卡1卡2卡| 最新热久久免费视频| 久久99精品一区二区三区三区| av色综合久久天堂av综合| 91精品国产一区二区三区蜜臀 | 欧美一区二区三区啪啪| 欧美激情一区二区三区全黄| 亚洲成人一区二区| 成人av综合一区| 日韩视频一区二区| 亚洲精品国产一区二区精华液| 国模大尺度一区二区三区| 欧美性一二三区| 国产精品久久久久久久久果冻传媒| 日本怡春院一区二区| 在线亚洲精品福利网址导航| 久久久久久久久久久久久久久99| 丝袜亚洲另类欧美综合| 色婷婷国产精品| 国产精品入口麻豆九色| 久久99国产精品尤物| 欧美日韩在线直播| 中文字幕亚洲成人| 欧美中文字幕一区二区三区| 久久久国际精品| 免费不卡在线观看| 欧美群妇大交群中文字幕| 亚洲色图欧洲色图婷婷| 国产成人精品亚洲日本在线桃色| 5858s免费视频成人| 亚洲一区在线视频| 91福利在线看| 亚洲男人的天堂av| 99视频在线精品| 亚洲国产精品ⅴa在线观看| 国产毛片精品视频| 精品精品国产高清a毛片牛牛| 亚洲国产日产av| 欧美三电影在线| 亚洲激情一二三区| 91在线国产观看| 亚洲免费大片在线观看| 成人免费视频视频在线观看免费| 久久久精品国产免费观看同学| 精品一区二区久久| 2020国产精品久久精品美国| 久久国产三级精品| 日韩精品一区二区三区中文不卡| 首页亚洲欧美制服丝腿| 91精品久久久久久久99蜜桃| 日产精品久久久久久久性色 | 国产精品女人毛片| 成人三级在线视频| 国产精品久久久久影院亚瑟| 成人免费毛片嘿嘿连载视频| 中文字幕中文字幕在线一区 | 狠狠色狠狠色综合系列| 久久影院电视剧免费观看| 国产精品亚洲成人| 中文字幕欧美日本乱码一线二线 | 成人免费高清在线观看| 国产精品天天看| 91久久精品午夜一区二区| 一区二区三区丝袜| 欧美色欧美亚洲另类二区| 五月婷婷久久综合| 日韩欧美三级在线| 国产不卡在线播放| 亚洲九九爱视频| 欧美一区二区三区在线观看| 国内国产精品久久| 国产精品久久久久久久久免费丝袜 | 欧美在线影院一区二区| 天天免费综合色| 精品剧情在线观看| 粉嫩蜜臀av国产精品网站| 亚洲人成人一区二区在线观看 | 在线不卡欧美精品一区二区三区| 奇米精品一区二区三区在线观看一| 日韩精品一区二区三区swag| 国产一区二区三区黄视频| 国产精品乱人伦中文| 欧美色窝79yyyycom| 久久精品国产免费看久久精品| 精品国产123| av成人动漫在线观看| 午夜精品影院在线观看| 久久久久99精品一区| 色婷婷综合久久久| 六月丁香婷婷久久| 亚洲视频一区在线观看| 欧美一区二区不卡视频| 成人国产亚洲欧美成人综合网| 亚洲国产日韩精品| 久久精品男人天堂av| 欧美三级韩国三级日本一级| 韩国v欧美v日本v亚洲v| 亚洲老司机在线| 日韩精品专区在线影院重磅| 色视频成人在线观看免| 国产一区二区在线观看视频| 一区二区三区中文字幕电影 | 最近日韩中文字幕| 日韩欧美一区二区免费| 91视频免费看| 久久se精品一区精品二区| 一级做a爱片久久| 久久久99免费| 欧美人妇做爰xxxⅹ性高电影| 成人免费高清视频在线观看| 久久国产精品99精品国产| 亚洲黄色小视频| 国产肉丝袜一区二区| 6080国产精品一区二区| 91久久奴性调教| 国产精品资源在线看|