君山 貴徳 - BT STAFF

BT STAFF
java_分譲地
package btjava;
Source
plotting700クラスの
インスタンスを作成する
public static void main(String[] args) {
plotting700 plt_obj = new plotting700();
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
通常、Javaで「オブジェクト」といえば
インスタンスのことを示します。
public class Pro700 {
}
「区画」の中にある「種類」の数
class plotting700 {
int count = 6;
「区画」の面積 フィールド
long area;
form700 form_obj = new form700();
コンストラクタ
plotting700() {
area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6
}
}
long GetArea() {
return( area );
}
KAMATAKA URABE
「区画」の面積を取得する関数
メソッド
チャプタ 1
Java_分譲地
for 君山君
Pro700∼ Pro710 : 区画クラスと、種類(家)クラス
package btjava;
Source
plotting700クラスの
public class Pro700 {
インスタンスを作成する
public static void main(String[] args) {
plotting700 plt_obj = new plotting700();
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
通常、Javaで「オブジェクト」といえば
}
インスタンスのことを示します。
「区画」の中にある「種類」の数
class plotting700 {
int count = 6;
「区画」の面積 フィールド
long area;
form700 form_obj = new form700();
コンストラクタ
plotting700() {
area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6
}
}
long GetArea() {
return( area );
}
「区画」の面積を取得する関数
メソッド
セクション 1
【 概要 】
区画クラスと、種類(家)クラス
大きな土地を、区画割りして、
その1区画に、分譲の家を建築したり庭を作成する。
家の面積、庭の面積を変更すると、それを囲う区画の
面積が自動的に変化する。
また、それぞれの区画を囲う土地の面積も変化する。
とりあえず、そこまでのプログラムを作成します。
P RO 700 ∼ P RO 709
1. クラス(class)の作成
2. デバッグ(debug) Pro700
3. オブジェクト(object)の配列
4. デバッグ(debug) Pro701
5. Javaの変数タイプ
6. コンストラクタ(constructor)に、
引数 (ARGUMENT)を
7. 矩形(rectangle)の開始点の追加
8. クラス(rect)の作成
9. 矩形(rectangle)の座標とサイズ
10. 配列の矩形(rectangle)データ
11. 2つのコンストラクタ
12. 浮動小数点(floating point)
13. 汎用クラスを別ファイルに
14. main → 関数化
【 考え方 】
1区画に、分譲の家を建築したり庭を作成する。
区画、分譲の家、庭のクラスを作成します。
区画 : plotting
種類(分譲の家): form
庭 : garden
< Pro700 >
区画(plotting)、種類(form)のクラス(class)を作成後、
区画クラス内に、 「種類の数」を定義する。
それぞれのクラス内に、面積を定義する。
最初は、「種類の数」、「面積」に適当な初期値を設
定する。
< Pro701 >
「種類(form)」のオブジェクトを6個生成する。
その6個の「種類の面積」を合計して、その値を
「区間の面積」にセットする。
2
クラス(class)の作成
package btjava;
Source
plotting700クラスの
public class Pro700 {
インスタンスを作成する
public static void main(String[] args) {
plotting700 plt_obj = new plotting700();
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
通常、Javaで「オブジェクト」といえば
}
インスタンスのことを示します。
「区画」の中にある「種類」の数
class plotting700 {
int count = 6;
「区画」の面積 フィールド
long area;
form700 form_obj = new form700();
コンストラクタ
plotting700() {
area = 10000 * 20000 * count; // 10M ✖ 20M ✖ 6
}
}
long GetArea() {
return( area );
}
naming(命名)
「区画」の面積を取得する関数
メソッド
「種類」の中にある物の数 フィールド
class form700 {
int count = 0;
「種類」の面積 フィールド
long area;
form700() {
area = 10000 * 20000;
// 10M ✖ 20M
}
コンストラクタ
}
区画 : plotting 家の種類 : form 面積 :area
平方メートル : square meter( 【略】sq.m. ; sq m ; m2 )
種類(form)
種類(form)
種類(form)
種類(form)
class form700
種類(form)
種類(form)
class plotting700
区画(plotting)
面積の最小単位 : mm 型:long
メソッド
家具などのサイズを考慮したため。
フィールド
コンストラクタは特殊メソッドです。
コンストラクタ newによりクラスのインスタンスを作成しょ
うとしたとき、自動的に呼び出されます。
3
ト
デバッグ(debug)
イ
ン
②
レ
ー
ク
ポ
コンストラクタ
ブ
③
①
ブレークポイント(breakPoint)を
ダブルクリックで設定します。
②
デバッグ実行
ブレーク(break)
ブ
レ
ー
ク
ポ
イ
ン
ト
③
①
コンストラクタ
④
④
4
オブジェクト(object)の配列
package btjava;
Source
plotting701クラスの
public class Pro701 {
インスタンスを作成する
public static void main(String[] args) {
plotting701 plt_obj = new plotting701();
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
}
form_obj_arr[i]
[0] [1] [2] [3] [4]
[5]
種類(form)
class form701 { クラス内でのみ利用可能
//
private int count = 0; 外部からは一切利用できません
private long area;
「種類」の面積
form701() {
area = 10000 * 20000;
// 10M ✖ 20M
}
コンストラクタ
long GetArea() {
return( area );
メソッド
}
「種類」の面積を取得する関数
}
200 sq.m. ✖ 6
1200 sq.m.
デバッグ(debug)
class plotting701 {
int count = 6;
long area = 0;
form701[] form_obj_arr = new form701[count];
plotting701() {
}
}
コンストラクタ
for( int i = 0; i <count; i++) {
form_obj_arr[i] = new form701();
}
long GetArea() {
「区画」の面積を取得する関数
area = 0;
int cnt = form_obj_arr.length;
メソッド
for ( int i=0; i<cnt; i++ ) {
area += form_obj_arr[i].GetArea();
}
return( area );
}
ブレークポイント(breakPoint)を
ダブルクリックで設定します。
デバッグ実行
5
ブレーク(break)
マウスカーソルを「area」の上に
置くと「area」の値が表示されます。
マウスカーソルを「count」の上に
置くと、値が表示されます。
ブレーク
コンストラクタ
6
Javaの変数タイプ
整数 ( INTEGER )
integer
byte
8bit
-128∼127
short 16bit -32,768∼32,768
int
32bit
-2,147,483,648∼2,147,483,647
long
64bit
-9,223,372,036,854,775,808
∼9,223,372,036,854,775,807
実数 ( REAL )
real
float
32bit
有効桁数 : 最低6桁
double 64bit
有効桁数 : 最低15桁
character
マウスカーソルを「area」の上に
置くと「area」の値が表示されます。
Page78
char
文字 ( CHARACTER )
16bit
authenticity
1文字の値だけを収められるもの
真偽 ( AUTHENTICITY )
boolean 8bit
trueまたはfalseのいずれか
7
package btjava;
public class Pro702 {
Pro702
Source
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 6;
plotting702 plt_obj = new plotting702( count );
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
}
public class Pro701 {
public static void main(String[] args) {
// TODO Auto-generated method stub
plotting701 plt_obj = new plotting701();
System.out.print( plt_obj.GetArea()/
(1000*1000) + " sq.m." );
}
}
int count = 6; をメイン側に移動する。
class plotting702 {
int count;
long area = 0;
form702[] form_obj_arr;
plotting702( int Count ) {
count = Count;
form_obj_arr = new form702[count];
for( int i = 0; i <count; i++) {
form_obj_arr[i] = new form702();
}
}
plotting702( int Count ) {
count = Count;
form_obj_arr = new form702[count];
long width = 10000;
long height = 20000;
for( int i = 0; i <count; i++) {
}
package btjava;
form_obj_arr[i] = new form702( width, height );
} class form702 {
private long area;
form702( long width, long height ) {
area = width * height; // width ✖ height
}
コンストラクタ(constructor)
class plotting701 {
int count = 6; に、引数 (ARGUMENT)を
long area = 0;
form701[] form_obj_arr = new form701[count];
plotting701() {
for( int i=0; i<count; i++) {
form_obj_arr[i] = new form701();
}
}
plotting701() {
for( int i=0; i<count; i++) {
form_obj_arr[i] = new form701();
}
}
class form701 {
private long area;
form701() {
area = 10000 * 20000;
}
// 10M ✖ 20M
8
Pro703
Source
矩形(rectangle)の開始点の追加
class form703 {
private long area;
private long[] p = new long[4];
// x, y, w, h
form703( long X, long Y, long W, long H ) {
p[0] = X;
p[1] = Y;
p[2] = W;
p[3] = H;
area = W * H;
// width ✖ height
}
long[] GetRectangle() {
return( p );
}
配列Pの追加
long GetArea() {
return( area ); 矩形の開始点( X, Y)の変数追加
}
plotting703( int Count ) {
count = Count;
form_obj_arr = new form703[count];
long x = 0;
long y = 0;
long width = 10000;
long height = 20000;
for( int i=0; i<count; i++) {
form_obj_arr[i] = new form703( x, y, width, height );
}
}
矩形の開始点( X, Y)の変数追加
plotting702( int Count ) {
count = Count;
form_obj_arr = new form702[count];
long width = 10000;
long height = 20000;
for( int i=0; i<count; i++) {
form_obj_arr[i] = new form702( width, height );
}
}
}
class form702 {
private long area;
form702( long width, long height ) {
area = width * height; // width ✖ height
}
long GetArea() {
return( area );
}
}
9
Pro704
Source
矩形(rectangle)の座標とサイズ
クラス(rect)の作成
class rect {
private int no;
private long[] r = new long[4];
// x, y, w, h
rect( int No, long x, long y, long w, long h ) {
no = No;
r[0] = x;
r[1] = y;
rectangle
r[2] = w;
r[3] = h;
}
W H
コンストラクタ
Y
long[] GetRect() {
return( r );
}
}
form_arr[3]
form_arr[0]
form_arr[5]
form_arr[2]
form_arr[1]
form_arr[4]
( x, y )
int GetNo() {
return( no ); ( 0, 0 )
}
X
class plotting704 {
int count;
long area = 0;
rect[] form_arr = null;
form704[] form_obj_arr;
plotting704( rect[] Form_Arr ) {
form_arr = Form_Arr;
count = Form_Arr.length;
form_obj_arr = new form704[count];
for( int i=0; i<count; i++ ) {
long[] r = form_arr[i].GetRect();
form_obj_arr[i] = new form704(
r[0], r[1], r[2], r[3] );
}
}
rect[] form_arr = new rect[count];
long K = 1000;
form_arr[0] = new rect( 0, 0*K, 0*K, 10*K, 24*K );
form_arr[1] = new rect( 1, 10*K, 0*K, 20*K, 10*K );
form_arr[2] = new rect( 2, 10*K, 10*K, 20*K, 4*K );
form_arr[3] = new rect( 3, 10*K, 14*K, 20*K, 10*K );
form_arr[4] = new rect( 4, 30*K, 0*K, 10*K, 10*K );
form_arr[5] = new rect( 5, 30*K, 10*K, 10*K, 14*K );
plotting704 plt_obj = new plotting704( form_arr );
long area = plt_obj.GetArea();
System.out.print( area/(1000*1000) + " sq.m." );
10
配列の矩形(rectangle)データ
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 6;
rect705[] form_arr = new rect705[count];
long K = 1000;
Pro705
Source
long[][] rect_arr = { {0*K, 0*K, 10*K, 24*K}, {10*K, 0*K, 20*K, 10*K}, {10*K, 10*K, 20*K, 4*K},
{10*K, 14*K, 20*K, 10*K}, {30*K, 0*K, 10*K, 10*K}, {30*K, 10*K, 10*K, 14*K} };
for( int i=0; i<count; i++ ) {
form_arr[i] = new rect705( i, rect_arr[i][0], rect_arr[i][1], rect_arr[i][2], rect_arr[i][3] );
}
plotting705 plt_obj = new plotting705( form_arr );
long area = plt_obj.GetArea();
System.out.print( area/(1000*1000) + " sq.m." );
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 6;
rect704[] form_arr = new rect704[count];
long K = 1000;
form_arr[0] = new rect704( 0, 0*K, 0*K, 10*K, 24*K );
form_arr[1] = new rect704( 1, 10*K, 0*K, 20*K, 10*K );
form_arr[2] = new rect704( 2, 10*K, 10*K, 20*K, 4*K );
form_arr[3] = new rect704( 3, 10*K, 14*K, 20*K, 10*K );
form_arr[4] = new rect704( 4, 30*K, 0*K, 10*K, 10*K );
form_arr[5] = new rect704( 5, 30*K, 10*K, 10*K, 14*K );
plotting704 plt_obj = new plotting704( form_arr );
long area = plt_obj.GetArea();
System.out.print( area/(1000*1000) + " sq.m." );
}
11
Pro706
Source
class rect706 {
2つのコンストラクタ
private int no;
private long[] r = new long[4];
// x, y, w, h
rect706( int No, long x, long y, long w, long h ) {
no = No;
r[0] = x;
r[1] = y;
前のコンストラクタ
r[2] = w;
r[3] = h;
}
コンストラクタ
rect706( int No, long[] R ) {
no = No;
r[0] = R[0];
r[1] = R[1]; 新しくコンストラクタを作成
r[2] = R[2];
r[3] = R[3];
}
long[] GetRect() {
return( r );
}
}
int GetNo() {
return( no );
}
浮動小数点(floating point)
Pro706
long area = plt_obj.GetArea();
System.out.print( area/(1000.0*1000.0) + " sq.m." );
long(8byte)で加算されてきた面積を
浮動小数点で割る。
単位 1M(メーター) : 1000mm
メーター : meter
Pro705
long area = plt_obj.GetArea();
System.out.print( area/(1000*1000) + " sq.m." );
【 面積をlong(8byte)で加算した理由 】
誤差を出さないため。
longから、浮動小数点に
正規化(normalization)に変換されると
誤差を生じるケースがあります。
加算、乗算は、誤差を生じさせないために整数を用いる。
for( int i=0; i<count; i++ ) {
前の引数
Pro705
form_arr[i] = new rect706( i,
rect_arr[i][0], rect_arr[i][1], rect_arr[i][2], rect_arr[i][3] );
}
for( int i=0; i<count; i++ ) {
新しい引数
form_arr[i] = new rect706( i, rect_arr[i] );
}
Pro706
12
Pro707
Source
矩形(rectangle)データ
public static void main(String[] args) {
String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4],
[10,14,20,10],[30,0,10,10],[30,10,10,14]";
util obj_util = new util();
Pro707
long[][] rect_arr = obj_util.GetRectArr( rect_str );
int count = obj_util.GetRectCount( rect_str );
public static void main(String[] args) {
int count = 6;
Pro706
long K = 1000;
long[][] rect_arr = { {0*K, 0*K, 10*K, 24*K},
{10*K, 0*K, 20*K, 10*K}, {10*K, 10*K, 20*K, 4*K},
{10*K, 14*K, 20*K, 10*K}, {30*K, 0*K, 10*K, 10*K},
{30*K, 10*K, 10*K, 14*K} };
long GetLongFromStr( String str ) {
int point = 4;
long num = 0;
for ( int i=0; i<str.length(); i++ ) {
String n = str.substring( i, i+1 );
if ( n.equals(".") == true ) { point = 3; }
else {
if ( point != 4 ) { point--; }
num *= 10;
num += Integer.parseInt( n );
}
}
if ( point == 4 ) { point--; }
for ( int j=0; j<point; j++ ) {
num *= 10;
}
return( num );
}
矩形のデータを数値の文字列にする。(例)12.34 M → 12340 mm
矩形データが、いままでコーディングしたプログラム
の入力データとなります。
外部から、このプログラムを呼びやすくするために
[ 文字列 ]から[ longの2次元配列 ] に変換する関数を
作成します。
つまり、 矩形データを、 [ 文字列 ]にします。
“12.34”は、12.34M(メーター)の意味で、12340の整数
に変換します。
13
0
1
num *= 10;
num += Integer.parseInt( n );
1230
1234
1
1*10
“2”
1234
120
123
14
文字列を、配列の 文字列にする。
String[] GetRectStrArr( String rect_str ) {
rect_str = "," + rect_str;
String[] rect_str_arr = rect_str.split( "]" );
for ( int i=0; i<rect_str_arr.length; i++ ) {
rect_str_arr[i] = rect_str_arr[i].substring( 2 );
}
return( rect_str_arr );
}
for ( int i=0; i<rect_str_arr.length; i++ ) {
rect_str_arr[i] = rect_str_arr[i].substring( 2 );
}
String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4],
[10,14,20,10],[30,0,10,10],[30,10,10,14]";
rect_str = "," + rect_str;
String rect_str = ",[0,0,10,24],[10,0,20,10],[10,10,20,4],
[10,14,20,10],[30,0,10,10],[30,10,10,14]";
,(カンマ)
,
“ [ ”を削除する
",[0,0,10,24”
rect_str_arr[i] = rect_str_arr[i].substring( 2 );
"0,0,10,24”
15
long[][] GetRectLongArr( String[] rect_str_arr ) {
int count = rect_str_arr.length;
long[][] rect_arr = new long[count][4];
for ( int i=0; i<count; i++ ) {
String[] num_arr = rect_str_arr[i].split( "," );
for ( int j=0; j<num_arr.length; j++ ) {
String num_str = num_arr[j];
rect_arr[i][j] = GetLongFromStr( num_str );
}
}
return( rect_arr );
}
int count = rect_str_arr.length;
6
long[][] GetRectArr( String rect_str ) {
String[] rect_str_arr = GetRectStrArr( rect_str );
long[][] rect_arr = GetRectLongArr( rect_str_arr );
return( rect_arr );
}
long[][] GetRectArr( String rect_str ) {
String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4],
[10,14,20,10],[30,0,10,10],[30,10,10,14]";
String[] rect_str_arr = GetRectStrArr( rect_str );
long[][] GetRectArr( String rect_str ) {
return( rect_arr );
}
String[] num_arr = rect_str_arr[i].split( "," );
16
汎用クラスを別ファイルに
Copy & Paste
Pro708 e
Sourc
UtilStr
汎用クラス名
チェック、はずす
17
Pro709
Source
main → 関数化
public static void main(String[] args) {
String rect_str = "[0,0,10,24],[10,0,20,10],[10,10,20,4],
[10,14,20,10],[30,0,10,10],[30,10,10,14]";
land709 land_obj = new land709();
land_obj.SetPlotting( rect_str );
}
class land709 {
void SetPlotting( String rect_str ) {
UtilStr obj_util = new UtilStr();
long[][] rect_arr = obj_util.GetRectArr( rect_str );
int count = obj_util.GetRectCount( rect_str );
rect709[] form_arr = new rect709[count];
for( int i=0; i<count; i++ ) {
form_arr[i] = new rect709( i, rect_arr[i] );
}
plotting709 plt_obj = new plotting709( form_arr );
long area = plt_obj.GetArea();
System.out.print( area/(1000.0*1000.0) + " sq.m." );
}
}
18
セクション 2
GUI_HTML5,CSS3,JavaScript
G RAPHIC U SER I NTERFACE
1. HTML File の作成
2. ファイル処理クラスを別ファイルに
3. HTMLファイルに「区画内の矩形」を
4. 文字列の矩形データをlong[][]で
19
HTML File の作成
リンク
page150
<!DOCTYPE html>
<html lang="ja"> HTML5
<head>
<title>Pro710_矩形「</title>
Source
Pro710.html
20
<script type="text/javascript">
function init()
キャンパスを指定します
{
var c = document.getElementById("canvas");
var cnt = c.getContext("2d");
コンテキストを取得します
cnt.strokeStyle = "#00FF00";
線のスタイルを指定します
cnt.fillStyle = "#FFFFFF";
塗りのスタイルを指定します
cnt.shadowColor = "#FF0000";
影の色を指定します
cnt.shadowBlur = 10;
影の太さを指定します
cnt.fillRect( 50, 50, 100, 80);
四角形を描画します
cnt.fillStyle = "#808080";
cnt.shadowColor = "#00FF00";
cnt.shadowBlur = 20;
cnt.fillRect(200, 50, 100, 80);
cnt.fillStyle = "#000000";
cnt.shadowColor = "#0000FF";
cnt.shadowBlur = 30;
cnt.fillRect(350, 50, 100, 80);
cnt.fill();
}
</script>
#FFFFFF
#808080
#000000
</head>
<body onload="init()">
<canvas id="canvas" width="600" height="400"></canvas>
</body>
</html>
21
ファイル処理クラスを別ファイルに
package btjava;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class FilePrc {
public String load(String FileName) {
FileReader fr = null;
BufferedReader br = null;
String str = "";
try {
fr = new FileReader(FileName);
br = new BufferedReader(fr);
String rstr = "";
while ((rstr = br.readLine()) != null)
str += rstr + "\r\n";
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
br.close();
} catch (Exception ex2) {
ex2.printStackTrace();
}
}
return(str);
}
Source
ファイルク処理ラス名
FilePrc
public void save(String FileName, String txt) {
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(FileName);
bw = new BufferedWriter(fw);
bw.write(txt);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
bw.close();
} catch (Exception ex2) {
ex2.printStackTrace();
}
}
}
チェック、はずす
}
22
public class Pro711 {
HTMLファイルに「区画内の矩形」を
public static void main(String[] args) {
String rect_str = "[0,0,10,24],[10,0,20,10],
[10,10,20,4],[10,14,20,10],
[30,0,10,10],[30,10,10,14]";
land711 land_obj = new land711();
land_obj.SetPlotting( rect_str );
FilePrc obj_fil = new FilePrc();
String HTMLtxt = obj_fil.load(
"src/btjava/Pro710.html" );
HTMLtxt = HTMLtxt.replaceAll( "710", "711" );
obj_fil.save( "src/btjava/Pro711.html", HTMLtxt );
}
}
Source
Pro711
ç
Source
Pro711.html
Pro711.html
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(0,0,10,24);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,14,20,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,0,20,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(30,0,10,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,10,20,4);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(30,10,10,14);
Pro712.html
23
Pro712
Source
Pro712.html
FilePrc obj_fil = new FilePrc();
String HTMLtxt = obj_fil.load("src/btjava/Pro711.html" );
HTMLtxt = HTMLtxt.replaceAll( "711", "712" );
int p = HTMLtxt.indexOf( "getContext" );
p = HTMLtxt.indexOf( "\n", p );
String HTMLtxtT = HTMLtxt.substring( 0, p+1 );
p = HTMLtxt.indexOf( "cnt.fill();" );
String HTMLtxtB = "\t" + HTMLtxt.substring( p );
FilePrc obj_fil = new FilePrc();
String HTMLtxt = obj_fil.load("src/btjava/Pro711.html");
<!DOCTYPE html>
<html lang="ja">
"src/btjava/Pro711.html"
<head>
<title>Pro711</title>
<script type="text/javascript">
function init()
{
var c = document.getElementById("canvas");
var cnt = c.getConte
HTMLtxt = HTMLtxt.replaceAll( "711", "712" );
<title>Pro711</title>
<title>Pro712</title>
int p = HTMLtxt.indexOf( "getContext" );
UtilStr obj_util = new UtilStr();
String[] rect_str_arr = obj_util.GetRectStrArr( rect_str );
String HTMLtxtM = "\r\n";
for ( int i=0; i<rect_str_arr.length; i++ ) {
HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n";
HTMLtxtM += "\tcnt.shadowColor ='#FF0000';\r\n";
HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n";
HTMLtxtM += "\tcnt.fillRect(";
HTMLtxtM += rect_str_arr[i];
HTMLtxtM += ");\r\n";
HTMLtxtM += "\r\n";
}
HTMLtxt = HTMLtxtT + HTMLtxtM + HTMLtxtB;
obj_fil.save( "src/btjava/Pro712.html", HTMLtxt );
24
p = HTMLtxt.indexOf( "cnt.fill();" );
String HTMLtxtB = "\t" + HTMLtxt.substring( p );
cnt.fill();
}
</script> "src/btjava/Pro711.html"
</head>
<body onload="init()">
<canvas id="canvas" width="600"
height="400"></canvas>
</body>
</html>
UtilStr obj_util = new UtilStr();
String[] rect_str_arr = obj_util.GetRectStrArr( rect_str );
String HTMLtxtM = "\r\n";
for ( int i=0; i<rect_str_arr.length; i++ ) {
HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n";
HTMLtxtM += "\tcnt.shadowColor ='#FF0000';\r\n";
HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n";
HTMLtxtM += "\tcnt.fillRect(";
HTMLtxtM += rect_str_arr[i];
HTMLtxtM += ");\r\n";
HTMLtxtM += "\r\n";
}
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(0,0,10,24);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,14,20,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,0,20,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(30,0,10,10);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(10,10,20,4);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(30,10,10,14);
HTMLtxt = HTMLtxtT + HTMLtxtM + HTMLtxtB;
obj_fil.save( "src/btjava/Pro712.html", HTMLtxt );
25
文字列の矩形データをlong[][]で
UtilStr obj_utilå= new UtilStr();
Pro712
String[] rect_str_arr = obj_util.GetRectStrArr( rect_str );
Pro713
public static void main(String[] args) {
double scale = 80.0;
double x_ofs = 6000;
double y_ofs = 4000;
Source
Pro713.html
Pro713.html
Pro713
UtilStr obj_util = new UtilStr();
long[][] rect_arr = obj_util.GetRectArr( rect_str );
String HTMLtxtM = "\r\n";
for ( int i=0; i<rect_arr.length; i++ ) {
HTMLtxtM += "\tcnt.fillStyle = '#FFFFFF';\r\n";
HTMLtxtM += "\tcnt.shadowColor = '#FF0000';\r\n";
HTMLtxtM += "\tcnt.shadowBlur = 20;\r\n";
HTMLtxtM += "\tcnt.fillRect(";
HTMLtxtM += ((rect_arr[i][0]+x_ofs)/scale);
HTMLtxtM += ",";
HTMLtxtM += ((rect_arr[i][1]+y_ofs)/scale);
HTMLtxtM += ",";
HTMLtxtM += (rect_arr[i][2]/scale);
HTMLtxtM += ",";
HTMLtxtM += (rect_arr[i][3]/scale);
HTMLtxtM += ");\r\n";
HTMLtxtM += "\r\n";
}
Pro713.html
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(75.0,50.0,125.0,300.0);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(200.0,225.0,250.0,125.0);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(200.0,50.0,250.0,125.0);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(450.0,50.0,125.0,125.0);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(200.0,175.0,250.0,50.0);
cnt.fillStyle = '#FFFFFF';
cnt.shadowColor = '#FF0000';
cnt.shadowBlur = 20;
cnt.fillRect(450.0,175.0,125.0,175.0);
26