雷鈴
−コンボ技−


何度もclsを使って
画面を描き直したいが、
画面がチラつくのは嫌だ
redraw 2」で画面描画を一度止め、
その間に画面を描く命令を出し、
全て描き直してから「redraw 1」で
一気に描く。
その際、画面を一度消去する時には
clsではなくboxfで塗りつぶす。
redraw2       ;画面描画を一度止める
color 0,0,0     ;塗りつぶしたい色を指定。この例では黒
boxf 0,0,winx,winy ;画面全体を塗りつぶす
            ;ここで画面を描く
redraw 1       ;今まで止めていた画面描画を一気に描く
スクリーンセーバーの
設定ファイルを
自動で作らせる
SCRファイル自身をコピーして
中身を書き換える
exist "test.ini"    ;test.iniが同一フォルダ内にあるかどうか調べて、
if strsize=-1 : bcopy "test.scr","test.ini"  ;なければiniファイルを作る
                     ;あとはbsaveなどで中身を書き換える
スタートメニューの
『プログラム』に登録する
『プログラム』フォルダの位置を
知るための命令「fxdir」、
現在、ファイルを操作する命令が
対象として設定しているフォルダ
(初期状態ではexeがあるフォルダ)
の位置が自動的に代入されている
変数「curdir」、
そのフォルダを変える命令「chdir」、
そしてショートカットを作る命令
fxlink」を組み合わせる。
#include "hspext.as"    ;fxdirとfxlinkを使うためにhspext.dllが必要
str name : str forder : str location
name="   "   ;ショートカットにつける名前を入力(空白じゃダメだよ)
fxdir forder,2         ;『プログラム』フォルダの位置を取得
location=curdir  ;curdirに入っているカレントフォルダのフルパスを記憶
location+="\\  .exe"   ;exeファイルの名前を文字列に追加
chdir forder          ;操作対象を『プログラム』フォルダに移動
fxlink name,location     ;ショートカットをそこにつくる
デスクトップに
ショートカットを作る
上の『プログラム』メニュー登録と
ほぼ同じ手順で、
fxdir命令のところだけ少し変える
#include "hspext.as"    ;fxdirとfxlinkを使うためにhspext.dllが必要
str name : str forder : str location
name="   "   ;ショートカットにつける名前を入力(空白じゃダメだよ)
fxdir forder,16         ;『デスクトップ』フォルダの位置を取得
location=curdir  ;curdirに入っているカレントフォルダのフルパスを記憶
location+="\\  .exe"   ;exeファイルの名前を文字列に追加
chdir forder          ;操作対象を『デスクトップ』フォルダに移動
fxlink name,location     ;ショートカットをそこにつくる
スタートアップに登録する 上の『プログラム』メニュー登録と
ほぼ同じ手順で、
fxdir命令のところだけ少し変える
#include "hspext.as"    ;fxdirとfxlinkを使うためにhspext.dllが必要
str name : str forder : str location
name="   "   ;ショートカットにつける名前を入力(空白じゃダメだよ)
fxdir forder,7         ;『スタートアップ』フォルダの位置を取得
location=curdir  ;curdirに入っているカレントフォルダのフルパスを記憶
location+="\\  .exe"   ;exeファイルの名前を文字列に追加
chdir forder          ;操作対象を『スタートアップ』フォルダに移動
fxlink name,location     ;ショートカットをそこにつくる
大きい画面を
ディスプレイに合わせて
縮小する

(screen命令で作った画
 面だとディスプレイより
 大きくはならないので、
 ここではbgscr命令で
 画面を作り そこをメイン
 に作業をしていると
 仮定して説明します)
ウィンドウのサイズが記憶されている
変数「winx」「winy」で
画面の大きさを調べ、
ディスプレイの大きさが記憶されて
いる変数「dispx」「dispy」を使って
今の画面をどれだけ縮小しなければ
ならないのかを計算し、
gzoom」で縮小した画面に描き直す
bgscr 3   ;メイン画面がコレだと仮定して記述します。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

x=winx : y=winy             ;今の画面の縦横のサイズを調べる
if x>dispx : x1=dispx*10000/x : else : x1=10000
                      ;ディスプレイに合わせるためには
                      ;横幅を何%に縮小するのか計算
                      ;精度を上げるため、xx.xx%まで計算
if y>dispy : y1=dispy*10000/y : else : y1=10000
                      ;同じく縦を何%に縮小するのか計算
if y1>x1 : y1=x1 : else : x1=y1    ;%が小さいほうにあわせる
x=x*x1/10000 : y=y*y1/10000
gzoom x,y,3,0,0,winx,winy      ;縮小してコピーする
width x,y                 ;画面のサイズを調整する
ファイル名から
拡張子を抜き出す
文字列内を検索する命令 「instr」、
文字列の長さを測る命令 「strlen」、
文字列から一部を取り出す命令
strmid」 を使う
dialog "*",16
name=refstr    ;nameにファイル名が入っている場合を想定
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

instr m,name,"." ;ファイル名の何文字目に 『 . 』 があるかを検索
strlen n,name   ;ファイル名が全部で何文字かを調べる
m++         ;拡張子は 『 . 』 の一つ後だから1を足す
n=n-m        ;拡張子部分が何文字なのかを計算
strmid x,name,m,n ;ファイル名から拡張子部分を取り出す
mes x
半角文字か全角文字か
を判断する
文字列をファイルに書き出し、
数値型変数に1バイトずつ読み出して
ASCI I コードをチェックする
a="〜〜〜〜〜"         ;aに文字列が入れられていることとする
int b : int c : int d
strlen b,a             ;aの長さを調べてbに入れる
bsave "―",a,b          ;aをファイルに出力する
repeat b
bload "―",d,1,c         ;dに1バイト読み出す
flag=0               ;目印用の変数
if (d>31)&(d<128) : flag=1   ;アスキーコードが32〜127なら半角文字
if (d>159)&(d<224) : flag=1  ;アスキーコードが160〜223なら半角文字
if d=9 : flag=1          ;アスキーコードが9ならTabで、半角扱い
               ;ここでflagが1なら半角文字、0なら全角文字だと
               ;わかるので、自分のやりたい処理をする
if flag=1 : c++ : else : c=c+2 ;調べる位置を半角なら1、全角なら2進める
if b=c : break         ;調べる位置がファイルの最後まで来たら終了
loop



もどる


雪鈴工芸,雷,かみなり,カミナリ,thunder,サンダー,電撃,HSP,HotSoupProcessor,ホットスーププロセッサ