/
newCDisp.dat
1 lines (1 loc) · 5.61 KB
/
newCDisp.dat
1
"newCDisp","仮想表示クラス作成","(__r____n__/*__r____n__ -----------------------------__r____n__ -----------------------------__r____n__ -----------------------------__r____n__ 仮想画面クラス作成__r____n__ クラス名:CDisp__r____n__ -----------------------------__r____n__ -----------------------------__r____n__ -----------------------------__r____n__*/__r____n__ con = context__c__ /* 仮想画面のコンテキストを作る */__r____n__ setrcom(con__c____q__仮想画面__q__)__c____r____n____r____n__ /* 初期画面を作る */__r____n__ txt = __q____q____c____r____n__ for(cnt __c__ 1 __c__ 80 __c__ 1 __c__ txt = stradd(txt__c____q__ __q__))__c____r____n__ txt = stradd(txt__c____q__\n__q__)__c____r____n__ con.ctxt = __q____q__ __c____r____n__ for(cnt __c__ 1 __c__ 12 __c__ 1 __c__ con.ctxt = stradd(con.ctxt__c__txt))__c____r____n____r____n__ /* 仮想画面(80*12)を作る。仮想画面をクリアする */__r____n__ def(con.clear__c____r____n__'__r____n__this.disptxt = this.ctxt__r____n__'__r____n__ )__c____r____n____r____n__ con.clear__c__ /* 仮想画面作成 */__r____n____r____n__ /* __r____n__仮想画面に文字を表示する関数定義__r____n__@1: X(0始まり)__r____n__@2: Y(0始まり)__r____n__@3: 文字列__r____n__ */__r____n__ def(con.dprint__c____q____r____n__(__r____n__ x = @1 __c__ /* @変数は代入不能なのでコピー */__r____n__ y = @2 __c__ /* @変数は代入不能なのでコピー */__r____n__ dispstr = if(strlen(@3) > (80 - x) __c__ substr(@3 __c__ 0 __c__ 80 - x) __c__ @3)__c____r____n____r____n__ nodisp = 0 __c____r____n__ if(x < 0 __c__nodisp = 1 )__c____r____n__ if(x > 79 __c__nodisp = 1 )__c____r____n__ if(y < 0 __c__nodisp = 1 )__c____r____n__ if(y > 11 __c__nodisp = 1 )__c____r____n__ if(!(nodisp)__c____r____n__ (__r____n__ stpos = int(y)*82+int(x)__c__/* 文字列挿入位置 */__r____n__ edpos = stpos+strlen(dispstr)__c__ /* 文字列後半位置 */__r____n__ this.disptxt = stradd(substr(this.disptxt__c__0 __c__stpos)__c__dispstr__c__substr(this.disptxt__c__edpos__c__82*12))__r____n__ )__r____n__ )__r____n__)__r____n____q__)__c____r____n____r____n__ /* __r____n__仮想画面より文字取得__r____n__@1: X(0始まり)__r____n__@2: Y(0始まり)__r____n__ */__r____n__ def(con.getch__c__'__r____n__(__r____n__ x = @1 __c__ /* @変数は代入不能なのでコピー */__r____n__ y = @2 __c__ /* @変数は代入不能なのでコピー */__r____n__ ret = __q__ __q____c__ /* 帰り値 */__r____n__ if(x < 0 __c__ret = __q__#__q__)__c__ /* 外は壁 */__r____n__ if(x > 79 __c__ret = __q__#__q__)__c____r____n__ if(y < 0 __c__ret = __q__#__q__)__c____r____n__ if(y > 11 __c__ret = __q__#__q__)__c____r____n__ if(!(ret == __q__#__q__)__c____r____n__ ret = substr(this.disptxt__c__int(y)*82+int(x)__c__1)__r____n__ )__c____r____n__ ret__r____n__)__r____n__')__c____r____n____r____n__/* 画面表示関数定義 */__r____n__ def(con.disp__c____q__print(this.disptxt)__q__)__c____r____n____r____n__/* 爆発ライン表示__r____n__ @1:表示文字__r____n__ @2:表示開始X__r____n__ @3:表示開始Y__r____n__ @4:Xベクトル__r____n__ @5:Yベクトル__r____n__ @6:回数__r____n__*/__r____n__ def(con.line__c__'__r____n__(__r____n__ x = @2 __c____r____n__ y = @3 __c____r____n__ d = pow(@4*@4+@5*@5__c__0.5)__c____r____n__ xv = @4/d __c____r____n__ yv = @5/d __c____r____n__ for(cnt __c__ 1 __c__ @6 __c__ 1 __c____r____n__ (__r____n__ this.dprint(x__c__y__c__@1)__c____r____n__ this.disp__c____r____n__ delay(5)__c____r____n__ x = x+xv __c____r____n__ y = y+yv__r____n__ )__r____n__ )__r____n__)__r____n__'__r____n__ )__c____r____n____r____n__/* 画面合成__r____n__ CDisp @1 を自分の画面にコピーする__r____n____r____n__ @1:コピー元 CDisp のコンテキストリソースID__r____n__*/__r____n__ def(con.copy__c__@'__r____n__(__r____n__ for(y__c__0 __c__11 __c__ 1 __c__ __r____n__ this.dprint(0 __c__y__c__@1.getline(y))__r____n__ )__r____n__)__r____n__'__r____n__ )__c____r____n____r____n__/* 左スクロール__r____n__*/__r____n__ def(con.lscroll__c__@'__r____n__(__r____n__ for(y__c__0 __c__11 __c__ 1 __c__ __r____n__ (__r____n__ tmp = this.getline(y)__c____r____n__ this.dprint(0 __c__y__c__substr(tmp__c__1 __c__ 79) & substr(tmp__c__0 __c__ 1))__r____n__ )__r____n__ )__r____n__)__r____n__'__r____n__ )__c____r____n____r____n__/* ライン文字列取得__r____n____r____n__ @1:Y__r____n__*/__r____n__ def(con.getline__c__@'__r____n__substr(this.disptxt__c__@1*82 __c__80)__r____n__'__r____n__ )__c____r____n____r____n__// -----------------__r____n__// 点滅文字表示__r____n__// @1:表示位置 x__r____n__// @2:表示位置 y__r____n__// @3:表示文字__r____n__// @4:点滅回数__r____n__// [@5:ウエイト値]__r____n__// -----------------__r____n__ def(con.blink__c__@'__r____n__(__r____n__ dispstr = @3 __c__ // 表示文字列__r____n__ wstr = __q____q____c__ // 消去文字列__r____n__ for(cnt __c__ 1 __c__ strlen(dispstr) __c__ 1 __c__ wstr = wstr & __q__ __q__)__c____r____n__ if(isdef(@5) __c__ waitval = @5 __c__ waitval = 300)__c__ // ウエイト値__r____n__ x = @1 __c__ __r____n__ y = @2 __c____r____n__ blinkcnt = @4 __c____r____n__ __r____n__ for(cnt __c__ 1 __c__ blinkcnt __c__ 1 __c____r____n__ (__r____n__ this.dprint(x __c__ y __c__ dispstr)__c____r____n__ this.disp__c____r____n__ delay(waitval)__c____r____n__ this.dprint(x __c__ y __c__ wstr )__c____r____n__ this.disp__c____r____n__ delay(waitval)__r____n__ )__r____n__ )__c____r____n__ this.dprint(x __c__ y __c__ dispstr)__c____r____n__ this.disp__r____n__)__r____n__ ')__c____r____n____r____n__ con /* 作成したコンテキストを返す */__r____n__)__r____n__","func"