当前位置:文档之家› Java代码调用kettle任务

Java代码调用kettle任务

Java代码调用kettle任务
Java代码调用kettle任务

Java代码调用kettle任务

工具kettle4.2版本

下载地址https://www.doczj.com/doc/0311419485.html,/s/1gmn5R

所需的包(这几个包是必须要的,它们相互调用,不引用就报错。)

kettle-core.jar ,

kettle-engine.jar,

kettle-db.jar,

commons-vfs.jar,

commons-logging.jar,

log4j.jar

这些包都可以去kettle 目录下面去找(lib,libext,libswt这几个目录里面有各种包。)测试用例excel数据导入到txt文本文档(需要添加jxl.jar)1.先在kettle中创建test.ktr保存在E:/Workspaces/Kettle中

创建完成并且测试kettle任务是否成功。

2.创建java程序

package com.start;

import org.pentaho.di.core.KettleEnvironment;

import org.pentaho.di.core.exception.KettleException; import

org.pentaho.di.repository.filerep.KettleFileRepository; import

org.pentaho.di.repository.filerep.KettleFileRepositoryMeta; import org.pentaho.di.trans.Trans;

import org.pentaho.di.trans.TransMeta;

publicclass Main {

privatestatic String tranName = "test"; // 文件名称

publicstaticvoid main(String[] args) {

System.out.println("启动中....................");

Trans trans=null;

try {

// 初始化

KettleEnvironment.init(false);

// 资源库元对象

KettleFileRepositoryMeta repinfo = new KettleFileRepositoryMeta("","","数据采集

","file:///E:/Workspaces/Kettle");

// 文件形式的资源库

KettleFileRepository rep =

new KettleFileRepository();

rep.init(repinfo);

// 转换元对象

if(tranName!=null){

TransMeta transMetadel =

rep.loadTransformation(rep.getTransformationID(tranName, null), null);

// 转换

trans = new Trans(transMetadel);

// 执行转换

trans.execute(null);

// 等待转换执行结束

trans.waitUntilFinished();

//抛出异常

if(trans.getErrors()>0){

thrownew Exception("传输过程中发生异常");

}

}else{

thrownew KettleException("传输名为空!");

}

} catch (Exception e) {

if(trans!=null){

trans.stopAll();

}

e.printStackTrace();

}

}

}

测试调用kettle资源库中的Job任务(需要数据库的jar包)我用的是ORACLE数据库所以需用到ojdbc.jar

1.先在kettle中创建资源库等任务。

创建好了并测试是否正确。

2.java 代码

package com.start;

import org.pentaho.di.core.KettleEnvironment;

import org.pentaho.di.core.database.DatabaseMeta;

import org.pentaho.di.core.exception.KettleException;

import org.pentaho.di.job.Job;

import org.pentaho.di.job.JobMeta;

import org.pentaho.di.repository.RepositoryDirectoryInterface; import org.pentaho.di.repository.kdr.KettleDatabaseRepository; import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMe ta;

publicclass StartJob {

privatestatic String jobname="test_job";

publicstaticvoid main(String[] args) {

try {

// 初始化

KettleEnvironment.init(false);

//资源库地址(名称,数据类型,数据库连接方式,连接地址,数据库名称,端口,用户名,密码)

DatabaseMetadataMeta = new

DatabaseMeta("kettle","ORACLE","Native","127.0.0.1","XE","1521 ","kettle","...");

//资源库元对象

KettleDatabaseRepositoryMetarepInfo =

new KettleDatabaseRepositoryMeta();

repInfo.setConnection(dataMeta);

//资源库对象

KettleDatabaseRepository rep = new KettleDatabaseRepository(); //给资源库赋值

rep.init(repInfo);

//连接资源库用户、密码

rep.connect("admin", "password");

//根据变量查找到模型所在的目录对象

RepositoryDirectoryInterface directory = rep.findDirectory("/"); //创建Job元对象

JobMetajobMeta = rep.loadJob(jobname, directory, null, null);

//创建Job对象

Job job = new Job(rep, jobMeta);

//执行

job.start();

System.out.println("start.............");

//等待执行完毕自动停止任务,重复执行JOB 则不会停止//job.waitUntilFinished();

//等待执行10000毫秒,需停止否则不会自动停止任务job.waitUntilFinished(10000);

System.out.println("end................."); job.stopAll();

if (job.getErrors() > 0) {

System.out.println("执行job失败!");

}

} catch (KettleException e) {

e.printStackTrace();

}

}

}

java源代码经典入门案例—光环java编程培训机构

java源代码经典入门案例 class Demo { public static void main(String[] args) { System.out.println("hello E盘"); } } class Demo { public static void main(String[] args) { System.out.println("hello E盘"); } } /* 需求:练习一个hello world程序。 思路: 1,定义一个类,因为java程序都定义类中,java程序都是以类的形式存在的,类的形式其实就是一个字节码文件最终体现。 2,定义一个主函数。为了让该类可以独立运行。 3,因为演示hello world,在控制台上看到该字样,所以需要使用输出语句完成。 步骤: 1,用class关键字来完成类的定义,并起一个阅读性强的类名。 2,主函数:public static void main(String[] args)这时固定格式的。jvm认识。 3,使用输出语句:System.out.println("hello world"); 代码仅仅是思想的一种体现形式。 */ class Demo

{ //定义一个主函数,为了保证程序的独立运行。 public static void main(String[] args) { System.out.println("hello world");//这是输出语句,用于将括号中的数据打印到控制台上,ln可以在数据的结尾处换行。 } } class OperateDemo { public static void main(String[] args) { //算术运算符。+ - * / %(取余,模运算) +(连接符) // ++(自增:就在原有数据基础上+1,在赋给原有数据) -- //int x = 6370; //x = x / 1000 * 1000; //System.out.println(x); // System.out.println(5%2); // System.out.println(3+"2"); //System.out.println("5+5="+(5+5));//"5+5=5"+5 "5+5=55" //int a = 4,b = 5; //System.out.println("a="+a+",b="+b);//a=4,b=5; int a = 3,b; //a++;//a = a+1; // b = a++; b = (a++)+(++a)+(a++)+a; // 3 5 5 6 System.out.println("a="+a+",b="+b); int i = 3; i = i++;

经典Java程序源代码

1.加法器(该java源文件的名称是)import .*; import .*; public class Adder implements ActionListener { JFrame AdderFrame; JTextField TOprand1; JTextField TOprand2; JLabel LAdd,LSum; JButton BAdd,BClear; JPanel JP1,JP2; public Adder() { AdderFrame=new JFrame("AdderFrame"); TOprand1=new JTextField("");

TOprand2=new JTextField(""); LAdd=new JLabel("+"); LSum=new JLabel("= "); BAdd=new JButton("Add"); BClear=new JButton("Clear"); JP1=new JPanel(); JP2=new JPanel(); (this); (new ActionListener() { public void actionPerformed(ActionEvent event) { (""); (""); ("="); }

}); (JP1); (TOprand1); (LAdd); (TOprand2); (LSum); (JP2); (BAdd); (BClear); ().setLayout(new BorderLayout()); ().add(JP1,; ().add(JP2,; (new WindowAdapter() {

俄罗斯方块C语言代码

【转载】88行代码实现俄罗斯方块游戏(含讲解) 来源:https://www.doczj.com/doc/0311419485.html,/p/8 在正式阅读本文之前,请你记得你应该用娱乐的心态来看, 本代码所使用到的技巧,在工作了的人眼里会觉得很纠结,很蛋疼,很不可理喻,很丑, 注意,是你蛋疼,不关我的事 通常,写一个俄罗斯方块,往往动不动就几百行,甚至上千行,而这里只有88行 正所谓头脑风暴,打破常规。这里将使用很多不平常的手段来减少代码 以下是Win-TC可以成功编译并执行的代码(代码保证单行长度不超过80字符,如果你是Win7系统,那请看后文): 程序代码: #include"graphics.h" #include #include int gcW = 20, gcColor[] = {DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA,MAGENTA, YELLOW}; struct tetris { int _pool[16][32], (*pool)[32], tmap[8][4][16]; int x, y, s, st, t; }gt; void trsInit() { int sp[8][4] = {{15,4369},{23,785,116,547},{71,275,113,802}, {39,305,114,562},{54,561},{99,306},{51,51},{-1}}; int *p, i, j, b; for (p = sp[0]; *p >= 0; ++p) if ( *p == 0 ) *p = p[-2]; gt.pool = >._pool[4]; for (j = 0; j < 7; ++j) for (i = 0; i < 4; ++i) for (b = 0; b < 16; ++b) gt.tmap[j+1][i][b] = (sp[j][i] & 1) * (j + 1), sp[j][i] >>= 1; memset(gt._pool, -1, sizeof(gt._pool));

Java源代码___聊天室

Java 聊 天 室 制作人:_____杨永生_____ 制作时间:2012.9.26 目录 1本文简介 (2) 2聊天室截图与说明 (2) 2.1用Java编译: (2) 2.2服务器登录界面 (2) 2.3服务器窗口 (2) 2.4客服端登录界面 (3) 2.5客服端窗口 (3) 3服务器端 (6) 3.1MyServer()方法 (6) 3.2Login()方法 (10) 3.3Time()方法 (13) 4客户端 (14) 4.1MyClient()方法 (14) 4.2Login()方法 (18) 4.3Time()方法 (20)

1 本文简介 这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考. 本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号! 2 聊天室截图与说明 2.1 用Java编译: 本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看, 2.2 服务器登录界面 要先运行服务器端的程序 用户名:y 密码:1 用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面 2.3 服务器窗口

聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后, 2.4 客服端登录界面 和服务器端的登录一样 2.5 客服端窗口

当登录上后客服端就显示已经连接了,此时服务器端的窗口如下

由于本程序设计的不是很完整,具体的聊天要先从客服端开始: 在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息. 想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天

JAVA程序代码(20)

1百分制分数到等级分数 package pm; public class SwitchTest { //编写程序,实现从百分制分数到等级分数的转换 // //>=90 A // 80~89 B // 70~79 C // 60~69 D // <60 E public static void main(String[] args) { int s=871; switch(s/10){ case 10 :System.out.println("A");break; case 9 :System.out.println("A");break; case 8 :System.out.println("B");break; case 7 :System.out.println("c");break; case 6 :System.out.println("D");break; default :System.out.println("E");break; } } } 2成法口诀阵形 package pm; public class SwitchTest{ public static void main(String[] args){ for(int i=1;i<=19;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)+"\t"); } System.out.println(); }

} } 3华氏和摄氏的转换法 package pm; import java.util.Scanner; public class SwitchTest { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (true) { System.out.println("请输入要转换的温度类型:C 或F"); String s = sc.next().trim(); if ("c".equalsIgnoreCase(s)) { //做摄氏向华摄的转换 System.out.println("请输入要转换摄氏的温度:.."); double db = sc.nextDouble(); double db2 = (db * 9 / 5) + 32; System.out.println("对应的华氏温度:" + db2 + "F"); } else if ("f".equalsIgnoreCase(s)) { //做华摄向摄氏的转换 System.out.println("请输入要转换华氏的温度:.."); double db = sc.nextDouble(); double db2 = (db - 132) * 5 / 9; System.out.println("对应的摄氏温度:" + Math.round(db2) + "C"); }else if("exit".equalsIgnoreCase(s)){ break; } } } }

C.C++语言-俄罗斯方块源码

注意:本源代码包含头文件,VC6.0请自行下载库文件包,解决没有库文件的问题 环境:WINDOWS7 VC6.0 程序清单:库文件MYFILE.H /****************************************************************************** ********************* File Name : MYFILE.H Copyright : Module Name : CPU : Intel i7 RTOS : Creat Date : 2017/1/13 Author : Yang Abstract Description: C++、C实用函数 ******************************************************************************* *********************/ #ifndef _MYFILE_ #define _MYFILE_ #include #include void introduce() { printf("欢迎使用!MYFILE.H\n"); } /*********************************C++常用类******************************/ template //栈 class STACK { private: int top; T_STACK stackspace[100]; public: STACK() { top =-1; } void PUSH(T_STACK x) {

Java完整代码

Chapter01——初识Java 1.单词 公共的、公有的:public 静态的:static 主要的:main 打印:print 2.编写类名为HelloWorld的的程序框架 public class HelloWorld{} 3.编写main()方法的框架 public static void main(String[] args){} 4.编写代码输出HelloWorld后并换行 System.out.println(“HelloWorld”); Chapter02——变量、数据类型和运算符 1.单词 字符:character 布尔:boolean 扫描器:scanner 成绩:score 名字:name 2.写出本章节中学习过的五种数据类型 int、double、char、String、boolean 3.创建扫描器对象,并接收用户输入的年龄 Scanner input=new Scanner(System.in); System.out.print(“请输入年龄:”); int age=input.nextInt(); 4.目前有整型变量custNo,请分解出它的个位、十位、百位和千位

int gewei=custNo%10; int shiwei=custNo/10%10; int baiwei=custNo/100%10; int qianwei=custNo/1000; Chapter03——选择结构(一) 1.单词 如果:if 继续:continue 随机:random 数学:math 打断:break 2.如果张浩的Java成绩大于98分,那么老师奖励他一个MP4;否则老师罚他编码, 请补全以下代码: int score=91; if(score>98){ System.out.println(“奖励一个MP4”); }else{ System.out.println(“惩罚进行编码”); } 3.某人想买车,买什么车决定于此人在银行有多少存款。 如果此人的存款超过500万,则买凯迪拉克 否则,如果此人的存款超过100万,则买帕萨特 否则,如果此人的存款超过50万,则买伊兰特 否则。如果此人的存款超过10万,则买奥拓 否则此人买捷安特,请补全以下代码: int money=52; //我的存款,单位:万元 if(money>=500){ System.out.println(“买凯迪拉克”); }else if(money>=100){

C语言课程设计俄罗斯方块源代码

1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table();

void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include #include #include #include"tetris.h" //2.常量定义 #define APP_NAME "TETRIS" #define APP_TITLE "Tetris Game" #define GAMEOVER "GAME OVER" #define SHAPE_COUNT 7 #define BLOCK_COUNT 4 #define MAX_SPEED 5 #define COLUMS 10 #define ROWS 20 #define RED RGB(255,0,0)

俄罗斯方块C语言程序设计报告

C语言课程设计报告 俄罗斯方块程序设计报告 一、问题描述 俄罗斯方块(Tetris,俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。 在本次设计中,要求支持键盘操作和若干种不同类型方块的旋转变换,并且界面上显示下一个方块的提示以及当前的玩家的得分,随着游戏的进行,等级越高,游戏难度越大,即方块的下落速度越快,相应的等级,等级越高,为玩家提供了不同的选择。 二、功能分析 I、俄罗斯方块游戏需要解决的问题包括: ⑴、随机产生方块并自动下移 ⑵、用Esc键退出游戏 ⑶、用键变体 ⑷、用键和键左右移动方块 ⑸、用空格键使游戏暂停

⑹、能正确判断满行并消行、计分、定级别 ⑺、设定游戏为不同级别,级别越高难度越大 II、俄罗斯方块游戏需要设计的功能函数包括: ⑴、声明俄罗斯方块的结构体 ⑵、函数原型声明 ⑶、制作游戏窗口 ⑷、制作俄罗斯方块 ⑸、判断是否可动 ⑹、随机产生俄罗斯方块类型的序号 ⑺、打印俄罗斯方块 ⑻、清除俄罗斯方块的痕迹 ⑼、判断是否满行并删除满行的俄罗斯方块 三、程序设计 1、程序总体结构设计 (1)、游戏方块预览功能。在游戏过程中,游戏界面右侧会有预览区。由于在此游戏中存在多种不同的游戏方块,所以在游戏方块预览区域中显示随机生成的游戏方块有利于游戏玩家控制游戏的策略。 (2)、游戏方块控制功能。通过各种条件的判断,实现对游戏方块的左移、右移、自由下落、旋转功能,以及行满消除行的功能。 (3)、游戏数据显示功能。在游戏玩家进行游戏过程中,需要按照一定的游戏规则给玩家计算游戏分数。例如,消除一行加100分,游戏分数达到一定数量

Java_QQ_源程序代码

2010-06-23 20:24:11 TiBack import https://www.doczj.com/doc/0311419485.html,.*; import java.io.*; import java.sql.*; import java.util.*; public class QQServer { public static void main(String args[]) { try { //用户名同步(14) HashMap hm = new HashMap() ; // 服务器在8000端口监听(1) ServerSocket ss = new ServerSocket(8000); while (true) { "服务器正在8000端口监听....."); Socket s = ss.accept(); MyService t = new MyService(); t.setSocket(s); t.setHashMap(hm) ; t.start(); } } catch (Exception e) { } } } // 支持多用户登陆(13) class MyService extends Thread { private Socket s; private HashMap hm ; public void setHashMap(HashMap hm) { this.hm = hm ; } public void setSocket(Socket s) { this.s = s; } public void run() { try { // 接收客户端发送来的用户名和密码(2) InputStream is = s.getInputStream();

俄罗斯方块源代码

1. using System; using System.Collections.Generic; using System.Text; using System.Drawing;//add namespace俄罗斯方块 { public class Block { private short width; private short height; private short top; private short left; private int ID; //方块部件的ID public int[,] shape;//存储方块部件的形状,0为空白,1为有砖块 public Block()//构造函数 { Random randomGenerator = new Random(); int randomBlock = randomGenerator.Next(1, 6);//产生1—4的数 this.ID = randomBlock; switch (this.ID) { case 1: //横条形 this.Width = 4; this.Height = 1; this.Top = 0; this.Left = 3; shape = new int[this.Width, this.Height]; shape[0, 0] = 1; shape[1, 0] = 1; shape[2, 0] = 1; shape[3, 0] = 1; break; case 2://正方形 this.Width = 2; this.Height = 2; this.Top = 0; this.Left = 4; // Creates the new shape for this block. shape = new int[this.Width, this.Height]; shape[0, 0] = 1; shape[0, 1] = 1; shape[1, 0] = 1;shape[1, 1] = 1; break; case 3://T形 this.Width = 3; this.Height = 3; this.Top = 0; this.Left = 4; // Creates the new shape for this block. shape = new int[this.Width, this.Height]; shape[0, 0] = 1; shape[1, 0] = 1; shape[2, 0] = 1; shape[1, 1] = 1; shape[1, 2] = 1; break; case 4://L形 this.Width = 2; this.Height = 3; this.Top = 0; this.Left = 4;

俄罗斯方块完整源代码

//不多说,直接可以拷贝下面的东西,就可以运行。 package day04; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import https://www.doczj.com/doc/0311419485.html,ng.String.*; import https://www.doczj.com/doc/0311419485.html,ng.*; import java.io.*; public class ERSBlock extends JPanel implements ActionListener,KeyListener//应该是继承JPanel { static Button but[] = new Button[6]; static Button noStop = new Button("取消暂停"); static Label scoreLab = new Label("分数:"); static Label infoLab = new Label("提示:"); static Label speedLab = new Label("级数:"); static Label scoreTex = new Label("0"); static Label infoTex = new Label(" "); static Label speedTex = new Label("1");

static JFrame jf = new JFrame(); static MyTimer timer; static ImageIcon icon=new ImageIcon("resource/Block.jpg"); static JMenuBar mb = new JMenuBar(); static JMenu menu0 = new JMenu("游戏 "); static JMenu menu1 = new JMenu("帮助 "); static JMenuItem mi0 = new JMenuItem("新游戏"); static JMenuItem mi1 = new JMenuItem("退出"); static JMenuItem mi1_0 = new JMenuItem("关于"); static JDialog dlg_1; static JTextArea dlg_1_text = new JTextArea(); static int startSign= 0;//游戏开始标志 0 未开始 1 开始 2 暂停 static String butLab[] = {"开始游戏","重新开始","降低级数","提高级数","游戏暂停","退出游戏"}; static int game_body[][] = new int[19][10]; static int game_sign_x[] = new int[4];//用于记录4个方格的水平位置 static int game_sign_y[] = new int[4];//用于记录4个方格的垂直位置

JAVA俄罗斯方块源代码

不多说,,直接可以拷贝下面的东西,然后记得把那个BLOCK的名字改成你自己的类名,这个很关键哦,不然是错的可别怪我,呵呵~~ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import https://www.doczj.com/doc/0311419485.html,ng.String.*; import https://www.doczj.com/doc/0311419485.html,ng.*; import java.io.*; public class Block extends JPanel implements ActionListener,KeyListener//应该是继承JPanel { static Button but[] = new Button[6]; static Button noStop = new Button("取消暂停"); static Label scoreLab = new Label("分数:"); static Label infoLab = new Label("提示:"); static Label speedLab = new Label("级数:"); static Label scoreTex = new Label("0"); static Label infoTex = new Label(" "); static Label speedTex = new Label("1"); static JFrame jf = new JFrame(); static MyTimer timer; static ImageIcon icon=new ImageIcon("resource/Block.jpg"); static JMenuBar mb = new JMenuBar(); static JMenu menu0 = new JMenu("游戏 "); static JMenu menu1 = new JMenu("帮助 "); static JMenuItem mi0 = new JMenuItem("新游戏"); static JMenuItem mi1 = new JMenuItem("退出"); static JMenuItem mi1_0 = new JMenuItem("关于"); static JDialog dlg_1; static JTextArea dlg_1_text = new JTextArea(); static int startSign = 0;//游戏开始标志 0 未开始 1 开始 2 暂停 static String butLab[] = {"开始游戏","重新开始","降低级数","提高级数","游戏暂停","退出游戏"}; static int game_body[][] = new int[19][10]; static int game_sign_x[] = new int[4];//用于记录4个方格的水平位置 static int game_sign_y[] = new int[4];//用于记录4个方格的垂直位置 static boolean downSign = false;//是否落下 static int blockNumber = 1;//砖块的编号 static int gameScore = 0;//游戏分数 static int speedMark = 1;

中国象棋源代码Java程序

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class Chess{ public static void main(String args[]){ new ChessMainFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫"); } } class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable{ //玩家 JLabel play[] = new JLabel[32]; //棋盘 JLabel image; //窗格 Container con; //工具栏 JToolBar jmain;

//重新开始 JButton anew; //悔棋 JButton repent; //退出 JButton exit; //当前信息 JLabel text; //保存当前操作 Vector Var; //规则类对象(使于调用方法) ChessRule rule; /** ** 单击棋子 ** chessManClick = true 闪烁棋子并给线程响应 ** chessManClick = false 吃棋子停止闪烁并给线程响应*/ boolean chessManClick;

/** ** 控制玩家走棋 ** chessPlayClick=1 黑棋走棋 ** chessPlayClick=2 红棋走棋默认红棋** chessPlayClick=3 双方都不能走棋 */ int chessPlayClick=2; //控制棋子闪烁的线程 Thread tmain; //把第一次的单击棋子给线程响应 static int Man,i; ChessMainFrame(){ new ChessMainFrame("中国象棋"); } /** ** 构造函数 ** 初始化图形用户界面 */ ChessMainFrame(String Title){

俄罗斯方块游戏的开发需求分析

俄罗斯方块游戏的开发 组长:XXX 组员:XXX XXX XXX XXX 05软件工程一班 一、课程设计的目的和意义 俄罗斯方块游戏是一个经典的小游戏,由于它简单有趣,因而得到了广泛的流行,男女老幼都适合。而俄罗斯方块游戏的设计工作复杂且富有挑战性,它包含的内容多,涉及的知识广泛,与图形界面联系较大,包括界面的显示与更新、数据收集等,在设计的过程中,必将运用到各方面的知识,这对于visualbasi语 言设计者而言,是个很好的锻炼机会。 二、系统功能设计 本系统主要设计以下几种功能 1、游戏难度选择功能 游戏难度选择界面设置在程序运行开始时,一共有九种难度供玩家选择,每选一级难度,都会相应地显示出代表该难度的图片。开始时不设置任何默认的难度,如果玩家不选难度直接按“Enter”进入,将会弹出提示框,提示其先选难度再 进入。 2、方块下落、变形功能 在整个俄罗斯方块游戏中,方块的设计是核心。这里设计了一个方块类:Square( ),用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显 示、初始化新块等。 3、自动升级功能 当分数累积到一定大小时,系统将自动为玩家提高难度。这里设置了每消除10行方块,就增加一级难度。当难度增加的时候,方块会相应地改变颜色,以作为 对玩家的提示。 4、游戏音乐功能 游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。 5、获取帮助功能 这里设置了一个类,用来显示帮助,按F1键就能弹出窗口,显示游戏规则。

三、系统功能设计分析 俄罗斯方块游戏根据功能的不同,设置了如下12个类:Square, Command, GameArea, GameSetting, GameOver, Help, ImagePanel, JieMian, MyPanel, MyTimer, PlayMidi, WinListener,每个类的描述如下: 1、Square,方块类。这个类中定义了生成方块的方法,用二维数组int[][] pattern,存放7种方块的四种状态。在构造方法中以随机的形式生成方块,同时提供了以下几种方法:reset( ),leftTurn( ),leftMove( ),rightMove( ),fallDown( ),assertValid(int t,int s,int row,int col),dispBlock(int s)。分别实现方块的重画、翻转、 左移、右移、下落、同步显示等功能。 2、Command,处理控制类。这是一个实现ActionListener接口的类,主要处理 点击按钮事件。类中定义了三个int型变量:button_play,button_quit,button_pause,和一个boolean型的变量:pause_resume,并赋值。在GameArea 类中通过事件响应,在按钮执行方法中调用其值,使用switch语句,根据不同 按钮不同的值,来响应不同的事件。 3、GameArea,游戏界面类。GameArea继承了JFrame,是俄罗斯方块的主要游 戏界面。这个类定义了GameSetting类的gameScr对象和ImagePanel类的imagepanel对象作为游戏区域面板和控制区域面板。在游戏区域,主要是根据相应格子的设置标志来显示相应的图形图片,这样就实现了俄罗斯方块的实时显 示。 4、GameSetting, 游戏画布类。这个类生成的对象将作为游戏界面的方块下落区域,画布的设置为15行10列,当中的方格边长为30,类中还定义了一个二维数组int [][] scrArr作为屏幕数组,表示每一个方格。游戏区域中每一个方格是否存在游戏方块是由该方格的值来决定的,如果该方格的值为1,则表示该方格中存在游戏方块;如果该方格中的值为0,则表示该方格中不存在游戏方块,因此二维数组用于记录游戏区域中每个小方格的值。此外,类中还定义了画方块的方法,根据不同的难度画出不同颜色的方块。单击Play按钮时,系统调用initScr( )方法,初始化屏幕,将屏幕数组清零。当满足满行删除的条件时,系统调用deleteFullLine( )方法,进行删行加分,而且每删除十行,难度自动增加一级,方块颜色改变,并在难度显示框中相应显示。 5、GameOver,游戏结束弹出提示框类。当游戏结束时,系统弹出提示,包括玩 家分数以及询问玩家要继续游戏还是退出。 6、Help,帮助类。在游戏界面,按F1键,弹出提示窗口,获取帮助。 7、ImagePanel,背景图片类。这个类继承了JPanel类,用来作为游戏界面中控 制区域的容器,并添加图片。 8、JieMian,主界面类。这个类继承了JPanel类,作为游戏的第一个界面,也是难度选择界面。定义了9个单选按钮,当玩家未选任何难度就按Enter时,系统会弹出一个提示框,提示玩家先选难度再进入。 9、MyPanel,重写MyPanel类,使Panel的四周留空间。

C语言俄罗斯方块游戏源代码

/*学无止境*/ #include <> #include <> #include <> #define ESC 27 #define UP 328 #define DOWN 336 #define LEFT 331 #define RIGHT 333 #define BLANK 32 #define BOTTOM 2 #define CANNOT 1 #define CAN 0 #define MAX 30 #define F1 315 #define ADD 43 #define EQUAL 61 #define DEC 45 #define SOUNDs 115 #define SOUNDS 83 #define PAUSEP 80 #define PAUSEp 112

void Init(); void Down(); void GoOn(); void ksdown(); void Display(int color); void Give(); int Touch(int x,int y,int dx,int dy); int GeyKey(); void Select(); void DetectFill(); void GetScores(); void Fail(); void Help(); void Quit(); void DrawBox(int x,int y,int Color); void OutTextXY(int x,int y,char *String); void DispScore(int x,int y,char Ch); void DrawNext(int Color); int Heng=12,Shu=20; /*横竖*/ int Position[MAX][MAX]; int middle[MAX][MAX]; int ActH,ActS;

一个Java小程序源代码

一个Java小程序源代码 一个Java小程序源代码(反转字符串) //BorderLayoutTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; public class test1 { public static void main(String[] args) { cloneFrame frame = new cloneFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class cloneFrame extends JFrame { public cloneFrame() { setTitle("机试程序"); setSize(600, 400); JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(new Color(56,43,85));

Button1 = new JButton("点击复制反转字符串"); Button1.addActionListener(new turnListener()); buttonPanel.add(Button1); JPanel textPanel = new JPanel(); textPanel.setBackground(new Color(100,100,100)); field1 = new JTextField("姓名:老孙;学号:2004132028", 20); field2 = new JTextField("反转", 20); field2.setEditable(false); textPanel.add(field1); textPanel.add(field2); JPanel tuPanel = new JPanel(); JLabel label = new JLabel(new ImageIcon("006.gif")); tuPanel.add(label); tuPanel.setBackground(new Color(100,100,100)); Container contentPane = getContentPane(); contentPane.add(buttonPanel, BorderLayout.SOUTH); contentPane.add(textPanel, BorderLayout.NORTH); contentPane.add(tuPanel, BorderLayout.CENTER); contentPane.setBackground(new Color(100,100,100)); } private class turnListener implements ActionListener { public void actionPerformed(ActionEvent event) {

相关主题
文本预览
相关文档 最新文档