当前位置:
文档之家› java游戏开发课程设计报告
java游戏开发课程设计报告
3.2 系统设计 3.2.1 系统总体设计
系统功能分析 本系统要用到以下的Java编程技术实现的功能: ① 网络功能:这一程序将由一个服务器程序和一个客户端程序构 成。客户端用来猜测随机字母和随机数的大小。服务器用来产生随机字 母和随机数,来确定是否猜中。 ②多线程功能:当客户端要求与服务器端建立连接时,服务器端就 将用到多线程功能,为每一个建立起来的连接创建一个线程。
7 附录 (1)基本类的程序代码: ① Server类的代码:
import .*; import java.io.*; import java.util.*; import ng.String.*; // 服务器类 public class Server{ // 存储套接字 static DatagramSocket serv; // 存储端口号 static int port; // 存放接收到的数据包中的信息 static byte[] info = new byte[1000]; // 存储接收到的数据包 static DatagramPacket rec = new DatagramPacket(info, info.length); // 存储要发送的数据包 static DatagramPacket snd; // 存储要发送或提取出的信息 static String msg; // 主方法 public static void main(String[] args) { System.out.println("网络益智游戏——服务器"); try { // 将第1个参数转化为端口号 port = (int)Float.parseFloat(args[0]); // 创建套接字
图5 服务器运行界面
在另一台客户端的计算机上打开另一个DOS窗口,输入命令: javac Client.java 进行编译 然后输入命令:java Client 192.168.0.72 6666 运行第客户端程序,Client执行后,windows窗口会显示如图6所 示:
图6 客户端程序的运行界面
4 系统测试和使用说明 4.1 系统测试
使用JDK运行程序时,将server子目录和 client子目录下分别放在两
台计算机上。分别用来做服务器和客户端。 在服务器端的计算机上打开一个DOS窗口,使用命令:Javac Server .java 用来编译服务器上的源代码。 使用命令: java Server 6666 运行服务器程序Server,启动服务器 端,DOS窗口显示:网络益智游戏——服务器,如图5所示:
4
7
5.1 遇到的问题和解决方法 5.2 心得体会 9 6 参考文献 9 7 附录 10
8
网络益智游戏
1 实践过程概述
此次软件技术专业JAVA游戏开发课程设计于2009年6月在实验楼三 楼机房进行,持续时间为两周。本次课程设计主要是利用所学的面向对 象程序设计语言——JAVA来编写程序,实现特定功能,以加深对JAVA 的理解。
《 JAVA 游戏开发 》 课程设计报告 题 目 网络益智游戏
姓 学 专 班
名: 号: 业: 级:
云红卫 081012130 软件技术 软件082
计算机科学与技术系
2009年6月
目 录
1 实践过程概述 4 2 课程设计题目描述 4
3 系统需求分析与设计 3.1 系统需求分析 4 3.2 系统设计 4 4 系统测试和使用说明 4.1 系统测试 7 4.2 系统使用说明ava游戏编程导学.北京:清华大学出版社,2004 [2] 飞思科技产品研发中心.精通Java.北京:电子工业出版社,2004 [3] 朱福喜等.Java项目设计与开发范例.电子工业出版社,2005 [4] Robert C.Martin 著,黄晓春译.UML FOR JAVA PROGRAMMERS.清华 大学出版社,2004
成一个随机字母,并输出。游戏者有10次试猜机会,每次接收到包含试 猜答案的数据包后,都先把试猜答案输出,再调用judge()方法判断答案 的匹配情况。如果答案完全匹配,返回答案正确的提示信息,否则继续 进行游戏。如果超过10次未猜对,也结束游戏,并向客户端返回正确答 案。 judge()方法是判断试猜答案与正确答案匹配情况的方法,组合答案 匹配情况的信息,存储到字符串msg中,并封装到数据包发送给客户 端。如果答案完全匹配,则返回1,否则返回0。 getZimu()方法是用来生成随机数序列的,它创建了一个Random类 对象,并调用它的nextInt()方法来生成随机数。每次生成的随机数,都 要与已生成随机数比较,如果有重复,则重新生成,直到不与已生成的 随机数重复。 guessPro()方法是用来进行猜大小游戏的,它创建了一个Random类 对象,并调用它的nextInt()方法来生成一个0~100之间的随机数,存放 到num变量中,并输出。游戏者有10次试猜机会,每次接收到包含试猜 答案的数据包后,都先把试猜答案输出,再将其转化为int型数与num比 较大小,根据大小情况向客户端返回相应提示信息,同时也在服务器端 输出。如果答案完全匹配,返回答案正确的提示信息,否则继续进行游 戏。如果超过10次未猜对,也结束游戏,并向客户端返回正确答案。 Client类 Client类其中定义了10个成员变量和4个成员方法。serv变量用于存 储套接字,port变量存储端口号,info数组存放接收到的数据包中的信 息,rec变量存储接收到的数据包,snd变量存储要发送的数据包,msg 变量存储要发送或提取出的信息,localHost变量存储本地主机的IP地 址,host变量存储服务器的IP地址,IP变量是服务器IP地址的字符串形 式,IPAddr数组是服务器IP地址的字节数组形式。main()方法是主方 法,用于创建套接字,选择游戏,控制程序的终止;playGuessZimu()方
2 课程设计题目描述
我们设计的网络益智游戏:是一台计算机做服务器产生一个随机数 和随机字母,另一台计算机做客户端来猜。
3 系统需求分析与设计 3.1 系统需求分析
随着现在生活节奏的不断加快,现在许多的人们在工作之余,需要 通过一些益智小游戏,来调节一下自己的情绪,释放一下自己的疲劳。 而网络益智游戏正好符合人们的要求,它不需要你过多的去思考答案, 只是轻松一下紧张的神经,放松一下心情,就像开心农场一样,在人们 的工作之余调节一下。
的,程序中要捕获异常,就要用到多种捕获异常类,这些类是在J2SE编 程环境下自动引入的ng包类的异常类。
5.2 心得体会
在这次的面向对象程序设计中,我主要运用了JAVA语言的多线 程、异常处理、网络传输等,综合运用了JAVA语言。我深刻感受到了 面向对象语言中类库的强大功能,掌握了运用JAVA中的类实现某些基 本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自 学奠定了基础。这次设计中,再一次让我感受到了网络通信中服务器和 客户相互通信的特点,同时也加深了对网络通信知识的理解。 通过这次为时二周的课程设计,我学到了很多的东西,下面就这在 这次课程设计中的心得体会总结如下: 在这次的面向对象程序设计中,主要是运用JAVA语言来编写,并 可运用其他的技术。在我的系统中,还采用了多线程、异常处理、网络 传输等技术,而这些知识都是我们没有学过的,这就要求我们去查阅相 关书籍。正因为这样,才锻炼了我的自学能力,为以后的学习打下了基 础。 这次设计中,我深刻感受到了面向对象语言中类库的强大功能,掌 握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的 方法,为以后的面向对象语言的自学奠定了基础。同时,我也感受到了 网络通信中服务器和客户相互通信的特点,加深了对网络通信知识的理 解,拓宽了我的知识面。 通过二周的努力,这次课程设计圆满的结束了,在这个过程中,我 学到了很多的知识,同时也非常感谢杭志老师帮助与指导。在以后的学 习中,我会更加努力的学好专业知识,并将所学知识用于实践当中去, 以便牢固掌握知识。
法是进行猜字母游戏的方法;playGuessPro()方法是进行猜大小游戏的 方法;toIPAddr()方法用于将字符串形式的IP地址转换为字节数组形 式。 在main()方法中,首先调用toIPAddr()方法,将存储服务器IP地址第 1个参数,转存到字节数组中,再把第2个参数转化为端口后,据此创建 一个套接字和存储服务器地址的InetAddress类对象host。然后调用 InetAddress类对象的getLocalHost()方法,获得本机IP地址,并传送给服 务器,告知服务器要加入游戏。然后,接收服务器发来的数据包,根据 其中的提示信息,选择游戏或退出程序。如果输入的是“quit”指令,则 终止程序,关闭套接字;如果输入的是1,选择玩猜字母游戏,调用 playGuessZimu()方法;如果输入的是2, playGuessPro()方法。 playGuessZimu()方法负责猜字母游戏的发送和接收,每次试猜,它 都完成以下过程:将键盘键入的数据封装到数据包,发送给服务器,再 接收服务器的回复。提取其中的匹配情况信息,并输出,再把存储试猜 次数的cnt变量加1。如果完全匹配,输出答案正确的提示信息,终止游 戏,否则继续游戏。如果已经试猜10次,将服务器返回的正确答案输 出,再终止游戏。 playGuessPro()方法负责猜大小游戏的发送和接收,其运行与处理 过程与playGuessZimu()方法类似。 toIPAddr()方法将一个存储IP地址的字符串转化为字节数组。它从 字符串的尾部开始向前搜索,在遇到“.”号前所搜索到的数字都是属于IP 地址的某一段,将它累加到变量t中。直到遇到“.”号,将t清零后重新开 始累加。 选择玩猜大小游戏,调用
4.2 系统使用说明
由于字母和数字都是随机产生的,我们猜测字母的时候只能依靠我 们子的运气去随机猜测,猜数字大小的时候,我们可以根据服务器给我 们发过来的信息,来猜测。
5 课程设计总结 5.1 遇到的问题和解决方法
在用JAVA编写程序时,我遇到了很多困难,如怎样用Socket类实 现客户端和服务器端的通信,怎样来把字符串转换为一个个的字符。通 过查阅相关书籍以及在网上搜索资料,我们了解到要使用类中的 MessageListenning来负责侦听客户端的消息,使用Thread类创建线程接 收客户端发出的消息,使用MulticastSendingThreas类向客户端广播消 息。在本系统中,我们用到了前者。设计是以Java独立应用程序来实现