home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2002 November
/
VPR0211A.ISO
/
OLS
/
NSCR_NEW
/
nscr_new.lzh
/
更新1011.txt
< prev
next >
Wrap
Text File
|
2001-10-12
|
4KB
|
137 lines
今回の更新点:
【FOR~NEXTループ命令を追加】
書式:
FOR %変数番号=数字 TO 数字 (STEP 増分)
;(ループの内容)
NEXT
基本的にBASICと同じです。指定した変数がTOで指定した数を超えるまで
(STEPが負の時は、それより小さくなるまで)は、ループを繰り返します。
一回ごとにSTEPで指定した数を変数に加えます。
STEPは省略すると1になります。
(注意)
FORループをgoto文やselect文で抜けると、内部的にはループ中なので、
NScrのスタックを無駄に消費します。
その部分が無限ループでもない限りそのせいで落ちるということは
まずないですが、そういうコードはいわゆる「スパゲッティコード」
と呼ばれるもので、読みにくく、分かりにくくなっているはずです。
FOR文とNEXT文は見やすくインデントしてソースの上でも一対一対応
させるのがお勧めです。
また、途中で安全にループを抜けたい場合はBREAK文を使ってください。
(ループ内からgosubで飛んでループ内に戻ってくるのはOKです。
むしろループの始まりと終わり、外と中がはっきりするのでお勧め)
書式:
BREAK
一番内側のループをひとつ、途中で抜け出します。
すぐ下のNEXT文を探し、その下へ抜けます。
二重ループを一気に外まで抜けることはできません。
一重めのループをBREAKで抜けた後、さらに次のBREAKを書いてください。
サンプル:
;------------------------
*define
game
*start
for %0=1 to 8
for %1=6 to 2 step -2
%0,%1
if %0=4 & %1=4 break
next
next
click
end
;------------------------
【お勧めしない使い方】
BREAK *ラベル名
BREAK文に*ラベル名があればそのラベルに飛びます。
ただし、ラベル指定でふたつのループを抜けても内部的には
一番内側のひとつしかループ状態を解除しません。
先述のとおり、そういう使い方はスタックを無駄遣いするのと
ソースを見難くするのでお勧めはしません。
【CTRLキーでメッセージスキップできるようにした】
これからは、これをオフィシャルなスキップキーにします。
【セーブデータを少し頑強にした】
セーブデータを行番号で管理する方式にしました。
たとえスクリプトを入れ替えても、行をずらしさえしなければ、
セーブデータは前のまま使えることになりました。
【セーブファイルの日時の取得関数】
命令savetime
書式:
savetime セーブ番号,%月,%日,%時,%分
セーブファイルが存在しない場合は、月の値に0を返す。
例)
savetime 3,%0,%1,%2,%3
if %0=0 goto *non
セーブ3番は%0月%1日%2時%3分@
end
*non
セーブ3番は存在しない。@
end
【配列変数を使えるようにした】
?配列番号[添字1][添字2]...
(全部で200個までの配列、20次元まで使用可能です)
<使い方>
*define節で配列変数を宣言してください。
命令dim
書式:
dim ?0[10][20]
配列変数はBASIC式です。つまり、この宣言だと、?0は、
一次元目が0~10の、二次元目が0~20の添字を使えます。
mov ?0[2][5],20
;?0[2][5]に20を代入。
mov %4,?0[3][1]
;%4に?0[3][1]を代入。
?0[2][3]=?0[2][3]@
;値を表示
このとおり、今まで「数字」となっていたところならどこでも
配列変数を使えます。
numaliasを使えば、もっと見やすく出来ます。
例)
numalias enemyparam,10
dim ?enemyparam[10]
【命令movlを追加】
配列の行に対して一度に値を代入します。
movl 配列行指定,数字,数字,……
例)
dim ?10[4]
dim ?20[2][3]
movl ?10,0,1,2,3,4
movl ?20[0],0,1,2,3
movl ?20[1],0,2,4,6
movl ?20[2],0,3,6,9
<注意>
配列の添字は0からはじまるので、一列の長さは宣言のときの
数字よりもひとつ多いことに気をつけてください。
【MPEG再生機能の追加】
命令mpegplay
書式:
mpegplay ファイル名文字列,クリックフラグ
例)
mpegplay "test.mpeg",1
解説:
ファイル名に指定したファイルをDirectShowの機能で再生します。
クリックフラグが0だとクリックしても再生をやめませんが、
クリックフラグが1の場合は、画面クリックで再生を中止します。
この命令を使うには、DirectX8.0a以上が必要です。
(古いDirectXでも使えるかもしれませんが、サポート対象にはしません)