小动物大比拼程序设计论文.docx
《小动物大比拼程序设计论文.docx》由会员分享,可在线阅读,更多相关《小动物大比拼程序设计论文.docx(16页珍藏版)》请在冰豆网上搜索。
小动物大比拼程序设计论文
北方民族大学大作业报告
(游戏程序设计)
系(部、中心)计算机科学与工程学院
姓名xxx学号2011xxxxx
专业计算机科学与技术
班级2011级2班
课程名称Java语言程序设计
作业题目名称《小动物大比拼游戏程序设计》
起止时间2013年4月17日——2010年5月18日
成绩
指导教师签名
小动物大比拼游戏程序设计
一、游戏的基本规则
玩家选择动物,电脑随机选择,每一次选择后,都会显示玩家选择的动物,和电脑选择的动物以及结果。
每一次选择系统都会计算出玩家赢的次数,输的次数,和平的次数以及分数。
如果想结束游戏关闭窗口即可。
二、主要实现思想和算法
1、本游戏根据动物之间的相互限制设计的,大象控制老虎和狐狸,老虎控制狐狸和老鼠,狐狸控制老鼠,老鼠控制大象,由于电脑是随机选择的,所以游戏总体来说是公平的。
Swing图形用户界面程序设计JFrame、JLable、JButton、JComboBox、JTextArea、JPanel、BoderLayout等
三、游戏软件系统的简介:
给出程序的功能模块,一般需要有功能模块图
综述程序结构,由几个类构成,每个类的功能是什么。
这部分一般还需给出类之间的关系图。
构造方法Game()创建类对象的初始化,设置窗口
ChoiceString[]box
JTextArea显示纯文本区域
JButton帮助
JButton清除
JButton选择加监听
成员方法initial()JOptionPane关闭窗口消息
(定义类的功能、JPanelchoicePanel=newJPanel()定义面板
初始化界面)(将Choice及三个按钮添加到面板)
JScrollPaneresultPanel=newJScrollPane(ta)
(把文本域添加到一个科滚动面板里)布局
JPaneltotalPanel=newJPanel()定义面板
Game类(把显示分数的lable添加到面板)
getBoxPeop(Stringstr)定义用户方法
方法getResult()调用
(获得结果的方法)
getBoxComp()电脑随机取数
Win
check(intboxPeop,intboxComp)equal
(主要比较方法)lost
getTotal()(显示得分)调用getPoint()
Main方法Gamegame=newGame();
四、程序的执行流程
String[]box(四选一)
调用getResult()
JTextArea作用(显示结果)
Ta.setText("");win=0;
loss=0;equal=0;lb.setText(getTotal())
JOptionPane.showMessageDialog
六、游戏软件的主要界面截图
主要的功能界面截图要加文字描述。
1、初始化界面
2、确定选择动物及结果表示
3、帮助界面
4、清除界面
5、退出界面
六、程序代码:
这部分的要求附完整的程序代码,并且代码中必须加必要的注释。
importjava.util.Random;
importjavax.swing.*;
importjava.awt.*;//导入窗体工具
importjava.awt.event.*;//导入awt事件中所有的类
publicclassGameextendsJFrame//Game继承父类JFrame
{
privateRandomr;//创建一个新的随机数生成器
privatefinalString[]box={"大象","老虎","狐狸","老鼠"};//string数组
privateJComboBoxchoice;//将按钮或可编辑字段与下拉列表组合
privateJTextAreata;//JTextArea是一个显示纯文本的多行区域
privateJLabellb;//用于短文本字符串或图像或二者的显示区
privateintwin=0;
privateintloss=0;
privateintequal=0;
publicGame()//构造方法是用来构造类的对象
super("小动物大比拼");//super是关键字表示直接父类的方法实现对类game构造方法的调用
initial();//调用initial方法,就是下面定义的那个.该方法主要是初始界面
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);//设置窗体大小
setLocation(530,260);//显示在桌面的位置
setVisible(true);//窗体可见
}
publicvoidinitial()//通过类的实例(某个对象)调用的方法
r=newRandom();
choice=newJComboBox();//初始化choice这个下拉框
for(inti=0;i{choice.addItem(box[i]);//向滚动列表的末尾添加指定的项choice.setBackground(Color.pink);}ta=newJTextArea(7,9);//初始化文本域7行9列ta.setEditable(false);//让用户不能编辑文本域即不能在里面写东西JButtonhelpbut=newJButton("帮助");//帮助按钮的创建于监听及消息窗口内容helpbut.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JOptionPane.showMessageDialog(null,"选择一个动物与电脑选择的动物进行比拼,大象控制老虎和狐狸,老虎控制狐狸和老鼠,狐狸控制老鼠,老鼠控制大象");}});JButtonokBut=newJButton("选择");//新建一个选择的按钮okBut.addActionListener(newActionListener()//给出选择按钮加个监听.如果点击就执行下面这个方法{publicvoidactionPerformed(ActionEvente){ta.setText(getResult());//给文本域赋值.就是显示结果lb.setText(getTotal());//给分数label赋值.就是显示分数}});JButtonclearBut=newJButton("清除");//新建一个清除分数的按钮clearBut.addActionListener(newActionListener()//加监听{publicvoidactionPerformed(ActionEvente)//用户点击了就执行这个方法{ta.setText("");//给文本域赋值为,就是清除他的内容win=0;//win赋值为0loss=0;equal=0;lb.setText(getTotal());//给显示分数那个文本赋值.因为前面已经都赋值为0了.所以这句就是让显示分数那都为0}});addWindowListener(newWindowAdapter(){//关闭窗口弹出对话框及内容publicvoidwindowClosing(WindowEvente){JOptionPane.showMessageDialog(null,"倩雪:好开心啊!我会在这里等你回来!");//设置对话框并为对话框设置内容showMessageDialog告知用户某事已发生。}});lb=newJLabel(getTotal());//初始化显示分数JPanelchoicePanel=newJPanel();//定义一个面板choicePanel.add(choice);//把下拉框加到面板里choicePanel.add(okBut);//把选择按钮加到面板里choicePanel.add(clearBut);//把清除分数按钮加到面板里choicePanel.add(helpbut);//把帮助按钮加到面板里JScrollPaneresultPanel=newJScrollPane(ta);//把文本域加到一个可滚动的面板里面.JScrollPane就是可滚动的面板.JPaneltotalPanel=newJPanel();//再定义个面板.用来显示分数totalPanel.add(lb);//把那个显示分数的label加到里面去Containerc=getContentPane();//下面就是布局了c.setLayout(newBorderLayout());c.add(choicePanel,BorderLayout.NORTH);c.add(resultPanel,BorderLayout.CENTER);c.add(totalPanel,BorderLayout.SOUTH);}publicStringgetResult()//获得结果的方法返回值是一个String..这个返回值会用来显示在文本域里面{Stringtmp="";intboxPeop=choice.getSelectedIndex();//获得你选择的的索引.从0开始的.没有就返回-1intboxComp=getBoxComp();//获得电脑出的索引.tmp+="倩雪选择:\t"+box[boxComp];tmp+="\n你选择:\t"+box[boxPeop];tmp+="\n结果:\t"+check(boxPeop,boxComp);returntmp;}publicintgetBoxPeop(Stringstr){returnchoice.getSelectedIndex();}publicintgetBoxComp()//就是产生一个0-3的随机数{returnr.nextInt(4);//Random的nextInt(inti)方法就是产生一个[0-i)的随机整数}publicStringcheck(intboxPeop,intboxComp){Stringresult="";if(boxPeop==boxComp){result="真有默契,一样了!";equal++;}elseif(boxPeop==0&&boxComp==1||boxPeop==0&&boxComp==2||boxPeop==1&&boxComp==2||boxPeop==1&&boxComp==3||boxPeop==2&&boxComp==3||boxPeop==3&&boxComp==0){result="恭喜你,你赢了!";win++;}elseif(boxPeop==0&&boxComp==3||boxPeop==1&&boxComp==0||boxPeop==2&&boxComp==0||boxPeop==2&&boxComp==1||boxPeop==3&&boxComp==1||boxPeop==3&&boxComp==2){result="很遗憾,你输了!";loss++;}returnresult;}publicintgetPoint(){return(win-loss)*10;}publicStringgetTotal(){return"赢:"+win+"平:"+equal+"输:"+loss+"得分:"+getPoint();}publicstaticvoidmain(String[]args){Gamegame=newGame();}}7、总结通过此游戏让我了解了以前没有用过的知识,在制作游戏时虽然问题多多。但是通过查帮助文档以及询问别人,问题都差不多解决了,虽然没有做出来自己心中所想,但相对自己来说,这是一种进步,以下是制作游戏过程中注意到的showConfirmDialog询问一个确认问题,如yes/no/cancel。showMessageDialog告知用户某事已发生showXxxDialog方法返回整数时,可能的值为:YES_OPTIONNO_OPTIONCANCEL_OPTIONOK_OPTIONCLOSED_OPTIONgetDefaultCloseOperation返回用户在此窗体上发起"close"时执行的操作。JComboBox将按钮或可编辑字段与下拉列表组合JTextAreaJTextArea是一个显示纯文本的多行区域JLabel用于短文本字符串或图像或二者的显示区构造方法:构造方法是用来构造类的对象的,方法名和类名相同没有返回值。一般用new构造方法名()来创建该类的对象。在不写构造方法的情况下会有一个默认的无参构造方法。成员方法:简单地说就是可以通过类的实例(某个对象)调用的方法,也就是我们正常情况下使用的方法。addItem向滚动列表的末尾添加指定的项。JButtonclearBut=newJButton("清除");新建一个清除分数的按钮clearBut.addActionListener(newActionListener()添加监听布局Containerc=getContentPane();c.setLayout(newBorderLayout());c.add(choicePanel,BorderLayout.NORTH);Container添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
choice.addItem(box[i]);//向滚动列表的末尾添加指定的项
choice.setBackground(Color.pink);
ta=newJTextArea(7,9);//初始化文本域7行9列
ta.setEditable(false);//让用户不能编辑文本域即不能在里面写东西
JButtonhelpbut=newJButton("帮助");//帮助按钮的创建于监听及消息窗口内容
helpbut.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
JOptionPane.showMessageDialog(null,"选择一个动物与电脑选择的动物进行比拼,大象控制老虎和狐狸,老虎控制狐狸和老鼠,狐狸控制老鼠,老鼠控制大象");
});
JButtonokBut=newJButton("选择");//新建一个选择的按钮
okBut.addActionListener(newActionListener()//给出选择按钮加个监听.如果点击就执行下面这个方法
publicvoidactionPerformed(ActionEvente)
ta.setText(getResult());//给文本域赋值.就是显示结果
lb.setText(getTotal());//给分数label赋值.就是显示分数
JButtonclearBut=newJButton("清除");//新建一个清除分数的按钮
clearBut.addActionListener(newActionListener()//加监听
publicvoidactionPerformed(ActionEvente)//用户点击了就执行这个方法
ta.setText("");//给文本域赋值为,就是清除他的内容
win=0;//win赋值为0
loss=0;
equal=0;
lb.setText(getTotal());//给显示分数那个文本赋值.因为前面已经都赋值为0了.所以这句就是让显示分数那都为0
addWindowListener(newWindowAdapter(){//关闭窗口弹出对话框及内容
publicvoidwindowClosing(WindowEvente){
JOptionPane.showMessageDialog(null,"倩雪:
好开心啊!
我会在这里等你回来!
");//设置对话框并为对话框设置内容showMessageDialog告知用户某事已发生。
lb=newJLabel(getTotal());//初始化显示分数
JPanelchoicePanel=newJPanel();//定义一个面板
choicePanel.add(choice);//把下拉框加到面板里
choicePanel.add(okBut);//把选择按钮加到面板里
choicePanel.add(clearBut);//把清除分数按钮加到面板里
choicePanel.add(helpbut);//把帮助按钮加到面板里
JScrollPaneresultPanel=newJScrollPane(ta);//把文本域加到一个可滚动的面板里面.JScrollPane就是可滚动的面板.
JPaneltotalPanel=newJPanel();//再定义个面板.用来显示分数
totalPanel.add(lb);//把那个显示分数的label加到里面去
Containerc=getContentPane();//下面就是布局了
c.setLayout(newBorderLayout());
c.add(choicePanel,BorderLayout.NORTH);
c.add(resultPanel,BorderLayout.CENTER);
c.add(totalPanel,BorderLayout.SOUTH);
publicStringgetResult()//获得结果的方法返回值是一个String..这个返回值会用来显示在文本域里面
Stringtmp="";
intboxPeop=choice.getSelectedIndex();//获得你选择的的索引.从0开始的.没有就返回-1
intboxComp=getBoxComp();//获得电脑出的索引.
tmp+="倩雪选择:
\t"+box[boxComp];
tmp+="\n你选择:
\t"+box[boxPeop];
tmp+="\n结果:
\t"+check(boxPeop,boxComp);
returntmp;
publicintgetBoxPeop(Stringstr)
returnchoice.getSelectedIndex();
publicintgetBoxComp()//就是产生一个0-3的随机数
returnr.nextInt(4);//Random的nextInt(inti)方法就是产生一个[0-i)的随机整数}
publicStringcheck(intboxPeop,intboxComp)
Stringresult="";
if(boxPeop==boxComp)
result="真有默契,一样了!
";
equal++;
elseif(boxPeop==0&&boxComp==1||boxPeop==0&&boxComp==2||boxPeop==1&&boxComp==2||boxPeop==1&&boxComp==3||boxPeop==2&&boxComp==3||boxPeop==3&&boxComp==0)
result="恭喜你,你赢了!
win++;
elseif(boxPeop==0&&boxComp==3||boxPeop==1&&boxComp==0||boxPeop==2&&boxComp==0||boxPeop==2&&boxComp==1||boxPeop==3&&boxComp==1||boxPeop==3&&boxComp==2)
result="很遗憾,你输了!
loss++;
returnresult;
publicintgetPoint(){
return(win-loss)*10;
publicStringgetTotal()
return"赢:
"+win+"平:
"+equal+"输:
"+loss+"得分:
"+getPoint();
publicstaticvoidmain(String[]args)
Gamegame=newGame();
7、总结
通过此游戏让我了解了以前没有用过的知识,在制作游戏时虽然问题多多。
但是通过查帮助文档以及询问别人,问题都差不多解决了,虽然没有做出来自己心中所想,但相对自己来说,这是一种进步,以下是制作游戏过程中注意到的
showConfirmDialog询问一个确认问题,如yes/no/cancel。
showMessageDialog告知用户某事已发生
showXxxDialog方法返回整数时,可能的值为:
YES_OPTIONNO_OPTIONCANCEL_OPTIONOK_OPTIONCLOSED_OPTION
getDefaultCloseOperation返回用户在此窗体上发起"close"时执行的操作。
JComboBox将按钮或可编辑字段与下拉列表组合
JTextAreaJTextArea是一个显示纯文本的多行区域
JLabel用于短文本字符串或图像或二者的显示区
构造方法:
构造方法是用来构造类的对象的,方法名和类名相同没有返回值。
一般用new构造方法名()来创建该类的对象。
在不写构造方法的情况下会有一个默认的无参构造方法。
成员方法:
简单地说就是可以通过类的实例(某个对象)调用的方法,也就是我们正常情况下使用的方法。
addItem向滚动列表的末尾添加指定的项。
JButtonclearBut=newJButton("清除");新建一个清除分数的按钮
clearBut.addActionListener(newActionListener()添加监听
布局Containerc=getContentPane();
Container添加到容器中的组件放在一个列表中。
列表的顺序将定义组件在容器内的正向堆栈顺序。
如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1