java报告书智力游戏猜数字论文.docx
- 文档编号:30133011
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:20
- 大小:41.75KB
java报告书智力游戏猜数字论文.docx
《java报告书智力游戏猜数字论文.docx》由会员分享,可在线阅读,更多相关《java报告书智力游戏猜数字论文.docx(20页珍藏版)》请在冰豆网上搜索。
java报告书智力游戏猜数字论文
吉林工程技术师范学院
《面向对象程序设计——JAVA》
课程设计报告书
设计题目:
智力游戏猜数字专业:
信息管理与信息系统班级:
X-0841
学生姓名:
曾竹筠
学号:
0801094116
指导教师:
张勇
信息工程学院
2009年12月
摘要:
………………………03
第一章绪论………………………05
第二章系统分析………………………07
第三章总体设计………………………09
第四章编码实现………………………10
第五章调试与测试………………………11
第六章总结与心得………………………12
附录:
1源代码………………………16
2参考资料………………………35
摘要
面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。
作为一种新的的编程语言,Java很大程度推广了面向对象的思想。
随着计算机技术的发展,Java的强大展现出它不可替代的作用。
Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。
本文针对Java的具体应用,设计了一个小游戏。
根据游戏的规则,用户将可以和计算机进行简单对战。
程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。
关键字:
java 游戏软件开发
第一章绪论
面向对象(OOP)的程序设计认为:
现实世界是由一组彼此相关并互通信息的实体——对象(Object)组成的。
不管是一所学校、一个班级;一辆汽车、一张桌子;还是一个窗体、一个按钮,都可视作对象。
一个对象包含两部分内容:
描述对象状态的数据和描述对象行为或功能(方法)的编码。
数据和编码紧密结合,共同构成一个对象。
面向对象的程序设计有三大特性:
封装性、继承性和多态性。
计算机技术的应用正在朝着网络化的方向阔步前进,万维网成为世界上最大的信息中心。
但目前外围网上的内容仍多为文本、图像、声音等静态信息,Java为其提供了简便并且功能强大的编程接口,开发人员利用这些编程接口可以向Web增加动态性、交互性内容,这使得Web页面翻开了新的一页。
Java是一种跨平台的面向对象的语言,这就允许开发人员生成独立于平台的应用程序,用Java编写的程序可以在许多硬件平台上运行而不需要重新编译。
Java具有很多优点:
简单、面向对象、可移植、与硬件无关、强健安全、具有很高的性能,此外还对多线程、动态性提供了支持。
Java采用面向对象技术,所有的Java程序都是对象,通过封装性实现了模块化和信息隐藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。
Java最强大的是网络方面的应用,本课程设计不涉及网络方面的应用。
第二章系统分析
Java程序编辑器是:
图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:
考虑到简单、实用、高效等特点,就选择了AWT来完成实现。
2.1目的要求
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成小游戏设计,以及JAVA算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
1)进一步巩固、加深学生所学专业课程《面向对象程序设计-JAVA》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力;
2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力;
4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型;
5)掌握面向对象程序设计的方法。
6)熟练掌握JAVA的基本语法,灵活运用各种数据类型;
7)进一步掌握在DOS环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序.
2.2课程设计的预备知识
熟悉JAVA程序设计的基本知识:
1)GUI图形界面设计;
2)接口;
3)实现抽象方法;
4)响应事件.
2.3课程设计要求
仔细分析设计题目,编写程序源代码;
1)积极上机调试源程序,增强编程技巧与调程能力;
2)认真书写课程设计预习报告,课程设计说明书;
3)遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容.
第三章总体设计与详细设计
总体设计:
程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。
程序设计并实现一个类来玩游戏。
用可视化编程控件实现该程序。
系统随机产生四个数字与用户输入的四个数字进行比较是否正确。
详细设计:
1.程序的类名:
GuessNumGame
2.程序中相关的类:
String,Frame,Closing.
3.实现的方法主要有:
main(),createView(),actionPerformed(),
windowsClosing(),randomNum().
4.程序页面:
1)定义一个frame
2)设定宽和高,并设定出现的位置
3)设定前景色和背景色
5)设定布局管理器
第四章编码实现
//显示答案按钮单击事件监听
staticclassAnswerButtonimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
tf_an.setText(create_str);
}
}
//关闭按钮监听器
staticclassClosingextendsWindowAdapter
{
publicvoidwindowClosing(WindowEvente)
{
System.out.println("游戏窗口被关闭");
System.exit(0);
}
第五章调试与测试
运行结果如下:
1)写出批处理文件pcl.bat;
2)编写java格式的文件GuessNumGame.java;
3)开始运行,过程显示如下;
第六章总结与心得
个人分析:
程序从最初的黑盒子运行到后来的可视化,经过了一段“设计的思考”:
如何把游戏表现出来、如何让用户最快上手、如何完善游戏。
这属于需求分析的范畴。
在设计中不断体会系统的需求分析需求满足的重要,才会做出好的程序。
在程序实现的过程中,遇到的困难也不少。
不提编写的小错误,有所学的知识不够用的尴尬,有用户界面的多媒体实现的难处,不一而足。
于是我通过不断的学习和纠正错误,得到了最后的源程序。
后来是课程设计,并且要做好各个环节的分析,用语言表达出来。
这相当有难度。
也许在此之前已经把程序脱个精光,但是要把各个环节拆开并且详细描述就仿佛要把程序继续脱。
当然最终是“脱”出来了,也许还不尽如人意,但已能大致表达程序设计的思想了。
总结语:
作为率先推广面向对象思想的语言,java却不是革命性的东西,所有现有的java的思想都是继承自其他的语言和技术,没有什么革命的地方。
但是java在真正推动面向对象编程思想方面是功不可没的。
使用java编程,你无需考虑到向后兼容什么语言的问题,它是重新建立的语言,你在掌握这门语言之前,你必须将自己的编程思想由过程编程彻底转向面向对象编程,因为每个java程序,本身就是一个类,你编写任何java程序,你都不自觉的在构造一个对象模板,没有第二条道路,只能是面向对象编程。
相对于另一门面向对象的语言C++而言,java在面向对象的贯彻方面要比C++彻底。
有人说“C++是打着面向对象的幌子,干着过程编程的勾当”或许不是言过其辞,C++继承了C的面向过程的一些特性,而java几乎都用了面向对象的思想来实现程序。
但是无论是c++还是java都有可能走过程编程的老路,java降低的过程编写的可能性,但是如果你没有具备面向对象的编程思想,你还是可能走面向过程的老路的。
程序中生成了几个对象,均为较简单的对象,而却难免会步入面向过程的老路,但这看似是却是难免的:
实现游戏规则,就要把过程写出来。
最近接触了许多软件工程方面的知识,深深感到程序设计要走的路之漫长。
理解课程设计如果想要做好,绝不是一朝一夕的事。
本次毕业设计的每一个阶段:
系统分析、总体设计、编码实现、调试与测试,都是我在不断学习的情况下完成的。
而在这些过程中不断体会软件设计的各个步骤、各个环节,又转到不断学习中去。
古语有云“工欲善其事,必先利其器”,当初朦朦胧胧地写了代码,就体会到学习java仍然是处于初步阶段,远远不够“善其事”。
只是java的学习是要不断把所学和所用结合的,一次课程设计可以体会到知识的不足,而后补充所需的知识,再进行实践,再发现不足,如此不断,才能慢慢体会这门语言的精髓。
再如软件设计。
毋庸置疑,本次课程设计只是让我“摸一下软件设计”。
如专家所说,软件文档的编写是应当占了软件设计的90%的时间精力的,文档写好了,随便一个程序员都能做出软件来。
可见软件文档的重要性。
对于只是“了解软件工程”的我们来说,编写文档莫过于一件痛苦的事――并没有系统地学习过,却要一点一点地用出来。
看过大三的师兄的课程设计,洋洋洒洒的一本书,不禁为要走的路之漫长艰辛感慨不已。
但是倘若是真的有兴趣有毅力,这些应当不在话下。
是故,本次课程设计带给我的不仅仅是为未来打基础这么简单的收获,更多的是一种认识。
小至一门课程、一门语言,大至一门专业、一段人生,若不是热情主动刻苦地学习,将一无所获。
附录1
源代码
importjava.awt.*;
importjava.awt.event.*;
//定义类
publicclassGuessNumGame
{
staticTextFieldtf_w;
staticStringstr=newString();
staticTextFieldtf;
staticStringcreate_str=newString();
staticintcount=1;
staticintx=0;
staticinty=0;
staticTextFieldtf_an;
publicstaticvoidmain(String[]args)
{
GuessNumGamegng=newGuessNumGame();
gng.randomNum();
gng.createView();
}
publicstaticvoidcreateView()
{
Framef=newFrame("猜数字小游戏");
f.setBounds(100,100,800,500);
f.setForeground(Color.red);
f.setBackground(Color.green);
f.setLayout(newGridLayout(3,1));
Panelp1=newPanel(newGridLayout(1,3));
p1.add(newLabel("系统产生数字"));
tf_an=newTextField("系统已经产生随机数",20);
tf_an.setEditable(false);
p1.add(tf_an);
Buttonbu_an=newButton("显示答案");
bu_an.addActionListener(newAnswerButton());
p1.add(bu_an);
Panelp2=newPanel(newGridLayout(1,3));
p2.add(newLabel("用户输入4个数字"));
tf_w=newTextField();
p2.add(tf_w);
Buttonbu_que=newButton("确定答案");
bu_que.addActionListener(newListenButton());
p2.add(bu_que);
Panelp3=newPanel(newGridLayout(1,1));
tf=newTextField("这里是提示显示显示处");
tf.setEditable(false);
p3.add(tf);
f.add(p1);
f.add(p2);
f.add(p3);
f.setResizable(false);
f.addWindowListener(newClosing());
f.setVisible(true);
f.pack();
}
staticclassAnswerButtonimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
tf_an.setText(create_str);
}
}
staticclassClosingextendsWindowAdapter
{
publicvoidwindowClosing(WindowEvente)
{
System.out.println("游戏窗口被关闭");
System.exit(0);
}
}
staticclassListenButtonimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
booleanflag=true;
str=tf_w.getText();
inttemp_aa=Integer.parseInt(str);
inttemp_aa1=(int)(temp_aa/1000);
inttemp_aa2=((int)(temp_aa/100))%10;
inttemp_aa3=(int)((temp_aa%100)/10);
inttemp_aa4=(temp_aa%10);
inttemp_bb=Integer.parseInt(create_str);
inttemp_bb1=(int)(temp_bb/1000);
inttemp_bb2=((int)(temp_bb/100))%10;
inttemp_bb3=(int)((temp_bb%100)/10);
inttemp_bb4=(temp_bb%10);
Stringtemp_str_aa1=String.valueOf(temp_aa1);
Stringtemp_str_aa2=String.valueOf(temp_aa2);
Stringtemp_str_aa3=String.valueOf(temp_aa3);
Stringtemp_str_aa4=String.valueOf(temp_aa4);
if(str.equals(""))
{
tf.setText("你没有输入,是空的");
}
else
{
if(count==1&&flag==true)
{
if(str.equals(create_str))
{
tf.setText("你真厉害,一次就猜中了呵呵");
count++;
flag=false;
}
else
{
count++;
if(temp_aa1==temp_bb1)
{
x++;
}
if(temp_aa2==temp_bb2)
{
x++;
}
if(temp_aa3==temp_bb3)
{
x++;
}
if(temp_aa4==temp_bb4)
{
x++;
}
if(((create_str.indexOf(temp_str_aa1))!
=-1)&&(temp_aa1!
=temp_bb1))
{
y++;
}
if(((create_str.indexOf(temp_str_aa2))!
=-1)&&(temp_aa2!
=temp_bb2))
{
y++;
}
if(((create_str.indexOf(temp_str_aa3))!
=-1)&&(temp_aa3!
=temp_bb3))
{
y++;
}
if(((create_str.indexOf(temp_str_aa4))!
=-1)&&(temp_aa4!
=temp_bb4))
{
y++;
}
if(x==4)
{
tf.setText("恭喜你,终于答对了呵呵");
}
else
{
tf.setText("没关系,才猜一次,继续!
"+x+"猜中了"+y+"位置换错了");
}
x=0;
y=0;
flag=false;
}
}
if(count==2&&flag==true)
{
if(str==create_str)
{
tf.setText("不错嘛,第二次就猜中了!
");
count++;
flag=false;
}
else
{
count++;
if(temp_aa1==temp_bb1)
{
x++;
}
if(temp_aa2==temp_bb2)
{
x++;
}
if(temp_aa3==temp_bb3)
{
x++;
}
if(temp_aa4==temp_bb4)
{
x++;
}
if(((create_str.indexOf(temp_str_aa1))!
=-1)&&(temp_aa1!
=temp_bb1))
{
y++;
}
if(((create_str.indexOf(temp_str_aa2))!
=-1)&&(temp_aa2!
=temp_bb2))
{
y++;
}
if(((create_str.indexOf(temp_str_aa3))!
=-1)&&(temp_aa3!
=temp_bb3))
{
y++;
}
if(((create_str.indexOf(temp_str_aa4))!
=-1)&&(temp_aa4!
=temp_bb4))
{
y++;
}
if(x==4)
{
tf.setText("恭喜你,终于答对了呵呵");
}
else
{
tf.setText("没关系,还有两次机会,继续!
"+x+"猜中了"+y+"位置换错了");
}
x=0;
y=0;
flag=false;
}
}
if(count==3&&flag==true)
{
if(str==create_str)
{
tf.setText("还好,第三次猜中了!
");
count++;
flag=false;
}
else
{
if(temp_aa1==temp_bb1)
{
x++;
}
if(temp_aa2==temp_bb2)
{
x++;
}
if(temp_aa3==temp_bb3)
{
x++;
}
if(temp_aa4==temp_bb4)
{
x++;
}
if(((create_str.indexOf(temp_str_aa1))!
=-1)&&(temp_aa1!
=temp_bb1))
{
y++;
}
if(((create_str.indexOf(temp_str_aa2))!
=-1)&&(temp_aa2!
=temp_bb2))
{
y++;
}
if(((create_str.indexOf(temp_str_aa3))!
=-1)&&(temp_aa3!
=temp_bb3))
{
y++;
}
if(((create_str.indexOf(temp_str_aa4))!
=-1)&&(temp_aa4!
=temp_bb4))
{
y++;
}
if(x==4)
{
tf.setText("恭喜你,终于答对了呵呵");
}
else
{
tf.setText("加油啊,只有最后一次机会了,继续!
"+x+"猜中了"+y+"位置换错了");
}
count++;
x=0;
y=0;
flag=false;
}
}
if(count==4&&flag==true)
{
if(str==create_str)
{
tf.setText("庆幸吧,最后一次猜中了!
");
flag=false;
}
else
{
tf.setText("游戏结束了,你猜了四次都没有猜中!
");
System.out.println("游戏结束了,你猜了四次都没有猜中!
");
flag=false;
}
}
}
}
}
publicstaticStringrandomNum()
{
Stringresult="";
intint_temp=1;
for(inti=0;i<4;i++)
{
int_temp=(int)(Math.random()*10);
result=result+int_temp;
}
create_str=result;
System.out.println(create_str);
returncreate_str;
}
}
附录2
参考文献
1)陈轶.姚晓昆编著.Java程序设计实验指导.北京:
清华大学出版社,2006
2)郑莉.王行言.马素霞编著.Java语言程序设计.北京:
清华大学出版社,2006
3)王路群.Java高级程序设计.北京:
中国水利水电出版社,2006
4)朱喜福等编.Java程序设计.北京:
人民邮电出版社,2005
5)赵文靖编著.Java程序设计基础与上机指导.北京:
清华大学出版社,2006
6)宛延闿等编著.实用Java程序设计教程.北京:
机械工业出版社,2006
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 报告书 智力 游戏 数字 论文