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 >
Text File  |  2001-10-12  |  4KB  |  137 lines

  1. 今回の更新点:
  2.  
  3. 【FOR~NEXTループ命令を追加】
  4.  
  5. 書式:
  6. FOR %変数番号=数字 TO 数字 (STEP 増分)
  7. ;(ループの内容)
  8. NEXT
  9.  
  10. 基本的にBASICと同じです。指定した変数がTOで指定した数を超えるまで
  11. (STEPが負の時は、それより小さくなるまで)は、ループを繰り返します。
  12. 一回ごとにSTEPで指定した数を変数に加えます。
  13. STEPは省略すると1になります。
  14.  
  15. (注意)
  16. FORループをgoto文やselect文で抜けると、内部的にはループ中なので、
  17. NScrのスタックを無駄に消費します。
  18. その部分が無限ループでもない限りそのせいで落ちるということは
  19. まずないですが、そういうコードはいわゆる「スパゲッティコード」
  20. と呼ばれるもので、読みにくく、分かりにくくなっているはずです。
  21. FOR文とNEXT文は見やすくインデントしてソースの上でも一対一対応
  22. させるのがお勧めです。
  23.  
  24. また、途中で安全にループを抜けたい場合はBREAK文を使ってください。
  25. (ループ内からgosubで飛んでループ内に戻ってくるのはOKです。
  26.  むしろループの始まりと終わり、外と中がはっきりするのでお勧め)
  27.  
  28. 書式:
  29. BREAK
  30. 一番内側のループをひとつ、途中で抜け出します。
  31. すぐ下のNEXT文を探し、その下へ抜けます。
  32.  
  33. 二重ループを一気に外まで抜けることはできません。
  34. 一重めのループをBREAKで抜けた後、さらに次のBREAKを書いてください。
  35.  
  36. サンプル:
  37. ;------------------------
  38. *define
  39. game
  40. *start
  41. for %0=1 to 8
  42.     for %1=6 to 2 step -2
  43.         %0,%1
  44.         if %0=4 & %1=4 break
  45.     next
  46. next
  47. click
  48. end
  49. ;------------------------
  50.  
  51.  
  52. 【お勧めしない使い方】
  53. BREAK *ラベル名
  54. BREAK文に*ラベル名があればそのラベルに飛びます。
  55. ただし、ラベル指定でふたつのループを抜けても内部的には
  56. 一番内側のひとつしかループ状態を解除しません。
  57. 先述のとおり、そういう使い方はスタックを無駄遣いするのと
  58. ソースを見難くするのでお勧めはしません。
  59.  
  60. 【CTRLキーでメッセージスキップできるようにした】
  61. これからは、これをオフィシャルなスキップキーにします。
  62.  
  63. 【セーブデータを少し頑強にした】
  64. セーブデータを行番号で管理する方式にしました。
  65. たとえスクリプトを入れ替えても、行をずらしさえしなければ、
  66. セーブデータは前のまま使えることになりました。
  67.  
  68. 【セーブファイルの日時の取得関数】
  69. 命令savetime
  70. 書式:
  71. savetime セーブ番号,%月,%日,%時,%分
  72. セーブファイルが存在しない場合は、月の値に0を返す。
  73.  
  74. 例)
  75. savetime 3,%0,%1,%2,%3
  76. if %0=0 goto *non
  77. セーブ3番は%0月%1日%2時%3分@
  78. end
  79. *non
  80. セーブ3番は存在しない。@
  81. end
  82.  
  83. 【配列変数を使えるようにした】
  84. ?配列番号[添字1][添字2]...
  85. (全部で200個までの配列、20次元まで使用可能です)
  86.  
  87. <使い方>
  88. *define節で配列変数を宣言してください。
  89. 命令dim
  90. 書式:
  91. dim ?0[10][20]
  92. 配列変数はBASIC式です。つまり、この宣言だと、?0は、
  93. 一次元目が0~10の、二次元目が0~20の添字を使えます。
  94.  
  95. mov ?0[2][5],20
  96. ;?0[2][5]に20を代入。
  97. mov %4,?0[3][1]
  98. ;%4に?0[3][1]を代入。
  99. ?0[2][3]=?0[2][3]@
  100. ;値を表示
  101. このとおり、今まで「数字」となっていたところならどこでも
  102. 配列変数を使えます。
  103.  
  104. numaliasを使えば、もっと見やすく出来ます。
  105. 例)
  106. numalias enemyparam,10
  107. dim ?enemyparam[10]
  108.  
  109. 【命令movlを追加】
  110. 配列の行に対して一度に値を代入します。
  111. movl 配列行指定,数字,数字,……
  112.  
  113. 例)
  114. dim ?10[4]
  115. dim ?20[2][3]
  116.  
  117. movl ?10,0,1,2,3,4
  118. movl ?20[0],0,1,2,3
  119. movl ?20[1],0,2,4,6
  120. movl ?20[2],0,3,6,9
  121.  
  122. <注意>
  123. 配列の添字は0からはじまるので、一列の長さは宣言のときの
  124. 数字よりもひとつ多いことに気をつけてください。
  125.  
  126. 【MPEG再生機能の追加】
  127. 命令mpegplay
  128. 書式:
  129. mpegplay ファイル名文字列,クリックフラグ
  130. 例)
  131. mpegplay "test.mpeg",1
  132. 解説:
  133. ファイル名に指定したファイルをDirectShowの機能で再生します。
  134. クリックフラグが0だとクリックしても再生をやめませんが、
  135. クリックフラグが1の場合は、画面クリックで再生を中止します。
  136. この命令を使うには、DirectX8.0a以上が必要です。
  137. (古いDirectXでも使えるかもしれませんが、サポート対象にはしません)