java课程设计之赛马游戏

上传人:第*** 文档编号:57330260 上传时间:2018-10-21 格式:DOC 页数:26 大小:350KB
返回 下载 相关 举报
java课程设计之赛马游戏_第1页
第1页 / 共26页
java课程设计之赛马游戏_第2页
第2页 / 共26页
java课程设计之赛马游戏_第3页
第3页 / 共26页
java课程设计之赛马游戏_第4页
第4页 / 共26页
java课程设计之赛马游戏_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《java课程设计之赛马游戏》由会员分享,可在线阅读,更多相关《java课程设计之赛马游戏(26页珍藏版)》请在金锄头文库上搜索。

1、目目 录录 一需求分析一需求分析 1 1 1.1 概述.2 1.2 课题分析.2 1.3 实现功能步骤 2 1.4 设计工作详解.2 1.5 外部界面需求.2 1.6 运行环境.3 二概要设计二概要设计 3 3 2.1 系统流程图.3 2.2 功能模块图.4 2.3 赛马比赛模拟程序初始化块.4 2.4赛马比赛区模块.4 2.5投注区模块.5 2.6线程启动及结束模块.5 2.7比赛结果显示区模块.5 三详细设计三详细设计 7 7 3.1 赛马比赛模拟程序初始化模块.6 3.2 赛马比赛区模块 .7 3.3 投注区模块 .8 3.4 线程启动及结束模块. 9 3.5 比赛结果显示区模块.12

2、3.6 程序流程.12 3.7 系统界面.13 四调试分析四调试分析 1313 4.1 调试过程中所遇到的问题及解决方法13 4.2 经验与体会14 五用户使用说明五用户使用说明 1414 六测试结果六测试结果 1414 七参考文献七参考文献 1818 八附录八附录 1818 一、一、需求分析需求分析 1.11.1 概述概述 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结 构中立的,可移植的,性能优异、多线程的动态语言。本次使用的是eclipse开 发软件。 以下就给出这次课题设计的题目: 模拟赛马比赛。 1.21.2 课题分析课题分析 a.课设题目:模拟赛马比赛 内容:

3、 1. 设计一个模拟赛马比赛软件,比赛显示赛马过程,每匹马每个时刻的加 速度都是随机的。 2. 能统计每匹马所跑完所需的总时间,最终的名次。 3. 支持用户对马进行投注,并记录输赢,保存到文件或数据库中。 b.从这个题目来分析,要做的主要有四大点: 1.第一点就是要设计用户登录赛马的页面,登陆后才能进行赛马和投注等 功能。 2.第二点就是要能在页面上进行投注和赛马。其中包括: (1)用户进行选马,和对选中的马进行有效的投注。 (2)开始赛马,期间用户不得进行其他操作。 (3)赛马结束,显示比赛输赢和投注金额的变化。 3.第三点就是用户能进行重新比赛等操作。 1.31.3 实现功能步骤实现功能步

4、骤 程序开始后,会进入用户登录界面,用户输入自己的姓名和密码后,选择 登录会进入到赛马比赛的界面,这时可以看见赛马场和马匹的编号,用户可以 选择任何一个编号的马进行投注,输入有效的投注金额(因为系统设置了初始 金额,所以不得投注的超过初始金额)。投注完成后用户可以选择开始比赛, 赛马期间用户不得进行任何操作,赛马结束后,用户可以重新进行新一轮的赛 马比赛,方法上同。 1.41.4 设计工作详解设计工作详解 通过这个分析,我认为主要是通过线程来实现马的运动,thread的子类创 建线程,线程的开始使马进行运动,再通过线程的休眠,随机获得休眠时间使 马获得随机的加速度,最后线程的终止使马停止运动。

5、期间还包括用Draw类以 及各种repaint()等方法来绘制马匹。 1.51.5 外部界面需求外部界面需求 本程序JFrame类其子类创建的对象是窗体,通过按钮JButton及标签组件JL abel来实现用户的登录界面。 赛马界面还运用到JPanel创建面板和FlowLayout 布局变量,区分赛马、投注、显示区域,还使用Draw类画马匹,来丰富整个赛 马的界面。 1.61.6 运行环境运行环境 系统软件:Window 7 所需文件:JTextDemo.java,Run.java,DateUtil.java 工具软件:Eclipse 二概要设计二概要设计 2.12.1 系统流程图系统流程图

6、重新开始 图2.1 系统流程图 开始 输入用户姓名及密码,进行登录 进入赛马比赛界面,在投注区使用鼠标操作,进 行对马匹的投注 选择马匹编号,输入投注金额,按下开始比赛按 钮。 界面显示赛马结果及资金变动结果 比赛线程开始,直到马匹跑完全程,线程结束 结束 2.22.2 功能模块图功能模块图 赌 获取比赛 获取比赛结束系统时间 金 初始系统 变 时间 化 图2.2 功能模块图 2.32.3 赛马比赛模拟程序初始化模块赛马比赛模拟程序初始化模块 在这一模块中,要求对赛马场、投注区及显示区的布局进行设置,初始化 程序窗口的大小,并创建程序窗口。 2.42.4 赛马比赛区模块赛马比赛区模块 其中此模

7、块包括对画出马匹和赛道部分,通过使用Draw类来向Jpanel面板 中添加马和赛道。 部分代码: class Draw extends JPanel int x=0; String s; int w,h; public void paint(Graphics g) super.paint(g); this.setBackground(Color.WHITE); w=this.getWidth(); h=this.getHeight(); 赛马比赛初始化 赛马比赛区 投注区 投 注 马 匹 投 注 金 额 画 出 马 匹 及 赛 道 赛马线程启动及结束 比赛结果显示区 g.setColor(Co

8、lor.BLACK); g.drawLine(66,h/2-44,666,h/2-44); g.drawLine(66,h/2+40,666,h/2+40); g.setColor(Color.BLACK); g.drawLine(66,0,66,h); g.setColor(Color.red); g.drawLine(666,0,666,h); g.drawRect(36+x,h/2-10,30,20);/马的显示 g.setColor(Color.BLACK);/文字显示 g.drawString(s,26,h/2-12); 2.52.5 投注区模块投注区模块 a.a. 投注马匹模块投注

9、马匹模块 主要是实现马匹的选择及投注的模拟,增加JRadioButton单选按钮选择 马匹。 b.b. 投注金额模块投注金额模块 TextField来输入投注金额,tfget接收后与总金额进行比较。 c.c. 赌金变化模块赌金变化模块 同时变量tz控制金额改变。 2.62.6 线程启动及结束模块线程启动及结束模块 a.a. 线程启动及结束部分模块线程启动及结束部分模块 使用 racing().start()启动线程,马匹开始运动。 b.b. 获取比赛初始系统时间模块获取比赛初始系统时间模块 线程run启动时,通过使用Calendar类来获取比赛开始时的系统时间,其中 使用getNow_HMS(

10、)方法来获取比赛的初始时间。 c.c. 获取比赛结束系统时间模块获取比赛结束系统时间模块 当比赛结束,线程终止时,通过使用Calendar类来获取比赛结束时的系统 时间,其中使用getNow_HMS()方法来获取比赛的结束时间。 2.72.7 比赛结果显示区模块比赛结果显示区模块 在JTextArea()分布的空间内,通过方法append()显示马匹的名次,用时等 信息。 三详细设计三详细设计 3.13.1 赛马比赛模拟程序初始化模块赛马比赛模拟程序初始化模块 在这一模块中,要求对赛马场、投注区及显示区的布局进行设置。 模块代码: public Run() frame=new JFrame(“

11、赛马“); p1=new JPanel(); p2=new JPanel(); p3=new JPanel(); ly=new FlowLayout(); jb=new JButton(“开始“); h1=new Draw(); h2=new Draw(); h3=new Draw(); h4=new Draw(); no=0; tz=20000; cotrol=true; h1.s=“1号马“; h2.s=“2号马“; h3.s=“3号马“; h4.s=“4号马“; b1=new JRadioButton(“1号马“); b2=new JRadioButton(“2号马“); b3=new

12、JRadioButton(“3号马“); b4=new JRadioButton(“4号马“); bg=new ButtonGroup(); money=new JLabel(“总金额为“+String.valueOf(tz); tf=new TextField(10); ta=new JTextArea(“,5,10); /放置单选按钮 bg.add(b1); bg.add(b2); bg.add(b3); bg.add(b4); /设置投注区 p3.add(new JLabel(“投注区“); p3.add(b1);p3.add(b2);p3.add(b3);p3.add(b4); p3.

13、add(money); p3.add(tf); /设置P2 p2.setBackground(Color.white); ly.setHgap(30);/设置布局的水平间隙 p2.setLayout(ly); p2.add(p3); p2.add(jb); p2.add(ta); /设置赛马区 p1.setBackground(Color.white); p1.add(new JLabel(“赛马区“); p1.setLayout(new GridLayout(5,1);/设置成5行1列的网格 p1.add(h1); p1.add(h2); p1.add(h3); p1.add(h4); /界

14、面设定 frame.setLayout(new BorderLayout(); frame.add(“Center“,p1); frame.add(“South“,p2); frame.setBounds(100,100,800,620); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置结束窗口 tf.addActionListener(this); jb.addActionListener(this); b1.addActionListener(new RadioListener();/按钮监听器 b2.addActionLi

15、stener(new RadioListener(); b3.addActionListener(new RadioListener(); b4.addActionListener(new RadioListener(); frame.setVisible(true); 3.23.2赛马比赛区模块赛马比赛区模块 使用Draw添加马和赛道。 模块代码: public class Run extends JFrame implements ActionListener racing ht;/赛马的进程 Draw h1,h2,h3,h4;/画出马的运动图形 JPanel p1;/赛马区 class

16、Draw extends JPanel int x=0; String s; int w,h; public void paint(Graphics g) super.paint(g); this.setBackground(Color.WHITE); w=this.getWidth(); h=this.getHeight(); g.setColor(Color.BLACK); g.drawLine(66,h/2-44,666,h/2-44); g.drawLine(66,h/2+40,666,h/2+40); g.setColor(Color.BLACK); g.drawLine(66,0,66,h); g.setColor(Color.red); g.drawLine(666,0,666,h); g.drawRect(36+x,h/2-10,30,20);/马的显示 g.setColor(Co

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号