JAVA课程设计之赛马游戏

JAVA课程设计之赛马游戏
JAVA课程设计之赛马游戏

目录

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

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()显示马匹的名次,用时等信息。

三.详细设计

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

在这一模块中,要求对赛马场、投注区及显示区的布局进行设置。模块代码:

public Run()

{

frame=new JFrame("赛马");

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 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.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);

//界面设定

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.addActionListener(new RadioListener());

b3.addActionListener(new RadioListener());

b4.addActionListener(new RadioListener());

frame.setVisible(true);

}

3.2赛马比赛区模块

使用Draw添加马和赛道。

模块代码:

public class Run extends JFrame implements ActionListener

{

racing ht;//赛马的进程

Draw h1,h2,h3,h4;//画出马的运动图形

JPanel p1;//赛马区

……

}

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);

}

}

3.3 投注区模块

这一模块包括投注马匹和投注金额模块。主要是实现马匹的选择及投注的模拟,增加JRadioButton单选按钮选择马匹,TextField来输入投注金额,同时变量tz控制金额改变。

模块代码:

public class Run extends JFrame implements ActionListener

{

……

JPanel p3;//投注区

JButton jb;//开始按钮

JFrame frame;

DateUtil d1=new DateUtil();

boolean cotrol;//对投注额改变的变量

int no;//名次编号

String s;//投注单选事件的变量符号

JRadioButton b1,b2,b3,b4;//投注的单选按钮

ButtonGroup bg;//按钮注,使其为单选

JTextArea ta;//赛马的文字显示

JLabel money;//投注总金额标签

TextField tf;//投注金额的输入窗口

int tz;//投注金额变化的变量

String tfget;//投注总金额的中转变量

FlowLayout ly;//布局变量

}

public void actionPerformed(ActionEvent e)

if(bg.getSelection()!=null)

{//投注单选按钮选择确认

if(e.getActionCommand()=="开始")

{

tfget=tf.getText();

try{

if(Integer.parseInt(tfget)>0&&Integer.parseInt(tfget)<=tz)//string转换成int {//投注金额确认

ta.setText("比赛开始了"+'\n');

new racing(h1,this).start();

new racing(h2,this).start();

new racing(h3,this).start();

new racing(h4,this).start();

jb.setText("重新开始");//赛马按键标签改变

b1.setEnabled(false);//赛马开始后,禁止操作

b2.setEnabled(false);

b3.setEnabled(false);

b4.setEnabled(false);

tf.setEditable(false);

jb.setEnabled(false);

}

else

{

JOptionPane.showMessageDialog(null, "投注金额错误,请重新投注");//信息对话框}

}

catch(Exception ex)

{

JOptionPane.showMessageDialog(null, "投注格式错误,请重新投注");

}

}

}

else

{

JOptionPane.showMessageDialog(null, "请选号确认投注");

}

3.4线程启动及结束模块

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

模块代码:

public void actionPerformed(ActionEvent e)

{

……

ta.setText("比赛开始了"+'\n');

new racing(h1,this).start();

new racing(h2,this).start();

new racing(h3,this).start();

new racing(h4,this).start();

jb.setText("重新开始");//赛马按键标签改变

b1.setEnabled(false);//赛马开始后,禁止操作

b2.setEnabled(false);

b3.setEnabled(false);

b4.setEnabled(false);

tf.setEditable(false);

jb.setEnabled(false);

}

……

if(e.getActionCommand()=="重新开始")

{//重新开始,相应的控制重置

restar(h1,this);

restar(h2,this);

restar(h3,this);

restar(h4,this);

cotrol=true;

no=0;

ta.setText("");

tf.setEditable(true);

b1.setEnabled(true);

b2.setEnabled(true);

b3.setEnabled(true);

b4.setEnabled(true);

jb.setText("开始");

}

}

class racing extends Thread

{//马运动的线程控制

Draw a;

Run r ;

DateUtil d=new DateUtil();

racing(Draw h,Run b)

{

this.a=h;

this.r=b;

}

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

线程run启动时,通过使用Calendar类来获取比赛开始时的系统时间,其

中使用getNow_HMS()方法来获取比赛的初始时间。

模块代码:

import java.util.*;

public class DateUtil{

public static String getNow_M(){

Calendar c=Calendar.getInstance();

String minute=String.valueOf(c.get(Calendar.MINUTE));

if(minute.length()==1){

minute="0"+minute;

}

String ms1=minute;

return ms1;

}

public static String getNow_S(){

Calendar c=Calendar.getInstance();

String second=String.valueOf(c.get(Calendar.SECOND));

if(second.length()==1){

second="0"+second;

}

String ms2=second;

return ms2;

}

public int getNow_HMS(){

String s1,s2;

s1=getNow_M();

s2=getNow_S();

int a=Integer.parseInt(s1)*60+Integer.parseInt(s2);

return a;

}

public static void main(String[] args) {

DateUtil d;

d=new DateUtil();

d.getNow_HMS();

}

}

public int Time(){

int oo=d1.getNow_HMS();

return oo;

}

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

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

模块代码:

public void run()

{ int t;

int o,y;

o=r.Time();

……

y=d.getNow_HMS();

int z=y-o;

ta.append("用时:"+z+"秒"+'\n');

}

3.5比赛结果显示区模块

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

3.6 程序流程

进入赛马比赛界面

点击任意一匹马的编号

向投注区内输入投注的金额

点击开始比赛按钮

比赛结束

点击重新开始比赛进入上面循环

直到用户金额为空或者自行退出比赛

3.7 系统界面

四.调试分析

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

本次课设遇到几个问题,但是通过仔细查找资料也能很快的进行解决:

1.本次要求中有需要马的加速度的随机的,这个问题后来使用线程的休眠

来解决的。通过使用随机来获得休眠时间,最后每匹马的休眠时间的不

同,从而达到每匹马的加速度的不同,马匹运动的快慢就不一样了。

2.比赛还需要计数每匹马跑的最终时间,解决方法是比赛开始时获取一次

系统时间,到后来每匹马的线程终止了就分别获取终止时的系统时间,

这样相减就得到每匹马跑完的时间。通过使用日期类 Calendar 来解决。

4.2 经验与体会

通过这次的课设,使我收获良多。首先对与java的知识我有了更加深刻的理解和掌握,仅仅靠书本上的知识,而不去亲手实践运用是没有用的,而这次的实验,我把课堂上的知识结合起来,自己理解的更加透彻,使课设做起来十分的应手。虽然遇到了一些问题,但是通过查找资料和提问同学,使得问题慢慢的解决,最后使得课设尽自己最大的努力做到了最好。对于界面的设计、线程的使用还有对

JAVA也有了更加多的掌握,所以,还是要多进行实践来丰富自己的知识。

五.用户使用说明

(1)这次程序的编译环境是Eclipse工具,同时还有包含3个文件:JTextDemo.java,Run.java,DateUtil.java。

(2)整个程序进入时需要在第一个对话框中输入姓名和密码,之后跳转到赛马界面。

(3)在比赛的时候,需要实现选择任意一匹马来进行投注任意的金额,之后再开始进行比赛。

(4)最后第一期比赛结束后,在资金足够的情况下,可以选择重新进行比赛,也可以选择退出比赛界面。

六.测试结果

1.登录界面

2. 赛马界面

对1号马进行投注10000元

比赛开始

比赛结束

重新开始比赛,此时用户赌金已经发生变化

七.参考文献

1.耿祥义.《Java大学实用教程》.电子工业出版社.第三版八.附录

1.JTextDemo.java文件

package c;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JTextDemo extends JFrame{

private JTextField uid_text;

private JPasswordField pwd_text;

public JTextDemo(){

super("登陆窗口");

Container c=getContentPane();

c.setLayout(new FlowLayout());

setBounds(100,100,500,500);

JLabel u=new JLabel("用户:");

JLabel p=new JLabel("密码:");

uid_text=new JTextField(15);

pwd_text=new JPasswordField(15);

JButton b1=new JButton("确定");

b1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new Run();

}

});

JButton b2=new JButton("取消");

b2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

System.exit(0);

}

});

c.add(u);

c.add(uid_text);

c.add(p);

c.add(pwd_text);

c.add(b1);

c.add(b2);

setVisible(true);

}

public static void main(String arg[]){

JTextDemo testJTextDemo=new JTextDemo();

}

}

2.Run.java文件

package c;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

public class Run extends JFrame implements ActionListener {

racing ht;//赛马的进程

Draw h1,h2,h3,h4;//画出马的运动图形

JPanel p1;//赛马区

JPanel p2;

JPanel p3;//投注区

JButton jb;//开始按钮

JFrame frame;

DateUtil d1=new DateUtil();

boolean cotrol;//对投注额改变的变量

int no;//名次编号

String s;//投注单选事件的变量符号

JRadioButton b1,b2,b3,b4;//投注的单选按钮ButtonGroup bg;//按钮注,使其为单选

JTextArea ta;//赛马的文字显示

JLabel money;//投注总金额标签

TextField tf;//投注金额的输入窗口

int tz;//投注金额变化的变量

String tfget;//投注总金额的中转变量

FlowLayout ly;//布局变量

public Run()

{

frame=new JFrame("赛马");

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 JRadioButton("3号马");

b4=new JRadioButton("4号马");

bg=new ButtonGroup();

money=new JLabel("总金额为"+String.valueOf(tz)); tf=new TextField(10);

ta=new JTextArea("",5,10);

//放置单选按钮

汇编课程设计汇本打字游戏

华北科技学院 课程设计说明书 专业:网络工程 课程名称: 汇编课程设计 设计题目: 打字游戏设计 设计时间: 2011-12-05 至2011-12-16 评语: ________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:___

课程设计报告的要求 1、需求分析 描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。 2、总体设计(程序设计组成框图、流程图) 3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等)) 4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、测试结果,用几组测试数据进行测试算法设计的正确性。 6、附录。源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。 《汇编语言》课程设计案例 一、问题述及其需求分析 要求:利用汇编语言编写一个小的打字游戏 容:编写程序,在打开的菜单页面中选择游戏的难度。 难度选择包括以下5个选择 (1)very slow (2)slow (3)normal (4)fast (5)very fast 在编写过程中包括以下几个部分: (1)初始化上部分的字母 (2)获得下落的字母 (3)字母下移,同时覆盖原来的字母 (4)判断是否有输入 (5)若无输入则下落到最后 (6)覆盖原来的字符

汇编语言课程设计报告-打字练习程序

提供全套毕业设计,欢迎咨询 汇编语言课程设计报告 程序题目:打字练习程序 学生姓名:XX 班级:2010级计算机科学与技术专业4班学号:XXX 院系:计算机科学学院 指导教师:XXX

目录

1设计目的 本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。通过课程设计,主要达到以下目的: 1. 增进对汇编语言的认识,加强用汇编语言编程的能力; 2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等; 3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础; 4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中; 5. 掌握屏幕输出显示的设计方法。 2概要设计 2.1 系统总体分析 根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。4.按下“Ese”键则程序返回到主界面。5.按空格键游戏暂停。6.在主界面按“E”则程序退出。打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。 2.2主模块框图及说明

是 否 否 是 是 图2-1程序设计流程图 程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER 进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。核心模块的流程大体如下面的流程图图2-1: 3 详细设计 3.1 主模块及子模块说明 主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)

java课程设计报告--打字游戏

java课程设计报告--打字游戏 Java开发技术课程设计 (打字游戏) 学院:计算机与信息工程学院 学号:****** 姓名: ** 时间:2011年12月14日 一、程序描述 1.1程序设计的目的 通过java开发技术课程的学习,我初步了解了如何运用java语言编写程序。课程结束后,按老师的要求,在查找资料后,我完成了打字练习这个程序。 在这个过程中,主要达到了两个目的,一是检验和巩固专业知识,二是提高综合 课堂上掌握的理论知识与处理数据的素质和能力。通过该程序的编写,可以将我 业务相结合,以检验我掌握知识的宽度、深度及对知识的综合运用能力。 1.2程序设计的要求 (1)程序的界面会随机的出现字母和数字,玩家在键盘上摁相应的键后,界面上的对应的字符就会消失 (2)字符下落的速度可以选择,完成一定量的字符后,显示进入下一关,下一关的速度加快 (3)能统计正确与错误的字符数分别是多少

(4)程序的主界面是能够给玩家第一感官的部分,主要包括程序图形区域界面、程序的显示更新界面。 1.3程序设计的环境 Windows xp操作系统、Myeclipse编辑工具、jdk1.6 二、分析与设计 2.1 游戏处理流程 本次游戏设计的处理流程如下图所示 进入游戏画面 单击“开始”按钮, 游戏开始,字符开始随机。 根据出现的字符按相应的 键,对应一个消失一个(字 符)按对一定字符后将提示 进入下一关,下一关的速度 有所增加。速度也可单独调 节。 没有摁倒相应游戏中途欲中 的键,错误的断,稍后继续 数字将加一游戏 单击“退出” 单击“暂停” 退出游戏游戏暂停 再次单击开始 游戏,游戏恢复 游戏处理流程图 2.2需求分析

打字练习游戏程序

摘要 汇编语言(Assembly Language)是面向机器的程序设计语言,汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。 关键字:汇编语言、程序设计、助记符

目录 摘要 0 目录 (1) 前言 (2) 第1章系统分析 (3) 第2章系统总体设计 (4) 2.1打字程序包括以下五个子程序: (4) 2.2算法的整体设计思路 (4) 2.3程序的主要特点 (4) 第3章详细设计 (5) 3.1主界面伪代码 (5) 3.2等级界面伪代码 (5) 3.3游戏界面伪代码 (6) 3.4清屏子程序设计 (6) 3.5密码程序设计 (7) 3.6宏代码 (8) 3.6.1在指定位置显示彩色字符串 (8) 3.6.2显示背景 (9) 3.6.3画横向边框的宏 (9) 3.6.4画竖边框的宏 (10) 3.7功能的进一步完善 (11) 3.7.1完善代码一 (11) 3.7.2完善代码二 (12) 3.7.3完善代码三 (12) 第4章软件使用说明书 (14) 4.1密码界面图: (14) 4.2主界面图: (14) 4.3等级选择界面: (14) 4.4游戏界面: (15) 参考文献 (17) 致谢 (18) 源代码: (19)

前言 随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言作为计算机专业大学生必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。 《打字游戏程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。

打字训练测试软件_Java课程设计报告书

word格式文档 《程序设计实践》题目:打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管12-2 学号:201213156619 姓名:刘克豪 2014 年11 月09 日

基础类、IO流与异常处理程序设计 一、实践要求 1.掌握Java常用基础类API。 2.掌握输入输出流常用类API。 二、实践要求 利用Java常用基础类API、输入输出流常用类API、Java异常处理等完成所选项目的程序设计。 三、项目需求 所选项目名称:打字训练测试软件 四、项目设计方案 EnglishGame类:主要构造都在这里完成。 MyKey类:是该程序的一个内部类。 EnglishGame作为主函数的入口。调用actionPerformed类的方法实现事件监听器。当发生点击事件时就会弹出输入框,开始英文打字功能。从而达到打字训练测试的目的。 五、核心算法详细设计 1 . public void actionPerformed(ActionEvent e) {} 2.public void keyReleased(KeyEvent arg0) {} 3.public static void main(String[] args) {}

4. public JPanel creatMenu() {} 六、完整源码 package shiyansan; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.FileReader; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.SwingUtilities; //所使用的包 public class EnglishGame implements ActionListener { private static JFrame f = new JFrame("英文打字游戏"); private static Container con = f.getContentPane(); JPanel mainPanel,panel0,panel1,panel2,panel3,panel4,panel5,panel6,panel7; JButton button1,button2,button3,button4,button,button5,button6; JTextPane tp1,tp2;

打字游戏

湖南农业大学东方科技学院 课程设计报告 课程名称:微机原理与接口技术 设计题目:打字游戏程序设计 学生姓名:罗英杰 学号: 2 年级专业:2008级计算机科学与技术 班级: 3 班 指导老师:王兴波 学院:东方科技学院 湖南·长沙 提交日期:2009年12月

一、任务与要求 1. 开始界面的提示信息:进入游戏,退出 2. 打字游戏:字母从屏幕上方下落,若用户在字母下落过程中输入正确字母,字母消失, 输入不正确,字母继续下落 3. 空格键退出游戏 二、分析与规划 1、结构分析图,如下 2、布局分析: 首先,出现菜单主界面起到提示作用。然后进入游戏,接着完成游戏的退出。

三、实现过程 1、出现菜单主界面: ZK db "WELCOME TO PLAY$" no db "shejiren: Luo Yingjie 2009/12/09 $" meg db "press Enter key to continue.......$" meg1 db "when a letter is dropping,please hit it!$" meg2 db "press space key to pause!$" meg3 db "press ESC key to return main interface!$" meg4 db "press letter 'E' to exit!$" 上面的代码菜单主界面的内容 clear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h

第十二讲:游戏必胜的策略

第十二讲游戏必胜的策略 我国古代有一个“田忌赛马”的故事;齐王经常要求将军田忌和他赛马。规定各从自己的马中选上等马、中等马、下等马各一匹,进行三场比赛,每场各出一匹马。每胜一场可得一千金。田忌的这三个等级的马都不如齐王的好。但田忌的上等马要优于齐王的中等马,田忌的中等马要优于齐王的下等马。田忌的朋友孙膑给他出了一个主意,叫田忌用下等马对齐王的上等马,上等马对齐王的中等马,中等马对齐王的下等马。结果,田忌先负一场然后连胜两场,反而赢了一千金。这个故事是对策的一个典型例子。他告诉我们:在竞争时,要认真分析研究、寻求并制定尽可能好的方案。利用它取得尽可能大的胜利,或在胜利无望的时候,也不至于输得太惨。这种思想在20世纪形成了对策论这门新兴学科。 下面我们就根据这个理论来想一想对策: 例1、两个人轮流数数,每个人每次可以数1个、2个、3个,但不能不数。例如第一个数 1、2,第二个接着往下数3,也可以数3、4,还可以数3、4、5,。如此继续下去, 谁先数到100,谁就算胜。请试一试,怎样才能获胜? 分析:要抢到100,必须抢到96.这时另一个人只能数97或97、98或数97、98、99,无法数到100。如何才能抢到96呢?有必须抢到92.以此类推,得到一列数92、88、84、 (4) 只要抢到这些数中的任何一个,然后当对方报a个数时(1≤a≤3)时,就报(4-a)个数,这样就能抢到这个数列中的上一个数,直到抢到100. 但无论第一个人报什么数,第二个人都可以抢到4n(n=1、2…)因此第二个人就有必胜的策略。只有在第二个人产生错误时,第一个人才能获胜。 思考:如果将100改为101或99,其他条件都不变,先数的人能否获胜呢?(是否还是抢4呢?) 例2、有两堆火柴,一堆16跟,一堆11跟。甲乙两人轮流从中拿走1根或几根甚至一堆,但每次只能在某一堆中拿火柴,谁拿走最后一根谁取胜,问甲如何才能取胜? 分析:这是另一类对策游戏。我们先考虑特殊情况。当两堆中的火柴根数相同时,后取者只要根据先取者的取法,在另一堆中取相同的根数,就能保证取到最后一根。对一般情况可以化为特殊情况。 解:甲从16根的那堆中先取出16-11=5根,是两堆火柴根数相同。然后每次根据对手取得根数在另一堆中取相同的根数,是两堆火柴根数保持相等,直至取到最后一根火柴而获胜。说明:当乙先取时,如果他不知道获胜的策略,那么甲可以利用已的错误取胜。 例3、一张3×10的长方形网格纸有30个小方格。甲乙两人轮流用剪刀沿方格纸直线剪一刀。(只能沿直线剪,否则为输)甲将一份分为两份,选送一份给乙;乙按要求剪一刀后,选一份再送给甲……如此重复进行,谁送给对方一个方格,谁就获胜。甲要 想获胜,有何策略? 分析:送给对方一个正方形的方格纸,这时后剪的都可以使图形再变成(更小的)正方形,知道取胜为止。 解:甲先剪下7×3的一块,把3×3的那块送给乙。乙只能剪成1×3和2×3的两块。若送给甲1×3的那块,正好使甲剪下1×2而获胜。若送给甲2×3的那块,那么甲再一刀剪成1×2和2×2的两块,把2×2的送给乙。乙只可能切成1×2的两块。其中一块送给甲,甲还是获胜。 同学们,这种方法你考虑到了吗?你会不会再遇到问题时,先动脑筋想办法。 例4、下图是一张由4×10个方格组成的棋盘,一人持白子置于A位,另一人持黑子置于B 位。随后两个人轮流走子,每一次可以沿一条横线或一条纵线至少走一格,并要遵守下列游戏规则:

C语言打字练习程序课程设计报告

青岛理工大学 《C语言程序设计》 题目打字练习程序 指导教师:李兰老师 姓名: 学号:2011 班级: 专业:计算机科学 地点:现代教育中心机房201 时间:2012.6.26 至2012.6.29

一、内容 本程序主要实现的是对使用者的打字速度进行练习和提高。因为界面友好亲和,因此能让使用者在轻松愉快中练习并快速提高自己的打字速度和准确性。程序主要的功能有记录使用者在本次使用中的击中数和总下落字母的个数之比。并且游戏设置了九个等级,随着数字的增加,等级越高,字母下落的速度逐步提高,这样能够更好的迎合不同水平的用户需求。使用本程序很简单,因为在写代码时,我很注重的是界面的友好,所以,在用户的每次操作前,界面上都有详细的操作提醒,只要跟着提示输入就能很快速地进入并开始练习。 二、上机环境 操作系统:windows XP(win7兼容) 开发工具:VC6.0 三、函数调用关系图 void main( ) start( ) printfScreen( ) levelChoice( ) newWord ( ) moving( ) wordHit( ) result( ) leave( )

四、各函数功能说明 1、void main( ) 主函数 2、void printScreen( ) 刷新屏幕函数 3、int levelChoice( ) 游戏等级选择函数 4、int newWord( ) 生成新字符函数 5、int moving( ) 字符下降函数 6、int wordHit( ) 击中字符函数 7、int result ( ) 结果输出函数 8、int start( ) 程序开始提示操作 9、void leave( ) 函数结束

C#打字游戏课程设计

C# 打字游戏程序核心代码主要部分: 设计程序流程图:

主窗体代码: using System; using System.Collections.Generic; using https://www.360docs.net/doc/804782037.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //课程名称 C# 程序设计实践 //设计题目打字游戏 //专业计算机科学与技术 //班级 //学号 //姓名 //指导老师 namespace Typing_Game { public partial class FrmTyping : Form { public FrmTyping() { InitializeComponent();

public int right = 0; //正确个数计数 public int wrong = 0; //错误个数计数 public int sum = 0; //总个数技术 public int count = 0; //按键总次数 public float accuracy; //正确率 public int Minute = 1; //设置默认没局游戏时间 public int minute; //设置游戏中的倒计时分 public int second; //设置游戏中的倒计时秒 private void FrmTyping_Load(object sender, EventArgs e) { } //在状态栏中显示当前系统时间 private void timerSys_Tick(object sender, EventArgs e) { DateTime now = DateTime.Now; this.tsslSysTime.Text = "系统时间: " + now.Hour.ToString() + ":" + now.Minute.ToString() + ":" + now.Second.ToString()+'\t'; } //开始&结束按钮 private void tsmiStratOrOver_Click(object sender, EventArgs e) { if (tsmiStratOrOver.Text == "开始") { tsmiStratOrOver.Text = "结束"; timerWord.Start(); timerGame.Start(); timerGT.Start(); //在游戏开始时暂停&继续按钮可用 tsmiPauseOrContinue.Enabled = true; //在游戏未开始时选择游戏等级与设置游戏按钮无效 tsmiLevel.Enabled = false; tsmiOption.Enabled = false; //游戏开始初始化游戏数据 right = 0; wrong = 0;

计算机技术基础(c语言)课程设计 简单的打字游戏

计算机技术基础(C程序) 课程设计报告 一.题目:简单打字游戏 二、选题背景: 在全球信息化高度发展的今天,计算机技术是现代人必须掌握的基本技术。而一手精湛的打字技术更是我们自动化人所必备的资本。本c语言程序的开发为广大计算机使用者提供了一个很好的平台。 三、设计思想: 本程序主要应用了e l s e…i f语句、g o t o语句等函数。建立打字练习的程序。通过使用积分的方式,给使用者以直观的视觉冲击。激励使用者的练习兴趣。

三、程序流程图:

四:程序清单 #include "conio.h" #include "stdlib.h" #include "graphics.h" main() {char a[36]; int i,j,x,key,t,score=0; int gd=DETECT,gr; initgraph(&gd,&gr,""); cleardevice(); for(i=0;i<10;i++) a[i]=48+i; for(i=10;i<36;i++) a[i]=55+i; a[i]=0; for(i=1;i<81;i++) { gotoxy(i,3); printf("%c",220); gotoxy(i,18); printf("%c",220); } gotoxy(5,1); printf("score:"); settextstyle(1,0,8); outtextxy(100,350,"TYPE GAME"); sleep(2); randomize(); for(;;) { gotoxy(12,1); printf(" "); gotoxy(12,1);

大学课程设计报告小小打字游戏设计-课程设计报告

2016-2017学年第一学期 《Windows程序设计》 课程设计报告 题目:小小打字游戏设计 专业: 班级: 姓名: 指导教师: 成绩: 二0一六年十一月十五日

目录 1 设计内容及要求 (1) 1.1 设计内容 (1) 1.2 系统功能 (1) 1.3 信息存储功能 (1) 2 系统设计 (1) 2.1 数据库设计 (1) 2.1.1 GameUser表 (1) 2.1.2 GameInfo表 (2) 2.2 游戏系统设计 (2) 2.2.1 程序项目设计 (2) 2.2.2 功能模块设计 (2) 3 C#系统实现 (5) 3.1 类图 (5) 3.2 核心代码 (6) 3.3 MySqlConn类 (10) 3.4 MainForm类 (11) 3.5 菜单事件 (12) 3.6 窗体键盘事件 (13) 3.7 MyRandom类 (15) 3.8 Program类 (16) 4 总结 (17) 4.1 收获 (17) 4.2 反思 (17) 5 参考文献: (18)

1 设计内容及要求 1.1 设计内容 软件名称:小小打字游戏 需求分析:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。 1.2 系统功能 (1)、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏; (2)、注册功能:不存在的用户,可以注册; (3)、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个; (4)、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值; (5)、游戏显示:游戏窗口随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度; (6)、游戏操作:按下键盘上的A-Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1; (7)、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏数据记录; (8)、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示以及游戏排名。 1.3 信息存储功能 需要存储的信息: (1)游戏分数、(2) 游戏等级、 (3) 用户、 (4)密码、(5)游戏开始时间、(6)游戏结束时间。 2 系统设计 2.1 数据库设计 2.1.1 GameUser表 表1 GameUser表

JAVA课程设计之赛马游戏

目录 一.需求分析................................... 错误!未定义书签。 概述 (2) 课题分析 (2) 实现功能步骤................................. 错误!未定义书签。 设计工作详解................................. 错误!未定义书签。 外部界面需求................................. 错误!未定义书签。 ; 运行环境...................................................错误!未定义书签。 二.概要设计................................... 错误!未定义书签。 系统流程图................................... 错误!未定义书签。 功能模块图................................... 错误!未定义书签。 赛马比赛模拟程序初始化块 (4) 赛马比赛区模块 (4) 投注区模块 (5) 线程启动及结束模块 (5) > 比赛结果显示区模块 (5) 三.详细设计................................... 错误!未定义书签。 赛马比赛模拟程序初始化模块 (6) 赛马比赛区模块 (7) 错误!未定义书签。投注区模块错误!未定义书签。线程启动及结束模块9比赛结果显示区模块.........................................12错误!未定义书签。 程序流程...................................................12错误!未定义书签。 ~ 系统界面...................................................错误!未定义书签。 四.调试分析 (13) 调试过程中所遇到的问题及解决方法............. 错误!未定义书签。 经验与体会................................... 错误!未定义书签。 五.用户使用说明............................... 错误!未定义书签。 六.测试结果................................... 错误!未定义书签。 七.参考文献................................... 错误!未定义书签。 八.附录....................................... 错误!未定义书签。 $

汇编语言课程设计题2012

《汇编语言与微机原理》课程设计题目(2012) 题目一定时/计数技术应用程序设计 设计一个数字钟,在屏幕上显示分:秒(mm:ss)。按下非空格键开始计时,并显示 00:00,每过1 秒,ss 增1,到60 秒mm 增1,到60 分就是1 小时。经过1 小时后又回到00:00 重新计数。当按下空格键时,程序返回DOS,数字钟消失。 题目二信息检索程序设计 完成一个信息检索系统。在数据区,有9 个不同的信息,编号0-8,每个信息包括40 个 字符。从键盘接收0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q” 键退出。 题目三图形变换程序设计 完成一个图形变换的程序,系统具有4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出。 题目四代码转换程序设计 完成一个字母或数制之间的转化程序,主程序分别具有 5 种可选择的子功能,按相应的字符 可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。 5 种可选择的子功能分别为: 1)实现小写字母向大写字母的转换 2)实现大写字母向小写字母的转换 3)实现二进制数向十六进制数的转换 4)实现十六进制数向二进制数的转换 5)实现十六进制数向十进制数的转换 题目五中断处理程序设计 编写一个中断处理程序,要求在主程序运行过程中,每隔20 秒响铃一次,同时在屏幕上 显示信息”The bell is ring!”,按键后恢复原状。 题目六指法练习程序 1.从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的; 2.在多个字符(可以简化为仅有一个字符)下落的过程中可输入任意键,若键入与其中的 任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分; 3.按ESC 键结束练习并显示命中率; 4.再次按ESC 键退出。 题目七密码设置模拟 编写程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码用*显示。 题目八计算器

最新人教版四年级上册数学《赛马问题》同步练习

8.3 赛马问题 一、我会选。(把正确答案的字母填在括号里) 森林运动会开始了,场上甲乙两组选手正在准备比赛,采取三局两胜制。第二组要想获胜,应该按照()方案安排比赛顺序。 第一名第二名第三名 第一组猎豹9.0秒小鹿9.5秒狗9.9秒 第二组狮子9.3秒羚羊9.6秒兔子10.0秒 A、兔子——狗;羚羊——小鹿;狮子——猎豹 B、兔子——小鹿;羚羊——狗;狮子——猎豹 C、兔子——猎豹;羚羊——狗;狮子——小鹿 二、我会连。 四(1)班和四(2)班举行跳绳团体比赛。两队队员复赛成绩如下,比赛中四(1)班队员先出场,如果你是四(2)班文体委员,你怎样安排队员出场才能取胜?(用线连一连) 四(1)班四(2)班 张丽 160次/分钟杨文爱 150次/分钟 吴敏 147次/分钟刘苹 142次/分钟 王雯 128次/分钟李琳琳 115次/分钟 三、玩游戏。 小强和小刚玩扑克牌“比大小”的游戏。玩法是:每人每次出一张牌,出三次,赢两次者为胜。小强三张牌分别为“2”“5”“8”,小刚三张牌分别为“1”“4”“7”。小强先出牌,小刚怎么出牌才能取胜?请把出牌的情况填在下面。 第一次第二次第三次 小强 8 2 5 小刚 本次赢者 四、一堆水果糖有10颗,两人轮流从中拿走1颗或2颗,谁拿到最后一颗谁就获胜。让 你先拿,第一次应该拿()颗才能确保获胜。如果有17颗糖,第一次应该拿()颗才能确保获胜。

五、四(1)班和四(2)班各选出3名力气最大的同学掰手腕,每两人比一场,三局两胜。假 如你是四(1)班的学生,你能想一个好的办法,使本班赢的可能性更大一些吗? 答案: 一、C 二、 三、 1 4 7 小强小刚小刚 四、 1 2 五、略 -------------------------------------------------- 每日名言 励志名言: 思想决定行为,行为决定习惯,习惯决定性格,性格决定命运。 这句话出自杰克·霍吉的《习惯的力量》。 奥维德说:“没有什么比习惯的力量更强大。”习惯是一个思想与行为的真正领导者。习惯让我们减少思考的时间,简化了行动的步骤,让我们更有效率;也会让我们封闭,保守,自以为是,墨守成规。 在我们的身上,好习惯与坏习惯并存,而获得成功的可能性就取决于好习惯的多少。

Java课程设计打字游戏

中南大学 Java课程设计报告题目打字游戏 学生姓名窦立阳 指导教师陈丽萍 学院信息科学与工程学院 专业班级计科1204 完成时间 2015年1月15日 目录 第二章总体设计 界面设计 (4) 运行流程 (4) 逻辑设计 (4) 积分设计 (4) 第三章详细设计 主面板 (5) 两个按键 (5) 相关全局变量 (5) 全局变量说明 (5) 相关全局函数 (7) 字符下落模块 (7) WordLabel (7) WordFallControl (8) WordFallLabel (8) 速度控制模块 (8) 按键模块设计 (8) 键盘监听事件 (9) 积分模块设计 (9) 事件模块设计 (10) 第四章调试分析 第一次调试 (11) 第二次调试 (11) 第三次调试 (12) 第五章运行结果 (13)

第六章课程设计总结 (17) 第七章参考文献 (19) 第八章附录:带注释的源代码 Wordfall (20) WordFallControl类 (20) WordLabel类 (22) WordFallLabel类 (23) ScoreLabel类 (24) StartButton类 (25) TimeLabel类 (26) AAAAA类:程序的主函数入口 (28) Maintain类 (30) 第一章实验要求 【问题描述】设计实现一个打字游戏,界面参见图2-2,具备如下功能: ●点击“开始”按钮,产生随机字符从屏幕上方下落; ●点击键盘上按钮,如果正确,当前的字符消失,产生新的按钮从上方继续落下。 ●提供速度调整和积分功能。 图2-2 打字游戏界面 第二章总体设计 界面设计 根据实验要求中的图2-2,在主面板中, 有一个模块控制各个字符的生成并且控制他们的自动下落,并在正确触发时,字符不可见; “开始”和“结束”,用于字符下落的开始和结束; 运行流程 程序启动,程序等待按键“开始”的事件的触发; 当“开始”键触发后,负责字符下落的模块,将持续产生字符,并使其下落; 键盘开始被监听,从键盘的按键触发,向程序返回值; 积分模块开始工作,将字符下落模块的字符和键盘事件返回的值进行比较,得出积分,并且将积分值显示在面板上; 如果点击“停止”按键,所有模块停止工作,等待程序关闭,或者等待“开始” 逻辑设计 字符不断产生并且下降,需要一个线程控制产生字符,然后还应该有一个线程对面一个字符,控制其下落。 键盘被按下后,立刻会有值返回到程序中,积分模块会每隔一段时间将,键盘事件返回的值,和当前需要按下的值进行比较。 积分说明 当开始产生字符后,会有很多字符都是可输入的,但是当前可输入的字符只有一

打字训练测试软件-Java课程设计

《程序设计实践》题目:打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管12-2 学号: 201213156619 姓名:刘克豪 2014 年 11 月 09 日

基础类、IO流与异常处理程序设计 一、实践要求 1.掌握Java常用基础类API。 2.掌握输入输出流常用类API。 二、实践要求 利用Java常用基础类API、输入输出流常用类API、Java异常处理等完成所选项目的程序设计。 三、项目需求 所选项目名称:打字训练测试软件 四、项目设计方案 EnglishGame类:主要构造都在这里完成。 MyKey类:是该程序的一个内部类。 EnglishGame作为主函数的入口。调用actionPerformed类的方法实现事件监听器。当发生点击事件时就会弹出输入框,开始英文打字功能。从而达到打字训练测试的目的。 五、核心算法详细设计 1 . public void actionPerformed(ActionEvent e) {} 2.public void keyReleased(KeyEvent arg0) {} 3. public static void main(String[] args) {} 4. public JPanel creatMenu() {} 六、完整源码 package shiyansan; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.FileReader; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.SwingUtilities; //所使用的包 public class EnglishGame implements ActionListener { private static JFrame f = new JFrame("英文打字游戏"); private static Container con = f.getContentPane(); JPanel mainPanel,panel0,panel1,panel2,panel3,panel4,panel5,panel6,panel7; JButton button1,button2,button3,button4,button,button5,button6; JTextPane tp1,tp2; FileReader fr; File frr; Date date1,date2; int num,len1,len2,count; long time; double rightrate; char[] ch; public void actionPerformed(ActionEvent e) {

人教版数学四年级上 赛马问题

第3课时赛马问题 教学目标: 1、初步体会对策论方法在解决实际问题中的应用。 2、认识到解决问题策略的多样性,形成寻找解决问题最优方案的意识。 3、理解优化的思想,形成从多种方案中寻找最优方案的意识,提高解决问题的能力。 5、感受数学在日常生活中的广泛应用,尝试用数学的方法解决生活中的简单问题。 教学重点: 体会优化的思想。 教学难点: 寻找解决问题最优方案,提高解决问题的能力。 教学过程: 一、情境导入: 1、你们听过“田忌赛马”的故事吗?田忌是怎样赢了齐王的?谁能给大家讲一讲这个故事? 2、问:田忌的马都不如齐王的马,但他却赢了?这是为什么呢?这节课我们就来研究研究。板书课题:赛马问题。 二、探究新知 1、把田忌在赛马中使用的方法在给出的表格中补充完整。出示表格 场次齐王田忌本场胜者 第一场上等马下等马齐王 第二场中等马上等马田忌 第三场下等马中等马田忌 2、思考:田忌所用的这种策略是不是唯一能赢秦王的方法?(讨论)引导学生:看一看田忌一共有多少种可采用的应对策略?把田忌所有可以采用的策略都找出来,填到书上的表中。 4、展示各组汇报的结果:田忌可采用的策略一共有6种,但只有一种是唯一可以获胜的。 5、说一说:田忌的这种策略在生活中还有哪些应用?结合实际说一说。 三、巩固新知 1、数学游戏: A两人轮流报数,每次只能比前数多报1或2,(首次只能报1或2)谁报数10,谁就获胜。想一想:如果让你先报数,为了确保获胜,你第一次应该报几?接下来应该怎么报?说明游戏规则,简化问题从报4赢、报5赢引导学生发现:确保最后能赢的数和自己每次报的数之间的差是3的倍数。 B如果是谁报数9谁就获胜,为了确保获胜,你要怎么做?(让对方先报数) 四、小结:这节课你有什么收获?

汇编打字练习

课程设计 2010~ 2011学年第二学期 设计题目打字练习程序的设计 院(系)计算机科学与信息工程 专业计算机科学与技术 班级 09104301学号 27 学生姓名李迅 设计时间2011年 6 月 20 日——2011年 6 月 24日 指导教师宓双 提交日期 2011年6月23日

上海应用技术学院课程设计任务书

指导教师(签名):宓双教研室主任(签名): 2011年6 月19 日2010年6 月19日

目录 1概述: (1) 1.1基本功能: (2) 1.2拓展功能 (3) 1.3其他功能 (3) 2详细设计说明 (3) 2.1原“TYPETEST.ASM”程序结构 (4) 2.2已经实现的功能(修改的、新编写的)程序结构 (5) 3对该“打字练习程序”的进一步设想 (10) 3.1 (10) 3.2 (11) 3.3 (11) 4课程设计总结 (11) 5软件使用说明 (12) 6附录(参考文献,原代码:) (12) 参考文献: (12) 原代码 (12)

1概述: 编写一个程序,执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。 因此程序要包含以下几个模块:菜单显示模块、字母显示模块、字母下落模块、暂停处理模块、退出返回模块等。

1.1 基本功能: 2认真阅读“typetest.asm”源程序, 理解程序每一条指令在程序中的作用。绘制程序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释。 3设置输入界面, 用户输入密码后才能进入主菜单; 4修改主菜单, 在主菜单上显示当天日期; 5修改主菜单, 增加可供用户选择难度级别的选项。 6为用户打分,正确输入字母使用时间越少,得分越高。 7修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数。

相关文档
最新文档