java课程设计 GUI编程猜数字游戏.doc_第1页
java课程设计 GUI编程猜数字游戏.doc_第2页
java课程设计 GUI编程猜数字游戏.doc_第3页
java课程设计 GUI编程猜数字游戏.doc_第4页
java课程设计 GUI编程猜数字游戏.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 GUI猜数字游戏程序 专业班级 学 号 姓 名 童 林 指导教师 2012 年 6 月目录1 设计时间12 设计目的13 设计任务14 设计内容1 4.1需求分析 14.1.1问题描述 14.1.2基本要求 14.2总体设计 24.2.1 包的描述24.2.2 类的描述24.2.3类之间的关系 24.3详细设计 24.3.1类图 34.3.2页面设计 44.4测试与分析 44.5 程序代码55总结与展望11参考文献121 设计时间2012年6月11日2012年6月15日2 设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。3设计任务设计一个GUI猜数字游戏程序,该游戏可以由程序随机产生四个0到9之间的整数,且不重复。玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。假设随机数据为3792 时,分析如下数据: 3792 输入: 1234 0A2B 输入: 5678 0A1B 输入: 0867 0A1B输入: 9786 1A1B 输入: 1794 2A0B 输入: 2793 2A2B 输入: 3792 4A0B4 设计内容 4.1需求分析4.1.1问题描述 利用GUI编程实现一个猜数字的游戏,该游戏可以由程序随机产生四个0到9之间的整数,且不重复。玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。然后,根据用户所输入的的四个数字和程序随机产生的四个数字进行比较(包括数值与位置的比较)。最后,把比较的结果在游戏界面上显示出来,让游戏者得知。4.1.2基本要求GUI猜数字游戏,主要解决问题包括编写GUI界面,实现猜数字的功能。猜数字游戏中要实现的主要功能有产生四个不重复的随机数,将随机数与游戏者输入的数字比较得出A(随机数与输入数字的数值相同且位置相同)和B(随机数与输入数字的数值相同但位置不同)的个数。4.2总体设计4.2.1 包的描述由于本程序就采用了AWT来实现游戏界面,仅仅就引用了Frame类,所以程序简单。程序只需要引用java.awt.*和java.awt.event.*,一个作为各控件的引用包,一个是监听事件的引用包。4.2.2 类的描述在设计类的时候,考虑到简单明了,就用了三个类,一个主类MyFrame和两个事件监听类NumberListener和OperatorListener作为程序的整体框架。其中,MyFrame类继承于Frame类,NumberListener和OperatorListener类继承于ActionListener接口,两个事件监听类还是两个内部类。4.2.3类之间的关系接口ActionListenerFrameNumberListenerMyFrameOperatorListener继承实现实现图14.3详细设计4.3.1类图Frameint i /标识,控制点击数字显示在相应TextFieldint f /标识,控制程序产生四个不同随机数int f1 /标识,控制A、B结果的显示int A /计数,随机数与输入数数值和位置都相同的数字个数int B /计数,随机数与输入数数值相同但位置都不同的数字个数int Enter /存储游戏者输入的四个数字int Arr /存储程序产生的四个随机数TextField tf1,tf2,tf3,tf4 /显示输入的数字TextField tf5,tf6 /显示A、B结果Panel p1,p2,p3,p4 /容器Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,11,b12 /按钮Label l1,l2 /显示A、Bpublic MyFrame() /实现游戏界面public void NumStore(ActionEvent e2) /游戏者输入四个数字,显示并存储public void EventClick(ActionEvent e3) /对相应事件作相应处理public static void main(String args) /实例化对象图2NumberListenerActionEvent e2 /产生触发事件的对象public void actionPerformed(ActionEvent e2) /对触发事件的对象进行事件处理图3OperatorListenerActionEvent e3 /产生触发事件的对象public void actionPerformed(ActionEvent e3) /对触发事件的对象进行事件处理图44.3.2页面设计图形界面的设计,考虑到简单、实用、高效等特点,我选择了AWT来实现完成。图54.4测试与分析1)点击开局,程序产生随机数,游戏者点击输入四个不同数字,然后点击确定按钮,程序内部进行比较,最后在A、B对应位置给出结果。图62)若不是全部正确,游戏者可以点击本局重猜,清除显示部分,重新猜数字。图73)当全部猜对后,游戏者可以点击开局,程序产生新的随机数,同时程序内部全部初始化,然后就可以进行新一轮的游戏。图84)点击退出,则结束并退出游戏。4.5 程序代码import java.awt.*;import java.awt.event.*;public class MyFrame extends FrameTextField tf1 = new TextField(); TextField tf2 = new TextField();TextField tf3 = new TextField(); TextField tf4 = new TextField();TextField tf5 = new TextField(); TextField tf6 = new TextField();int i = 1; int Enter = new int4; int Arr =new int4;int A; int B; int f = 0;int f1=1;public MyFrame()/实现游戏界面super(Tony Guess Game);setLocation(200, 200);setSize(200, 200);setVisible(true);Panel p1 = new Panel(new GridLayout(1, 4, 10, 5);Panel p2 = new Panel(new GridLayout(3, 3,6,6);Panel p3 = new Panel(new GridLayout(4, 1);Panel p4 = new Panel(new GridLayout(1, 3,6,6);tf1.setEditable(false); tf2.setEditable(false); tf3.setEditable(false);tf4.setEditable(false); tf5.setEditable(false); tf6.setEditable(false);tf1.setForeground(Color.red);tf2.setForeground(Color.red);tf3.setForeground(Color.red);tf4.setForeground(Color.red);tf5.setForeground(Color.red);tf6.setForeground(Color.red);p1.add(tf1); p1.add(tf2); p1.add(tf3); p1.add(tf4);NumberListener nl = new NumberListener();OperatorListener ol=new OperatorListener();Button b0 = new Button(0); b0.addActionListener(nl); Button b1 = new Button(1); b1.addActionListener(nl);Button b2 = new Button(2); b2.addActionListener(nl); Button b3 = new Button(3); b3.addActionListener(nl);Button b4 = new Button(4); b4.addActionListener(nl); Button b5 = new Button(5); b5.addActionListener(nl);Button b6 = new Button(6); b6.addActionListener(nl); Button b7 = new Button(7); b7.addActionListener(nl);Button b8 = new Button(8); b8.addActionListener(nl); Button b9 = new Button(9); b9.addActionListener(nl);Button b10 = new Button(本局重猜); b10.addActionListener(ol); Button b11 = new Button(确定); b11.addActionListener(ol);Button b12 = new Button(开局); b12.addActionListener(ol);b0.setForeground(Color.blue);b1.setForeground(Color.blue);b2.setForeground(Color.blue);b3.setForeground(Color.blue);b4.setForeground(Color.blue);b5.setForeground(Color.blue);b6.setForeground(Color.blue);b7.setForeground(Color.blue);b8.setForeground(Color.blue);b9.setForeground(Color.blue);b10.setForeground(Color.blue);b11.setForeground(Color.blue);b12.setForeground(Color.blue); p2.add(b7); p2.add(b8); p2.add(b9); p2.add(b4); p2.add(b5);p2.add(b6); p2.add(b1); p2.add(b2); p2.add(b3);Label l1 = new Label(A,Label.CENTER); Label l2 = new Label(B,Label.CENTER);l1.setForeground(Color.blue);l2.setForeground(Color.blue);p3.add(tf5); p3.add(l1); p3.add(tf6); p3.add(l2); p4.add(b12); p4.add(b0); p4.add(b10); p4.add(b11);add(p1, BorderLayout.NORTH); add(p2, BorderLayout.CENTER); add(p3, BorderLayout.EAST); add(p4, BorderLayout.SOUTH);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e1) System.exit(0); );pack();public void NumStore(ActionEvent e2)/对点击事件处理 if(i5) if (i=1)tf1.setText(e2.getActionCommand();if (i = 2)tf2.setText(e2.getActionCommand();if (i = 3)tf3.setText(e2.getActionCommand();if (i = 4)tf4.setText(e2.getActionCommand();Enteri - 1 = Integer.parseInt(e2.getActionCommand();/System.out.print(Enteri - 1);i+; public void EventClick(ActionEvent e3)/对事件进行处理if (e3.getActionCommand() = 开局)/产生四个不重复的随机数for (int m = 0; m 0) for (int p = 0; p m; p+)if (Arrp = n) f = 0; break; else f = 1; if (f = 1) Arrm = n; System.out.print(Arrm);tf1.setText(); tf2.setText(); tf3.setText();tf4.setText(); tf5.setText(); tf6.setText();i = 1; A = 0; B = 0;if (e3.getActionCommand() = 本局重猜)/清除tf1,tf2,tf3,tf4,tf5,tf6tf1.setText(); tf2.setText(); tf3.setText();tf4.setText(); tf5.setText(); tf6.setText();i = 1; A = 0; B = 0;f1=0;if (e3.getActionCommand() = 确定) /输入数字与随机数进行比较if(f1=0&i=5)for(int j=0;j4;j+) for(int k=0;k4;k+) if (Enterj = Arrk & j = k) A+; else if (Enterj = Arrk & j != k) B+;tf5.setText(String.valueOf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论