位置: 主页 > 页游sf大全 >

自己动手变态网页游戏排行榜写游戏:飞机大战

  这里借助单例模式,保证玩家飞机对象只有一个存储,电脑飞机集合也只有一个,而具体的电脑飞机对象则分别在单例类中的集合中进行Add和Remove。

private void btnBeginListen_Click(object sender, EventArgs e) { if (isEndService) { SetTxtReadOnly(); if (socketWatch == null) { // 创建Socket->绑定IP与端口->设置监听队列的长度->开启监听连接 socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socketWatch.Bind(new IPEndPoint(IPAddress.Parse(txtIPAddress.Text), int.Parse(txtPort.Text))); socketWatch.Listen(10); threadWatch = new Thread(ListenClientConnect); threadWatch.IsBackground = true; threadWatch.Start(socketWatch); } isEndService = false; this.btnStartGame.Enabled = true; ShowMessage("^_^:飞机大战服务器端启动服务成功,正在等待玩家进入游戏..."); } else { MessageBox.Show("服务已启动,,请不要重复启动服务!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void ListenClientConnect(object obj) { Socket serverSocket = obj as Socket; while (!isEndService) { Socket proxSocket = null; try { // 注意:Accept方法会阻断当前所在的线程 proxSocket = serverSocket.Accept(); dictClients.Add(proxSocket.RemoteEndPoint.ToString(), proxSocket); ShowMessage("*_*:玩家<" + proxSocket.RemoteEndPoint.ToString() + ">连接上了,请准备开始游戏。"); playerCount++; ThreadPool.QueueUserWorkItem(new WaitCallback(ReceiveData), proxSocket); } catch (SocketException ex) { ShowMessage("#_#:异常【" + ex.Message + ""); // 让方法结束,终结当前监听客户端数据的异步线程 return; } catch (Exception ex) { ShowMessage("#_#:异常【" + ex.Message + ""); // 让方法结束,终结当前监听客户端数据的异步线程 return; } } }

  一切皆对象,这里封装了游戏对象:飞机、子弹以及其他游戏对象共有的属性,以及两个抽象方法,让对象们(飞机?子弹?爆炸效果?等)自己去实现。

热门文章
最新文章
Copyright © 2011-2018 超变态网页游戏 版权所有