




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
游戏开发论文游戏开发论文题 目: 大厅五子棋 作 者: 系 别: 计算机系 班级: 软件0701 专 业: 计算机应用技术专业(软件方向)指导教师: 专业技术职务 讲师 2009 年 12月 浙江温州 前 言 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。目 录摘 要1Abstract1第1章 项目概述21.1 项目背景21.2 任务概述2第2章 界面设计32.1 服务端32.2 客户端4第3章 构造阶段73.1 核心代码7第4章 论文小结52致 谢53参考文献53 游戏开发论文摘 要目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。 本软件使用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 casual 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 information 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 项目背景当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是人机对战和网络对战不能够一起实现,所以我决定开发一个既能够人机对战,又能够进行网络对战的五子棋系统。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如图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 System.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; public 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(object 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);/将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.GetHostName().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)/发送 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 (workerSocket.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(); /关闭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() 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 = ; tmp1 = 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;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.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 = 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();/用户选择的房间号 string updatehouseid = update userinfo set userhouseid= + house_id + where username= + s0.ToString() + ; SqlCommand comm11 = new SqlCommand(updatehouseid, conn); comm11.ExecuteNonQuery(); /*判断一个房间同桌是否已经两人 string selectstr = select * from userinfo where userhouseid= + house_id; SqlCommand da = new SqlCommand(selectstr, conn); SqlDataReader myread = da.ExecuteReader(); int n = 0; String ,a=new String2,2 ; int online=0; while (myread.Read() online = Convert.ToInt32(myread.GetValue(5).ToString();/在线 if (online = 1) an,0 = myread.GetValue(4).ToString();/IP an,1 = myread.GetValue(2).ToString();/客户号 n+; if (n = 2) SendToClient(! + a0,0, Convert.ToInt16(a1,1);/向一个房间的用户发对方IP SendToClient(! + a1, 0, Convert.ToInt16(a0, 1);/向一个房间的用户发对方IP /* conn.Close(); if (substr = )/注册信息 String tmp1 = ; tmp1 = receivemsg.Substring(4); string s = tmp1.Split(new Char , ); String strsql; strsql = insert into userinfo (username,userpwd,useremail,userpicture) values ( + s0.ToString() + , + s1.ToString() + , + s2.ToString() + , + s3.ToString() + ); string us = null; us = s0; string selectstr = select * from userinfo where username= + us.ToString() + ; SqlConnection conn = new SqlConnection(server=localhost;uid=sa;pwd=123;database=Login_user); conn.Open(); SqlCommand da = new SqlCommand(selectstr, conn); SqlDataReader myread = da.ExecuteReader(); if (myread.Read() MessageBox.Show(s0 + 帐号已经被注册); else try myread.Close(); SqlCommand updatauser = new SqlCommand(strsql, conn); updatauser.ExecuteNonQuery(); / MessageBox.Show(成功 + 4 + us.ToString()+ 。); string clientmsg3 = + us.ToString(); SendToClient(clientmsg3, clientNum); catch / MessageBox.Show(帐号创建失败); string clientmsg0 = ; SendToClient(clientmsg0, clientNum); conn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技成果转化合同
- rt考试题及答案
- pkpm考试题及答案
- 电缆行业知识培训课件
- 电线家装知识培训课件
- 电站工作知识培训课件
- 电石炉净化培训知识课件
- 委托开发合同(编号:2)
- KLHDC2-IN-1-生命科学试剂-MCE
- 高温防疫安全知识培训课件
- 统编版五升六语文开学摸底测试卷(十二)(含答案)
- 2025-2026学年北师大版(2024)初中物理八年级上册教学计划及进度表
- 2025年地理信息系统考试题及答案
- 2025年度哈尔滨“丁香人才周”(春季)哈尔滨新区教育系统专项招聘80人考试备考试题及答案解析
- 军用电台知识培训方案课件
- 江苏员额检察官考试完整版试题及答案
- 2025年中级注册安全工程师《其他安全》十年真题考点
- (2025)行政执法人员考试题库(附答案)
- 院前急救工作制度及流程
- 1-安全生产治本攻坚三年行动工作方案及台账模板(2024-2026年)
- CQI审核管理办法
评论
0/150
提交评论