毕业设计(论文)-C#大厅五子棋游戏系统设计.doc

上传人:来看看 文档编号:3951085 上传时间:2019-10-11 格式:DOC 页数:57 大小:751.50KB
返回 下载 相关 举报
毕业设计(论文)-C#大厅五子棋游戏系统设计.doc_第1页
第1页 / 共57页
毕业设计(论文)-C#大厅五子棋游戏系统设计.doc_第2页
第2页 / 共57页
毕业设计(论文)-C#大厅五子棋游戏系统设计.doc_第3页
第3页 / 共57页
毕业设计(论文)-C#大厅五子棋游戏系统设计.doc_第4页
第4页 / 共57页
毕业设计(论文)-C#大厅五子棋游戏系统设计.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《毕业设计(论文)-C#大厅五子棋游戏系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-C#大厅五子棋游戏系统设计.doc(57页珍藏版)》请在三一文库上搜索。

1、游戏开发论文游戏开发论文题 目: 大厅五子棋 作 者: 系 别: 计算机系 班级: 软件0701 专 业: 计算机应用技术专业(软件方向)指导教师: 专业技术职务 讲师 2009 年 12月 浙江温州 前 言 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易

2、理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。目 录摘 要1Abstract1第1章 项目概述21.1 项目背景21.2 任务概述2第2章 界面设计32.1 服务端32.2 客户端4第3章 构造阶段73.1 核心代码7第4章 论文小结52致 谢53参考文献53 游戏开发论文摘 要目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的

3、休闲方式。 本软件使用C#实现,通过对SCOKET技术的理解,在此基础上建立服务器与多客户端的连接,利用多线程处理多个客户端之间的信息。 通过对软件的编写,加深对以上技术的理解和掌握。大厅五子棋的开发能够是朋友们不见面也能下棋和聊天。关 键 字多线程;流套接字AbstractAt present, computer technology and network technology as the core of modern network technology has been in real life and production to be widely used set of casu

4、al online games fun, entertaining, interactive and puzzle in one sex has become the majority population of leisure. The software uses the C # to achieve, through SCOKET understanding of technology, in this based on the server and multiple client connections, using multi-threaded processing of inform

5、ation between multiple clients. Through the preparation of the software to enhance the above techniques to understand and grasp. Hall Gobang development can not even meet with friends who can also play chess and chat.KeywordsMultithreading; Stream Sockets54第1章 项目概述1.1 项目背景当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要

6、的问题就是人机对战和网络对战不能够一起实现,所以我决定开发一个既能够人机对战,又能够进行网络对战的五子棋系统。1.2 任务概述1.2.1 实现目标l 实现在线下棋l 实现多人在线互动交互.第2章 界面设计2.1 服务端2.1.1 初始如图2. 1 初始图2. 1 初始2.1.2 启动服务如图2. 2 启动服务图2. 2 启动服务2.2 客户端2.2.1 初始如图2. 1 初始图2. 3 初始图2. 3 初始2.2.2 连接服务端如图2. 1 初始图2. 4 连接服务器图2. 4 连接服务器2.2.3 会员登陆如图2. 5 会员登陆图2. 5 会员登陆2.2.4 游戏界面如图2. 6 游戏界面1

7、如图2. 7 游戏界面2如图2. 8 游戏界面3图2. 6 游戏界面1图2. 7 游戏界面2图2. 8 游戏界面3游戏开发论文第3章 构造阶段3.1 核心代码3.1.1 服务端 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Net.Sockets;using System.Net;using Syste

8、m.Threading;using System.Collections;using System.Data.SqlClient;namespace FiveServer public partial class FiveServer : Form private Socket mainSocket; public delegate void UpdateRichEditCallback(string text); public delegate void UpdateClientListCallback(); public AsyncCallback pfnWorkerCallback; p

9、ublic string username; public int userpicture; private ArrayList workerSocketList = ArrayList.Synchronized(new ArrayList(); private int clientNum = 0;/客户的编号 private string all_table;/所有房间座位信息 static public string clientmsg=; public FiveServer() InitializeComponent(); private void button1_Click(objec

10、t sender, EventArgs e) try if (txtPort.Text = ) MessageBox.Show(请先填写服务器端口!, 提示); return; Int32 port = Int32.Parse(txtPort.Text); mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint localEP = new IPEndPoint(IPAddress.Any, port); mainSocket.Bind(localEP

11、);/将socket绑定到本地终接点上 mainSocket.Listen(5); mainSocket.BeginAccept(new AsyncCallback(OnClientConnect), null);/开始一个异步操作接受客户的连接请求 UpdateControls(true); catch (SocketException se) MessageBox.Show(se.Message, 提示); private void FiveServer_Load(object sender, EventArgs e) try txtIP.Text = Dns.Resolve(Dns.Ge

12、tHostName().AddressList0.ToString(); UpdateControls(false); catch (Exception exc) MessageBox.Show(exc.Message, 提示); private void button2_Click(object sender, EventArgs e) CloseSockets(); UpdateControls(false); UpdateClientListControl();/更新客户列表 private void button5_Click(object sender, EventArgs e)/发

13、送 if (clientList.Items.Count != 0) try string msg = txtSendMsg.Text; msg = # + msg + n; byte byData = System.Text.Encoding.UTF8.GetBytes(msg); Socket workerSocket = null; for (int i = 0; i workerSocketList.Count; i+) workerSocket = (Socket)workerSocketListi; if (workerSocket != null) if (workerSocke

14、t.Connected) workerSocket.Send(byData); catch (SocketException se) MessageBox.Show(se.Message, 提示!); else MessageBox.Show(没有在线客户,不能发送信息, 提示); private void button4_Click(object sender, EventArgs e) CloseSockets(); Close(); private void button3_Click(object sender, EventArgs e) txtRecvMsg.Clear(); /关闭

15、socket void CloseSockets() if (mainSocket != null) mainSocket.Close(); Socket workerSocket = null; for (int i = 0; i workerSocketList.Count; i+) workerSocket = (Socket)workerSocketListi; if (workerSocket != null) workerSocket.Close(); workerSocket = null; /更新客户列表 private void UpdateClientListControl

16、() if (InvokeRequired) clientList.BeginInvoke(new UpdateClientListCallback(UpdateClientList), null); else UpdateClientList(); void UpdateClientList() clientList.Items.Clear(); for (int i = 0; i 4) substr = receivemsg.Substring(0, 4); if (substr = #)/聊天信息 MessageBox.Show(sfdsdfdf); String tmp1 = ; tm

17、p1 = receivemsg.Substring(4); string s = tmp1.Split(new Char , ); string clientmsg = 客户 + socketData.clientNumber + + s0 + 说: + s1; AppendToRichEditControl(clientmsg); if (substr = %)/退出信息 String tmp1 = ; tmp1 = receivemsg.Substring(4); SqlConnection conn = new SqlConnection(server=localhost;uid=sa;

18、pwd=123;database=Login_user); conn.Open(); string ke_name = tmp1.ToString().Substring(0,tmp1.ToString().Length-3) ;/tmp1.ToString()含回车换行rn0符需去掉 string updata11 = update userinfo set userinserver=0,userhouseid=0 where username= + ke_name + ; SqlCommand comm11 = new SqlCommand(updata11, conn); comm11.

19、ExecuteNonQuery(); conn.Close(); string outmsg = 客户 + socketData.clientNumber + 已经断开连接!n; AppendToRichEditControl(outmsg); workerSocketListsocketData.clientNumber - 1 = null; UpdateClientListControl(); / disconnect(); if (substr = )()()/房间信息 String tmp1 = ; tmp1 = receivemsg.Substring(4); string s =

20、 tmp1.Split(new Char , ); all_table = all_table + , + s0 + , + s1 + , + s2 + , + Convert.ToInt16(s3).ToString(); /*向所有用户的客户端大厅发送座位信息 for (int i = 1; i = clientNum; i+) SendToClient()()( + all_table, i); SqlConnection conn = new SqlConnection(server=localhost;uid=sa;pwd=123;database=Login_user); conn.Open(); string house_id = Convert.ToInt16(s1).ToString();/用户选择

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1