




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务器端界面客户端界面 棋盘界面决出胜负界面 若一方下线,弹出的窗口如果服务器关闭出现的对话框退出游戏前的对话框登录前的设置客户端源代码using System;using System.Drawing;using System.Windows.Forms;using System.IO;namespace GameClient public partial class FormPlaying : Form private int tableIndex; private int side; private DotColor, grid = new DotColor15, 15; private Bitmap blackBitmap; private Bitmap whiteBitmap; private bool isReceiveCommand = false; private Service service; delegate void LabelDelegate(Label label, string str); delegate void ButtonDelegate(Button button, bool flag); delegate void RadioButtonDelegate(RadioButton radioButton, bool flag); delegate void SetDotDelegate(int i, int j, int dotColor); LabelDelegate labelDelegate; ButtonDelegate buttonDelegate; RadioButtonDelegate radioButtonDelegate; public FormPlaying(int TableIndex, int Side, StreamWriter sw) InitializeComponent(); this.tableIndex = TableIndex; this.side = Side; labelDelegate = new LabelDelegate(SetLabel); buttonDelegate = new ButtonDelegate(SetButton); radioButtonDelegate = new RadioButtonDelegate(SetRadioButton); blackBitmap = new Bitmap(Properties.Resources.black); whiteBitmap = new Bitmap(Properties.Resources.white); service = new Service(listBox1, sw); private void FormPlaying_Load(object sender, EventArgs e) radioButton3.Checked = true; for (int i = 0; i = grid.GetUpperBound(0); i+) for (int j = 0; j = grid.GetUpperBound(1); j+) gridi, j = DotColor.None; labelSide0.Text = ; labelSide1.Text = ; labelGrade0.Text = ; labelGrade1.Text = ; public void SetLabel(Label label, string str) if (label.InvokeRequired) this.Invoke(labelDelegate, label, str); else label.Text = str; private void SetButton(Button button, bool flag) if (button.InvokeRequired) this.Invoke(buttonDelegate, button, flag); else button.Enabled = flag; private void SetRadioButton(RadioButton radioButton, bool flag) if (radioButton.InvokeRequired) this.Invoke(radioButtonDelegate, radioButton, flag); else radioButton.Checked = flag; public void SetDot(int i, int j, DotColor dotColor) service.AddItemToListBox(string.Format(0,1,2, i, j, dotColor); gridi, j = dotColor; pictureBox1.Invalidate(); public void Restart(string str) MessageBox.Show(str, , MessageBoxButtons.OK, MessageBoxIcon.Warning); ResetGrid(); SetButton(buttonStart, true); private void ResetGrid() SetLabel(labelGrade0, ); SetLabel(labelGrade1, ); for (int i = 0; i = grid.GetUpperBound(0); i+) for (int j = 0; j = grid.GetUpperBound(1); j+) gridi, j = DotColor.None; pictureBox1.Invalidate(); gridx / 20 - 1, y / 20 - 1 = DotColor.None; pictureBox1.Invalidate(); private void pictureBox1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; for (int i = 0; i = grid.GetUpperBound(0); i+) for (int j = 0; j = grid.GetUpperBound(1); j+) if (gridi, j != DotColor.None) if (gridi, j = DotColor.Black) g.DrawImage(blackBitmap, (i + 1) * 20, (j + 1) * 20); else g.DrawImage(whiteBitmap, (i + 1) * 20, (j + 1) * 20); public void SetLevel(string ss) isReceiveCommand = true; switch (ss) case 1: SetRadioButton(radioButton1, true); break; case 2: SetRadioButton(radioButton2, true); break; case 3: SetRadioButton(radioButton3, true); break; case 4: SetRadioButton(radioButton4, true); break; case 5: SetRadioButton(radioButton5, true); break; isReceiveCommand = false; private void radioButton_CheckedChanged(object sender, EventArgs e) if (isReceiveCommand = false) RadioButton radiobutton = (RadioButton)sender; if (radiobutton.Checked = true) service.SendToServer(string.Format(Level,0,1, tableIndex, radiobutton.Nameradiobutton.Name.Length - 1); private void buttonSend_Click(object sender, EventArgs e) service.SendToServer(string.Format(Talk,0,1, tableIndex, textBox1.Text); private void textBox1_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = (char)Keys.Enter) service.SendToServer(string.Format(Talk,0,1, tableIndex, textBox1.Text); private void buttonHelp_Click(object sender, EventArgs e) string str = n本游戏每两人为一组。游戏玩法:用鼠标点击你所在方颜色的点,每nn + 消失一个,得一分。当任何一方在同行或同列出现两个相邻的点时,游nn + 戏就结束了,此时得分多的为胜方。注意:点击对方的点无效。n; MessageBox.Show(str, 帮助信息); private void buttonStart_Click(object sender, EventArgs e) service.SendToServer(string.Format(Start,0,1, tableIndex, side); this.buttonStart.Enabled = false; private void buttonExit_Click(object sender, EventArgs e) this.Close(); private void FormPlaying_FormClosing(object sender, FormClosingEventArgs e) service.SendToServer(string.Format(GetUp,0,1, tableIndex, side); public void StopFormPlaying() Application.Exit(); private void pictureBox1_MouseDown(object sender, MouseEventArgs e) int x = e.X / 20; int y = e.Y / 20; if (!(x 15 | y 15) if (gridx - 1, y - 1 != DotColor.None) int color = (int)gridx - 1, y - 1; service.SendToServer(string.Format( UnsetDot,0,1,2,3,4, tableIndex, side, x - 1, y - 1, color); public void SetTableSideText(string sideString, string labelSideString, string listBoxString) string s = 白方; if (sideString = 0) s = 黑方:; if (sideString = side.ToString() SetLabel(labelSide1, s + labelSideString); else SetLabel(labelSide0, s + labelSideString); service.AddItemToListBox(listBoxString); public void SetGradeText(string str0, string str1) if (side = (int)DotColor.Black) SetLabel(labelGrade1, str0); SetLabel(labelGrade0, str1); else SetLabel(labelGrade0, str0); SetLabel(labelGrade1, str1); public void ShowTalk(string talkMan, string str) service.AddItemToListBox(string.Format(0说:1, talkMan, str); public void ShowMessage(string str) service.AddItemToListBox(str); 服务器源代码using System;using System.Collections.Generic;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace GameServer public partial class FormServer : Form private int maxUsers; System.Collections.Generic.List userList = new List(); private int maxTables; private GameTable gameTable; IPAddress localAddress; private int port = 51888; private TcpListener myListener; private Service service; public FormServer() InitializeComponent(); service = new Service(listBox1); private void FormServer_Load(object sender, EventArgs e) listBox1.HorizontalScrollbar = true; IPAddress addrIP = Dns.GetHostAddresses(Dns.GetHostName(); localAddress = addrIP0; buttonStop.Enabled = false; private void buttonStart_Click(object sender, EventArgs e) if (int.TryParse(textBoxMaxTables.Text, out maxTables) = false | int.TryParse(textBoxMaxUsers.Text, out maxUsers) = false) MessageBox.Show(请输入在规定范围内的正整数); return; if (maxUsers 300) MessageBox.Show(允许进入的人数只能在1-300之间); return; if (maxTables 100) MessageBox.Show(允许的桌数只能在1-100之间); return; textBoxMaxUsers.Enabled = false; textBoxMaxTables.Enabled = false; gameTable = new GameTablemaxTables; for (int i = 0; i maxTables; i+) gameTablei = new GameTable(listBox1); myListener = new TcpListener(localAddress, port); myListener.Start(); service.AddItem(string.Format(开始在0:1监听客户连接, localAddress, port); ThreadStart ts = new ThreadStart(ListenClientConnect); Thread myThread = new Thread(ts); myThread.Start(); buttonStart.Enabled = false; buttonStop.Enabled = true; private void buttonStop_Click(object sender, EventArgs e) for (int i = 0; i maxTables; i+) gameTablei.StopTimer(); service.AddItem(string.Format(目前连接用户数:0, userList.Count); service.AddItem(开始停止服务,并依次使用户退出!); for (int i = 0; i maxUsers) sendString = Sorry; service.SendToOne(user, sendString); service.AddItem(人数已满,拒绝 + splitString1 + 进入游戏室); exitWhile = true; else user.userName = string.Format(0-1, splitString1, client.Client.RemoteEndPoint); sendString = Tables, + this.GetOnlineString(); service.SendToOne(user, sendString); break; case logout: service.AddItem(string.Format(0退出游戏室, user.userName); normalExit = true; exitWhile = true; break; case sitdown: tableIndex = int.Parse(splitString1); side = int.Parse(splitString2); gameTabletableIndex.gamePlayerside.user = user; gameTabletableIndex.gamePlayerside.someone = true; service.AddItem(string.Format( 0在第1桌第2座入座, user.userName, tableIndex + 1, side + 1); anotherSide = (side + 1) % 2; if (gameTabletableIndex.gamePlayeranotherSide.someone = true) sendString = string.Format(SitDown,0,1, anotherSide, gameTabletableIndex.gamePlayeranotherSide.user.userName); service.SendToOne(user, sendString); sendString = string.Format(SitDown,0,1, side, user.userName); service.SendToBoth(gameTabletableIndex, sendString); service.SendToAll(userList, Tables, + this.GetOnlineString(); break; case getup: tableIndex = int.Parse(splitString1); side = int.Parse(splitString2); service.AddItem( string.Format(0离座,返回游戏室, user.userName); gameTabletableIndex.StopTimer(); service.SendToBoth(gameTabletableIndex, string.Format(GetUp,0,1, side, user.userName); gameTabletableIndex.gamePlayerside.someone = false; gameTabletableIndex.gamePlayerside.started = false; gameTabletableIndex.gamePlayerside.grade = 0; anotherSide = (side + 1) % 2; if (gameTabletableIndex.gamePlayeranotherSide.someone = true) gameTabletableIndex.gamePlayeranotherSide.started = false; gameTabletableIndex.gamePlayeranoth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空机务工程师职业资格评定试题及答案解析
- 高粱购销合同模板(3篇)
- n2级护理岗位考试试题及答案
- 环保项目投资民间借款合同
- 任城区人才公寓租住管理与租客权益保障协议
- 商业地产业主与物业物业服务合同范本
- 股权转让协议范本中的业绩承诺条款详解
- 2025公务员能源局面试题目及答案
- 辅警专业知识试题及答案
- 跳棋的教学课件怎么写
- 2025年人力资源制度:【年终奖】员工超产奖金计算表
- 《跨境电子商务基础》高职全套教学课件
- 医院委托采购合同范本
- 癌性伤口护理个案分享
- 一般纳税人成本核算流程
- 建设6英寸硅基功率半导体晶圆生产线项目资金申请报告
- 软件项目管理规范
- 氧化还原滴定法
- 渣土运输车辆挂靠合同正规范本
- 成长与变化主题班会
- 患者健康教育护理制度
评论
0/150
提交评论