小动物大比拼程序设计论文.docx
- 文档编号:11295765
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:16
- 大小:124.10KB
小动物大比拼程序设计论文.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
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赋值为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(); c.setLayout(newBorderLayout()); c.add(choicePanel,BorderLayout.NORTH); Container添加到容器中的组件放在一个列表中。 列表的顺序将定义组件在容器内的正向堆栈顺序。 如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动物 比拼 程序设计 论文