JAVA课程设计之赛马游戏

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一.需求分析................................... 错误!未定义书签。

1.1 概述 (2)

1.2 课题分析 (2)

1.3实现功能步骤 (2)

1.4设计工作详解 (2)

1.5外部界面需求 (2)

1.6 运行环境 (2)

二.概要设计 (3)

2.1系统流程图 (3)

2.2功能模块图 (4)

2.3赛马比赛模拟程序初始化块 (4)

2.4赛马比赛区模块 (4)

2.5投注区模块 (5)

2.6线程启动及结束模块 (5)

2.7比赛结果显示区模块 (5)

三.详细设计 (6)

3.1 赛马比赛模拟程序初始化模块 (6)

3.2赛马比赛区模块 (7)

63.3投注区模块.......................... 63.4线程启动及结束模块9 3.5 比赛结果显示区模块.. (126)

3.6 程序流程...................................................12错误!未定义书签。

3.7 系统界面 (6)

四.调试分析 (13)

4.1调试过程中所遇到的问题及解决方法 (13)

4.2经验与体会 (13)

五.用户使用说明 (14)

六.测试结果 (14)

七.参考文献 (18)

八.附录 (18)

一、需求分析

1.1 概述

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。本次使用的是eclipse 开发软件。

以下就给出这次课题设计的题目:

模拟赛马比赛。

1.2 课题分析

a.课设题目:模拟赛马比赛

内容:

1.设计一个模拟赛马比赛软件,比赛显示赛马过程,每匹马每个时刻的加

速度都是随机的。

2.能统计每匹马所跑完所需的总时间,最终的名次。

3.支持用户对马进行投注,并记录输赢,保存到文件或数据库中。

b.从这个题目来分析,要做的主要有四大点:

1.第一点就是要设计用户登录赛马的页面,登陆后才能进行赛马和投注等功能。

2.第二点就是要能在页面上进行投注和赛马。其中包括:

(1)用户进行选马,和对选中的马进行有效的投注。

(2)开始赛马,期间用户不得进行其他操作。

(3)赛马结束,显示比赛输赢和投注金额的变化。

3.第三点就是用户能进行重新比赛等操作。

1.3 实现功能步骤

程序开始后,会进入用户登录界面,用户输入自己的姓名和密码后,选择登录会进入到赛马比赛的界面,这时可以看见赛马场和马匹的编号,用户可以选择任何一个编号的马进行投注,输入有效的投注金额(因为系统设置了初始金额,所以不得投注的超过初始金额)。投注完成后用户可以选择开始比赛,赛马期间用户不得进行任何操作,赛马结束后,用户可以重新进行新一轮的赛马比赛,方法上同。

1.4 设计工作详解

通过这个分析,我认为主要是通过线程来实现马的运动,thread的子类创建线程,线程的开始使马进行运动,再通过线程的休眠,随机获得休眠时间使马获得随机的加速度,最后线程的终止使马停止运动。期间还包括用Draw类以及各种repaint()等方法来绘制马匹。

1.5 外部界面需求

本程序JFrame类其子类创建的对象是窗体,通过按钮JButton及标签组件

JLabel来实现用户的登录界面。

赛马界面还运用到JPanel创建面板和FlowLayout 布局变量,区分赛马、投注、显示区域,还使用Draw类画马匹,来丰富整个赛马的界面。

1.6 运行环境

系统软件:Window 7

所需文件:JTextDemo.java,Run.java,DateUtil.java

工具软件:Eclipse

二.概要设计

2.1 系统流程图

图2.1 系统流程图

2.2 功能模块图

图2.2 功能模块图

2.3 赛马比赛模拟程序初始化模块

在这一模块中,要求对赛马场、投注区及显示区的布局进行设置,初始化程序窗口的大小,并创建程序窗口。

2.4 赛马比赛区模块

其中此模块包括对画出马匹和赛道部分,通过使用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(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(Color.BLACK);//文字显示

g.drawString(s,26,h/2-12);

}

}

2.5 投注区模块

a.投注马匹模块

主要是实现马匹的选择及投注的模拟,增加JRadioButton单选按钮选择马匹。

b. 投注金额模块

TextField来输入投注金额,tfget接收后与总金额进行比较。

c. 赌金变化模块

同时变量tz控制金额改变。

2.6 线程启动及结束模块

a. 线程启动及结束部分模块

使用 racing().start()启动线程,马匹开始运动。

b. 获取比赛初始系统时间模块

线程run启动时,通过使用Calendar类来获取比赛开始时的系统时间,其中使用getNow_HMS()方法来获取比赛的初始时间。

c. 获取比赛结束系统时间模块

当比赛结束,线程终止时,通过使用Calendar类来获取比赛结束时的系统时间,其中使用getNow_HMS()方法来获取比赛的结束时间。

2.7 比赛结果显示区模块

在JTextArea()分布的空间内,通过方法append()显示马匹的名次,用时等信息。

相关文档
最新文档