五子棋java课程设计(共23页).doc





《五子棋java课程设计(共23页).doc》由会员分享,可在线阅读,更多相关《五子棋java课程设计(共23页).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课程设计(论文)任务书 软 件 学 院 学 院 软件+电子商务 专业 二 班 一、课程设计(论文)题目 java 课程设计五子棋带聊天系统 二、课程设计(论文)工作自 2010 年 12 月 20 日起至 2010 年 12 月 24 日止。三、课程设计(论文) 地点: 软 件 学 院 实 训 中 心 四、课程设计(论文)内容要求:1本课程设计的目的(1)掌握Java语言的程序设计方法; (2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。2课程设计的任务及要求1)课程设计任务:实现一个简单的多用户五子
2、棋的游戏程序,包括如下两个界面设计要求:1、五子棋游戏室界面:用户可以选择对弈桌及角色(执黑、执 白、旁观);2、游戏界面:有开始、退出、悔棋、判断胜负;发言及显示区;用户列表区;棋盘绘制区;3、使用Socket来完成服务端和客户端的通信;4、使用多线程技术支持多用户操作;5、增强功能:支持用户注册、添加和删除好友、战绩显示、发送消息、接受消息、多人聊天等功能;使用数据库保存用户信息。2)创新要求: 以上任务还未完善,悔棋、用户列表区及增强功能板块未完善。今后,参考资料书,实现五子棋网络对战及数据库的利用。3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路-工作原理、功能规划(3)
3、详细设计-数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。(4)运行调试与分析讨论-给出运行屏幕截图,分析运行结果,有何改进想法等。(5)设计体会与小结-设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7)报告按规定排版打印,要求装订平整,否则要求返工;(8)课设报告的装订顺序如下:封面-任务书-中文摘要-目录-正文-附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。4)课程设计评分标准: (1)学习态度:10分;(2)系统设计:20分;(3)编程调试:
4、20分;(4)回答问题:20分;(5)论文撰写:30分。5)参考文献:(1)丁振凡. Java语言实用教程(第2版)M. 北京邮电大学出版社. 2008.1 (2)丁振凡. Java语言实用教程实验指导(第2版)M. 北京邮电大学出版社. 2008.1(3)杨树林等. Java语言最新实用案例教程(第2版)M. 清华大学出版社. 2010.76)课程设计进度安排1准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2程序模块设计分析阶段(4学时):程序总体设计、详细设计3代码编写调试阶段(8学时):程序模块代码编写、调试、测试4撰写论文阶段(4学时):总结课程设计任务和设计内容,撰
5、写课程设计论文学生签名: 2010 年 12 月 20 日课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差(); (2)系统设计(20分):优( )、良()、中()、一般()、差(); (3)编程调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差(); 评阅人: 职称: 讲师 2010 年 12 月 25 日中文摘要 五子棋源于中国。我的这个棋盘是1515棋盘,横行、竖行都有15个交点,在交点处黑白棋子对弈。在横,竖,斜
6、四个方向若有一方连续超过5个则该方胜利。完成棋盘面板画棋盘,对鼠标注册监听扑捉下棋位,画上棋子。根据下棋位点,将棋子布局模拟成二位数组,对数组进行遍历,判断胜负。棋盘还附加了聊天功能,开启次程序后,便在ChatServer内申请账号,实现与其他户的群聊,采用了多线程技术和Socket实现通信。目录 专心-专注-专业一、课程设计任务及要求1、五子棋游戏室界面:用户可以选择对弈桌及角色(执黑、执白、旁观);2、 游戏界面:有开始、退出、悔棋、判断胜负;发言及显示区;用户列表 区;棋盘绘制区;3、使用Socket来完成服务端和客户端的通信;4、使用多线程技术支持多用户操作;5、增强功能:支持用户注册
7、、添加和删除好友、战绩显示、发送消息、接 受消息、多人聊天等功能;使用数据库保存用户信息。二、需求分析2.1 棋盘板块 画一个1515的棋盘版面,及两个按钮组。初始化:开始、重置、 退出;角色选择:黑方、白方、旁观。2.2 聊天板块 聊天信息显示区,聊天信息输入区。2.3 ChatSever 模拟服务器:用于桥接不同用户,实现接收用户发出的信息,然后 将信息传递到每个用户的聊天窗口。2.4 编译环境 Eclipse 实验室上机 在宿舍编写2.5 参考资料 Java 语言使用教程,百度文库资料(五子棋判断胜负算法)。三、设计思路3.1 板块的显示 画棋盘 调用public void paint(
8、Graphics g)QiPan(g);方法 画一个1515的棋盘面版。 初始化 定义两个Panel P1、P2,在初始化板块将JButton 开始、 重置,退出加入到P1,将黑方、白方、旁观加入到P2。 聊天板块 在初始化时定义一个JTextArea 和一个JTextField 实现聊 天功能3.2 注册监听 对角色选择按钮注册ActionListener监听,设置用户的角色。定义黑子int类型 0,白子1。 对按钮开始、重置注册ActionListener监听,如果点击开始,用户进 入下棋状态,有一方赢了,棋盘上则不能再点击棋子。点击重置,则开始新的一轮。 对鼠标注册mouseClicke
9、d监听,鼠标点击棋盘时获取下棋的位置。 对JTextField注册ActionListener,用户输入聊天信息后,通过Server传递给其他用户,在对话框JTextArea内显示。3.3 ChatServerclass ServerThread implements Runnable 类监听线程,监听是否有客户端法过信息来。属性: Vector threads 向量存储线程 Socket socket 服务端口 DataInputStream in 输入流 DataOutputStream out 输出流 int nid 用户ID方法: 构造器public ServerThread(Sock
10、et socket,Vector threads) 实现信息的输入、输出实现public void run()监听客户端是否发信息过来,当客户离开时向 其他客户发信息,把客户端的信息发给其他客户。 服务器向客户端发信息public void write(String msg) 获取线程IDpublic int getID() 设置线程IDpublic void setID(int nid) 在Chatserver类内调用ServerThread 实现对所有来访客户监听,为来访者设置ID,若有离开用户,则在聊天板块广播。3.4 下棋用二维数组模拟棋盘chessbody1717,黑方下棋,则黑方所
11、下棋位置的值等于旗子的颜色加一,白方类似。最后1代表下了黑棋,2表示下了白棋,0表示没下棋。从横向、纵向、斜方向判断胜负。下完一步判断一次,有一个方向上同色棋子数超过5,则胜负已判断。四、详细设计4.1 WuZiQi类 属性: int color_Qizi=0; 黑子0 白子1 int ChessBody=new int1717; 无棋子 0,黑棋 1,白棋 2; int GameStart=0; JButton start,exit,rest; JButton check=new JButton3; String chess=黑方,白方,旁观;方法: 获取下棋位点 public void m
12、ouseClicked(MouseEvent e) /Graphics g=getGraphics(); int x,y; x=e.getX();y=e.getY();/鼠标点击位置 if(x45|y495|y495) return;/在棋盘之外则不下 if(x%3015)/获取下棋点的位置 x+=30; if(y%3015) y+=30; x=x/30*30; /x、y为棋子中心位置 y=y/30*30; PlayQizi(x,y);/下棋 下棋点击后天上棋子,每一步完了后判断胜负,从四个方向上判断 胜负,并在棋盘中间显示哪方赢了! public void PlayQizi(int x,in
13、t y) if (GameStart=0) /判断游戏未开始 return; if (ChessBodyx/30y/30!=0) return; Graphics g=getGraphics(); if (color_Qizi=1)/判断黑子还是白子 g.setColor(Color.black); color_Qizi=0; else g.setColor(Color.white); color_Qizi=1; g.fillOval(x-12,y-12,24,24); ChessBodyx/30y/30=color_Qizi+1; /判断输赢/ g.setColor(Color.magent
14、a); g.setFont(new Font(fhahf ,Font.BOLD,30);if(GameWin横(x/30,y/30)g.drawString(GetQiziColor(color_Qizi)+赢了!,200,200);GameStart=0;if(GameWin竖(x/30,y/30)g.drawString(GetQiziColor(color_Qizi)+赢了!,200,200);GameStart=0; if(GameWin撇(x/30,y/30)g.drawString(GetQiziColor(color_Qizi)+赢了!,200,200);GameStart=0;
15、if(GameWin捺(x/30,y/30)g.drawString(GetQiziColor(color_Qizi)+赢了!,200,200);GameStart=0;4.2 ChatSever类 public void run()System.out.println (Thread is running);try/监听客户端是否发消息过来while(true)String receive = in.readUTF();if(receive = null)return;/当某客户离开,给其它客户端发消息if(receive.equals(leave)for(int i=0;i threads
16、.size();i+)ServerThread st = (ServerThread)threads.elementAt(i);st.write(*+getID()+leaving.*);else/把某客户端发过来的发送到所有客户端for(int i=0;i threads.size();i+)ServerThread st = (ServerThread)threads.elementAt(i);st.write(: +receive); 4.3多用户聊天 初始化网络,并连接到服务端try /获得URLURL url = this.getCodeBase();InetAddress addr
17、 = InetAddress.getByName(url.getHost();Socket socket;System.out.println (Server: +addr+ +url.getHost()+ +url.getProtocol();/5555 为服务器端口socket = new Socket(addr,5555);/由本套接口获得输入,输出流in = new DataInputStream(socket.getInputStream();out = new DataOutputStream(socket.getOutputStream();catch (Exception ex
18、) ex.printStackTrace(); 线程开始new Thread(this).start(); Run方法向服务器发送信息并接收信息 public void run() try /监视服务器所发送的信息 while(true) String receive = in.readUTF(); if(receive!=null) txtDisplay.append(receive + n); /将光标移动到最后一个以实现滚动条的自动置底 txtDisplay.setCaretPosition(txtDisplay.getText().length(); catch (Exception
19、ex) txtDisplay.append(Network problem or Server down); txtInput.setVisible(false); public void stop() try out.writeUTF(leave); catch(Exception ex)4.4 流程图 用户1用户2用户3用户5用户3Server 图 41 网络通信 用户与服务器间的通信是双向的,用户将信息传递给Server,Server再将信息传递给每个用户。 Init()方法Paint()方法Run()方法注册监听WuZiQi类 图 42 WuZiQi类的方法 棋盘继承JApplet类,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 java 课程设计 23

限制150内