Java简易猜拳小游戏设计.docx

上传人:b****7 文档编号:9326003 上传时间:2023-02-04 格式:DOCX 页数:17 大小:59.84KB
下载 相关 举报
Java简易猜拳小游戏设计.docx_第1页
第1页 / 共17页
Java简易猜拳小游戏设计.docx_第2页
第2页 / 共17页
Java简易猜拳小游戏设计.docx_第3页
第3页 / 共17页
Java简易猜拳小游戏设计.docx_第4页
第4页 / 共17页
Java简易猜拳小游戏设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Java简易猜拳小游戏设计.docx

《Java简易猜拳小游戏设计.docx》由会员分享,可在线阅读,更多相关《Java简易猜拳小游戏设计.docx(17页珍藏版)》请在冰豆网上搜索。

Java简易猜拳小游戏设计.docx

Java简易猜拳小游戏设计

吉林工程技术师范学院

C程序设计

课程设计报告书

 

设计题目:

Java简易猜拳小游戏专业:

信息管理与信息系统

班级:

X0841

********

学号:

**********

****************

 

信息工程学院

2009年12月

 

摘要:

……………………………03

第一章绪论………………………05

第二章系统分析………………………07

第三章总体设计………………………09

第四章编码实现………………………11

第五章调试与测试………………………14

总结:

……………………………………15

 

附录:

1源代码………………………20

2参考资料………………………30

 

摘要

面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。

作为一种新的的编程语言,Java很大程度推广了面向对象的思想。

随着计算机技术的发展,Java的强大展现出它不可替代的作用。

Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。

本文针对Java的具体应用,设计了一个小游戏。

根据游戏的规则,用户将可以和计算机进行简单对战。

程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。

关键字:

JAVA   GUI   游戏

 

ABSTRACT

 

TheObject-OrientedMethodisamethodwhichaplliestheObject-OrientedDesigntotheprocessofthesoftwareexploitureanddirectstheployofdevelopment.ItextractstheprimeoftheStructuredDesignforComputerProgrammers,dealsmatterswitha

folksyfashion,whichisconsideredtobeagrandnewsoftware-developtechnique.

Asanewprogramminglanguage,JavaspreadtheObject-OrientedDesigninacertaindegree.Withthedevelopmentofthetechniqueofcomputer,theinsurmountablefunctionofJAVAisexhibitedforits’mightiness.Notonlyappliesinnetwork,JAVAalsocanfulfilltherequirementoftheApplication-DesignandGame-Design.

Inthispaper,tousetheidiographicapplicationofJAVA,Idesignagamecalled.Followingtheregularofthegame,usercanplayasimplerevalrywithcomputer.ThisprogrammeactualizesafolksyGUImode,whichwillmakeusermastergameeasily.

 

Keywords:

JAVA     GUI   Game

 

第一章绪论

面向对象(OOP)的程序设计认为:

现实世界是由一组彼此相关并互通信息的实体——对象(Object)组成的。

不管是一所学校、一个班级;一辆汽车、一张桌子;还是一个窗体、一个按钮,都可视作对象。

一个对象包含两部分内容:

描述对象状态的数据和描述对象行为或功能(方法)的编码。

数据和编码紧密结合,共同构成一个对象。

面向对象的程序设计有三大特性:

封装性、继承性和多态性。

计算机技术的应用正在朝着网络化的方向阔步前进,万维网成为世界上最大的信息中心。

但目前外围网上的内容仍多为文本、图像、声音等静态信息,Java为其提供了简便并且功能强大的编程接口,开发人员利用这些编程接口可以向Web增加动态性、交互性内容,这使得Web页面翻开了新的一页。

Java是一种跨平台的面向对象的语言,这就允许开发人员生成独立于平台的应用程序,用Java编写的程序可以在许多硬件平台上运行而不需要重新编译。

Java具有很多优点:

简单、面向对象、可移植、与硬件无关、强健安全、具有很高的性能,此外还对多线程、动态性提供了支持。

Java采用面向对象技术,所有的Java程序都是对象,通过封装性实现了模块化和信息隐藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。

Java最强大的是网络方面的应用,本课程设计不涉及网络方面的应用。

 

 

第二章系统分析

Java程序编辑器是:

图形界面、线程、流与文件等技术的综合应用。

图形界面的实现:

考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。

线程实现文件自动保存:

在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。

文件操作的实现:

利用了字符文件流FileReader和FileWriter类来实现。

由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。

在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。

主类完成对象的实例化及显示。

这们设计的优点是:

条理清晰,容易理解,容易修改。

这样设计的缺点是:

不利于共享类中的方法。

 

 

第三章总体设计

 

3.1程序主要功能:

程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。

程序使用已创建的PairOfDice类,设计并实现一个类来玩游戏。

根据游戏规则玩家将和电脑进行比赛。

3.2本程序设计有一下几点设计要求:

(1)用可视化编程控件实现该程序。

(2)人和电脑对战,你输入石头或剪子或布后,电脑会说“你赢了”,“你输了”或“平”。

(3)在游戏结束时,要显示你赢了多少局,电脑赢了多少局,你们平了多少局

3.3用户动作事件描述:

3.1  进行游戏

3.1.1 清零:

对本次游戏的用户和电脑数据进行清零,即重新开始游戏。

 

3.3程序中所用类说明

(1)用户自定义类

类名:

SmallGame

作用:

实例化对象

主要成员变量:

FramemyFrm//定义主窗体

TextAreamyText//定义文本编辑区

ButtonBfontOK,Bfind,Breplace,Bnext,Bcancel//定义和创建各按钮

LabelLfLr,Ls//定义和创建各标签

MenuBarMbbar//定义和创建主菜单

MenuMfile,Medit,Mformation,Mhelp//定义和创建主菜单中的选项

ToolkittoolKit

ClipboardmyCB//剪切板对象

FileDialogmyFDlg//定义文件对话框

主要成员方法:

publicvoidinit()//初始化各部件菜单的定义和事件的监听

publicvoiddisplayEdit()//显示窗体及调用Time中的schedule方法

publicvoidwindowClosing()//关闭窗体

publicvoidsave//保存文件方法

.内部类类名:

KeyEvents

作用:

实现菜单的事件的响应功能

继承的父类:

KeyAdapter

主要成员变量:

成员方法:

actionPerformed()、keyPressed()

(2)用户自定义类与Java类的继承关系图如下:

自定义类Java类

 

第四章编码实现

概要设计:

本游戏程序共由6个java源文件个文本文件组成。

4.1.1 程序用到的类库简介

(1)Java的抽象窗口工具集AWT(AbstractWindowToolkit)中包含了很多的类来支持GUI的设计,使得用户和程序可以非常方便地进行交互。

java.awt包中包含Component、Panel、Frame、Applet、Container、Button等许多常用的类。

(2)Swing类库提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。

而javax.swing.event则供Swing组件触发的事件使用。

(3)此外,程序还用到了部分applet、net、io、util类。

 

4.1.2 游戏主程序设计

主程序PigPanel用到两个类:

Die和PairOfDice,均为已设计类。

Die类主要实现出招过程,PairOfDice过程主要返回游戏规定的得分情况,PigPanel使用这两个类,并产生用户交互界面,由用户操作实现出招、得分、等步骤。

4.1.3      主界面PigPanel类

1. 成员变量

restart

 Jbutton

 对本次游戏数据进行清零

 

get

 JButton

 模拟出招

pause

 Jbutton

 获得当前得分的点数

 

pod

 PairOfDice

 声明类以获得分点数

2.成员变量

info

 String

 储存读取的信息

 

ta

 JTextArea

 显示文字

 

 

第五章调试与测试

 

5.1系统在调度中经常出现的问题

(1)数据库的连接容易出错

(2)各种数据写入数据库时容易出错

(3)在调度中经常出现数词不匹配

 

第六章总结与心得

个人分析:

程序从最初的黑盒子运行到后来的可视化,经过了一段“设计的思考”:

如何把游戏表现出来、如何让用户最快上手、如何完善游戏。

这属于需求分析的范畴。

在设计中不断体会系统的需求分析需求满足的重要,才会做出好的程序。

在程序实现的过程中,遇到的困难也不少。

不提编写的小错误,有所学的知识不够用的尴尬,有用户界面的多媒体实现的难处,不一而足。

于是我通过不断的学习和纠正错误,得到了最后的源程序。

后来是课程设计,并且要做好各个环节的分析,用语言表达出来。

这相当有难度。

也许在此之前已经把程序脱个精光,但是要把各个环节拆开并且详细描述就仿佛要把程序继续脱。

当然最终是“脱”出来了,也许还不尽如人意,但已能大致表达程序设计的思想了。

虽然提交时间推延到了最后,但是我仍然感觉时间相对紧张(思想紧张?

),所以难免出现不足之处,有可完善的,也有个人能力之外的。

已知的列举如下:

1.出招过程未能表现;

2.没有开始菜单以及结束菜单;

3.不能由键盘控制;

4.在最大化窗口后出现部分界面不能显示;

5.界面还可更加完善;

6.应更多学习成熟游戏的优点,改善游戏环境;

7.编程还未能做到完全模块化,这是在课程设计中发现的;

 

总结语:

作为率先推广面向对象思想的语言,java却不是革命性的东西,所有现有的java的思想都是继承自其他的语言和技术,没有什么革命的地方。

但是java在真正推动面向对象编程思想方面是功不可没的。

使用java编程,你无需考虑到向后兼容什么语言的问题,它是重新建立的语言,你在掌握这门语言之前,你必须将自己的编程思想由过程编程彻底转向面向对象编程,因为每个java程序,本身就是一个类,你编写任何java程序,你都不自觉的在构造一个对象模板,没有第二条道路,只能是面向对象编程。

相对于另一门面向对象的语言C++而言,java在面向对象的贯彻方面要比C++彻底。

有人说“C++是打着面向对象的幌子,干着过程编程的勾当”或许不是言过其辞,C++继承了C的面向过程的一些特性,而java几乎都用了面向对象的思想来实现程序。

但是无论是c++还是java都有可能走过程编程的老路,java降低的过程编写的可能性,但是如果你没有具备面向对象的编程思想,你还是可能走面向过程的老路的。

程序中生成了几个对象,均为较简单的对象,而却难免会步入面向过程的老路,但这看似是却是难免的:

实现游戏规则,就要把过程写出来。

 

最近接触了许多软件工程方面的知识,深深感到程序设计要走的路之漫长。

理解课程设计如果想要做好,绝不是一朝一夕的事。

本次毕业设计的每一个阶段:

系统分析、总体设计、编码实现、调试与测试,都是我在不断学习的情况下完成的。

而在这些过程中不断体会软件设计的各个步骤、各个环节,又转到不断学习中去。

古语有云“工欲善其事,必先利其器”,当初朦朦胧胧地写了代码,就体会到学习java仍然是处于初步阶段,远远不够“善其事”。

只是java的学习是要不断把所学和所用结合的,一次课程设计可以体会到知识的不足,而后补充所需的知识,再进行实践,再发现不足,如此不断,才能慢慢体会这门语言的精髓。

再如软件设计。

毋庸置疑,本次课程设计只是让我“摸一下软件设计”。

如专家所说,软件文档的编写是应当占了软件设计的90%的时间精力的,文档写好了,随便一个程序员都能做出软件来。

可见软件文档的重要性。

对于只是“了解软件工程”的我们来说,编写文档莫过于一件痛苦的事――并没有系统地学习过,却要一点一点地用出来。

看过大三的师兄的课程设计,洋洋洒洒的一本书,不禁为要走的路之漫长艰辛感慨不已。

但是倘若是真的有兴趣有毅力,这些应当不在话下。

是故,本次课程设计带给我的不仅仅是为未来打基础这么简单的收获,更多的是一种认识。

小至一门课程、一门语言,大至一门专业、一段人生,若不是热情主动刻苦地学习,将一无所获。

附录一

源代码

importjava.util.Random;

importjavax.swing.*;

importjava.awt.BorderLayout;

importjava.awt.Container;

importjava.awt.event.*;

publicclassSmallGameextendsJframe

{

privateRandomr;

privatefinalString[]box={"剪刀","石头","布"};

privateJComboBoxchoice;

privateJTextAreata;

privateJLabellb;

privateintwin=0;

privateintloss=0;

privateintequal=0;

publicSmallGame()

{

setTitle("SmallGame");

initial();

pack();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocation(400,300);

setVisible(true);

}

publicvoidinitial()

{

r=newRandom();

choice=newJComboBox();

for(inti=0;i

{

choice.addItem(box[i]);

}

ta=newJTextArea(3,15);

ta.setEditable(false);

JButtonokBut=newJButton("出招");

okBut.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

ta.setText(getResult());

lb.setText(getTotal());

}

});

JButtonclearBut=newJButton("清除分数");

clearBut.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

ta.setText("");

win=0;

loss=0;

equal=0;

lb.setText(getTotal());

}

});

lb=newJLabel(getTotal());

JPanelchoicePanel=newJPanel();

choicePanel.add(choice);

choicePanel.add(okBut);

choicePanel.add(clearBut);

JScrollPaneresultPanel=newJScrollPane(ta);

JPaneltotalPanel=newJPanel();

totalPanel.add(lb);

ContainercontentPane=getContentPane();

contentPane.setLayout(newBorderLayout());

contentPane.add(choicePanel,BorderLayout.NORTH);

contentPane.add(resultPanel,BorderLayout.CENTER);

contentPane.add(totalPanel,BorderLayout.SOUTH);

}

publicStringgetResult()

{

Stringtmp="";

intboxPeop=choice.getSelectedIndex();

intboxComp=getBoxComp();

tmp+="你出:

\t"+box[boxPeop];

tmp+="\n电脑出:

\t"+box[boxComp];

tmp+="\n结果:

\t"+check(boxPeop,boxComp);

returntmp;

}

publicintgetBoxPeop(Stringstr)

{

returnchoice.getSelectedIndex();

}

publicintgetBoxComp()

{

returnr.nextInt(3);

}

publicStringcheck(intboxPeop,intboxComp)

{

Stringresult="";

if(boxPeop==(boxComp+1)%3)

{

result="你赢了!

";

win++;

}

elseif(boxPeop==boxComp)

{

result="平";

equal++;

}

else{

result="你输了!

";

loss++;

}

returnresult;

}

publicintgetPoint(){

return(win-loss)*10;

}

publicStringgetTotal()

{

return"赢:

"+win+"平:

"+equal+"输:

"+loss+"得分:

"+getPoint();

}

publicstaticvoidmain(String[]args)

{

SmallGamegame=newSmallGame();

}

}

调试窗口截图:

 

编译后运行的截图:

 

附录二

参考文献

1.《java编程基础》

2.入门级:

《java就业培训教材》张孝祥

3.

4.马士兵老师的视频

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1