JAVA课程设计_五子棋

上传人:xmg****18 文档编号:118727465 上传时间:2019-12-24 格式:DOC 页数:14 大小:207KB
返回 下载 相关 举报
JAVA课程设计_五子棋_第1页
第1页 / 共14页
JAVA课程设计_五子棋_第2页
第2页 / 共14页
JAVA课程设计_五子棋_第3页
第3页 / 共14页
JAVA课程设计_五子棋_第4页
第4页 / 共14页
JAVA课程设计_五子棋_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《JAVA课程设计_五子棋》由会员分享,可在线阅读,更多相关《JAVA课程设计_五子棋(14页珍藏版)》请在金锄头文库上搜索。

1、. . . . .辽 宁 工 业 大 学JAVA程序设计 课程设计(论文)题目: 五子棋 院(系): 软件学院 专业班级: 软件工程 学 号: 学生姓名: 指导教师: 王彦华 教师职称: 讲 师 起止时间: 2012.6.18至2012.7.1 程序设计专题(报告)任务及评语院(系):软件学院 教研室:软件教研室学 号 学生姓名 专业班级软件工程 程序设计(报告)题目五子棋程序设计(报告)任务程序设计专题的任务与要求:(1)掌握Java编程、面向对象的基础知识。(2)较熟练地编写Java应用程序Application。(3)了解Java的常用标准类库、编程技巧、异常处理。(5)联系已学过的内容

2、,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2012 年 7 月 5 日学习参考. . . . .目 录第1章 课程设计的目的与要求01.1 课程设计目的01.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设

3、计内容12.1课程设计主要内容12.2概要设计22.2.1需求分析22.2.2概念设计22.2.4 自定义类说明22.3详细设计42.3.1系统功能模块图42.3.2系统流程图52.3.3代码实现52.4测试分析122.4.1程序运行情况122.4.2程序异常处理13第3章 课程设计总结14参考资料15第1章 课程设计的目的与要求1.1 课程设计目的JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理

4、论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其

5、分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。第2章 课程设计内容2.1课程设计主要内容五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。经过一个学期的学习,使我对Java有了一定的了解。但要深入理解Java语言,单靠上课是不够的。必须通过课程设计,设计一个比较大的程

6、序,才能更深一步地理解Java语言。在这次课程中,我选择了网络五子棋作为课题。编写网络五子棋游戏要利用到Socket网络编程技术和多线程。通过这次课程设计,熟悉Java的GUI图形界面设计,网络Socket 编程和多线程编程。2.2概要设计2.2.1需求分析本系统主要是完成五子棋游戏的基本操作,在玩游戏的过程中玩家可以放松心情得到娱乐。本系统需要满足以下要求:本程序实现了一个小的五子棋游戏,可以实现两个人在用一台机器上进行游戏。程序会自动判断谁输谁赢,在游戏的开始,第一个人可以选择执白棋还是黑棋,之后点击开始进行游戏。2.2.2概念设计网络五子棋是采用网络协议为TCP/IP的网上对弈游戏,运用

7、“客户端服务器“(c/s)网络架构模式。实现用户通过Internt连接在任何地方与不同玩家进行对战。服务器可以创建任意多局游戏。通过使用多线程和网络套接字SOCKET来实现游戏之间的通讯,它是基于点对点的通讯。开始让服务器初始化建立服务器套接字SOCKET,基于某个端口PORT,服务器始终处于监听状态。客户端是动作的发起者,何时发出申请由客户端决定。客户端向服务器发出申请,服务器给予响应。打开客户端套接字SOCKET,连接到服务器端的地址ADDRESS和端口PORT。连接建立后,创建一个SOCKET实例,并开始一个线程,监听该客户端请求。服务器继续监听其它用户的连接。服务器通过数据输入流从客户

8、端接收信息,并且通过数据输出流把相应的信息发送给客户端。客户端发送请求和响应接收到的各种信息。在服务器和客户端之间传递的消息格式是采用“消息类别+内容“组成的,服务器和客户端在传递消息的过程,根据消息的类别来进行相关的操作。2.2.3 自定义类说明WuZiQi类:属性:int color_QiZi=0 黑字0 白字1 Int ChessBody=new int717; 无棋子0,黑棋1,白棋2; Int GameStart=0; JButton start,exit,rest; JButton check=new JButton3 String chess=黑方,白方,旁观;方法:获取下棋点位

9、 Public void mouseClicked(MouseEvent e) Int x,y; X=e.getX();y=e.getY(); /鼠标点击位置 If(x45|y495|y495) return; /在棋盘之外则不下 If(x%3015)/获取下棋点的位置 x+=30; If(y%3015) y+=30;ChatServer 类:属性: Vector threads 向量存储线程 Socket socket 服务端口 DataInputStream in 输入流 DataOutputStream out 输出流 int nid 用户ID方法: 构造器public ServerTh

10、read(Socket socket,Vector threads) 实现信息的输入、输出实现public void run()监听客户端是否发信息过来,当客户离开时向 其他客户发信息,把客户端的信息发给其他客户。 服务器向客户端发信息public void write(String msg) 获取线程IDpublic int getID() 设置线程IDpublic void setID(int nid)在Chatserver类内调用ServerThread 实现对所有来访客户监听,为来访者设置ID,若有离开用户,则在聊天板块广播。监听器:对角色选择按钮注册ActionListener监听,

11、设置用户的角色。定义黑子int类型 0,白子1。对按钮开始、重置注册ActionListener监听,如果点击开始,用户进 入下棋状态,有一方赢了,棋盘上则不能再点击棋子。点击重置,则开始新的一轮。对鼠标注册mouseClicked监听,鼠标点击棋盘时获取下棋的位置。对JTextField注册ActionListener,用户输入聊天信息后,通过Server传递给其他用户,在对话框JTextArea内显示。2.3详细设计2.3.1系统功能模块图Init()方法Paint()方法Run()方法注册监听WuZiQi类图2-1 功能模块图2.3.2系统流程图图2-2 客户端系统流程图2.3.3代码实

12、现下棋点击后天上棋子,每一步完了后判断胜负,从四个方向上判断胜负,并在棋盘中间显示哪方赢了!public void PlayQizi(int x,int 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-

13、12,24,24); ChessBodyx/30y/30=color_Qizi+1; /判断输赢/g.setColor(Color.magenta);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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号