2008年12月31日水曜日

VIsual C++2005 入門編

HSP製インタプリタの処理が遅かったら
Visual C++ Express Edition製にしよっかなー
ということで
大きめの書店で入門書を買って読んでます

でも開発言語の解説より
言語仕様の解説が多くてものたりないです
どうやってマスターしようか?→開発環境の使い方
なんかC++の知識が前提みたいで
何年も前に買った独習C++も読み直す必要がありそうです
でも内容が硬くてなかなか読み進められないですね

これ読んでたらHSP製インタプリタの作成意欲が減ってきた気もしますが
気にしない(苦笑)

2008年12月29日月曜日

参加賞

HSPコンテスト2008の参加賞が今日届きました
品物はレンズクリーナー携帯ストラップです
携帯の画面汚れ気味のTACKとしては嬉しいです

そういや今使ってる携帯3年くらいたつよ
一箇所チラリと基盤が見えてますよ
親父の使ってた携帯に機種替えようと思いつつ
めんどくさいし
着うたフルはいんないし
変えるとしたら新しい携帯かな。なんて思っています
携帯替えるのは簡単なんだろうけど
メモとか
ムービーに入ってる鼻歌だとか
そういうのを入力するのがめんどくいんだよね

#ちなみに僕はAUユーザーです

"FILE_array_plus.hsp"モジュールと"FILE_str_plus.hsp"モジュールの合体

サイト更新しました

更新したページはコチラ

"FILE_array_plus.hsp"モジュールと"FILE_str_plus.hsp"モジュールの合体


モジュールとモジュールの結合ということで
スクリプトが加算されるかな?と思いきや
いらない命令も多くすっきりしました

コチラのページも初期値を代入できるように少し変更

文字列の自動確保機能を使用して複数の文字列を格納するモジュール



次に作りたいモジュールはシナリオからの文字列の取り出しです
本見ながら紙にオートマンまで書いて
格納する配列のサイズはどうする?とか思ってたら
こんなモジュールを作成してしまいました

2008年12月27日土曜日

文字列の自動確保機能を使用して複数の文字列を格納するモジュール

サイト更新しました
次の課題は使用しているモジュールへのアクセスが遅いかもしれないので
モジュール二つを合体させることです
分割したモジュールを合体させるなんて
オブジェクト指向的にどうか。とも思いますが
簡単そうなのでやってみます

更新箇所はコチラ

文字列の自動確保機能を使用して複数の文字列を格納するモジュール

2008年12月24日水曜日

文字列の自動確保機能を使用して数値配列を自動確保するモジュール

何日か前に作成してあとはどこかで公開すべき
そんな状態でしたがようやく更新完了
上手く表示されないのでモジュールはtxt形式になりましたが...

wikiに投稿しようか?と少し思いましたが
たまには投稿したくもありますが
あまりよそさまに頼るのもあれなんで
HSP製インタプリタの作成で作成したものは
自分のサイトで公開していこうかな?と思い始めているので

LINKはこちらから

文字列の自動確保機能を使用して数値配列を自動確保するモジュール

2008年12月23日火曜日

本日のerror:2008/12/23

サイトを更新しようとして、スクリプト書いてたんですよ
もう一個似たような命令を欲しいな
で、コピペ。その後error
あれ。全然上手く動かねー!(怒)

正解は文字列にpokeしてたのが2文字目からで
ってことは1文字目の値は0ってわけで
1文字目が0だと2文字めにどんな値を入力しても
空文字列と判定されるということです

それから、MODULE作TACKのページ更新しました

0を加えて指定の桁に揃えた文字列を返すモジュール

2008年12月18日木曜日

HSP開発wikiへの投稿200812/18

久しぶりにHSP開発wikiへ投稿しました
Module→行頭と行末のタブとスペースを取り除くモジュール
です
HSP製インタプリタ作成の一環として
このモジュールを作成しました
論理を踏むように
一つ一つの動作を積み上げて作成したら
案外簡単でした

HSP開発wikiではしょっちゅう中傷されて
あんまり得意ではないですが
今度は大丈夫だといいな

少し作りたりない部分もありますが
続きは明日ってことで...

2008年12月17日水曜日

区切り文字で区切るモジュール

・FILE名:mdl_calc_one_dat.hsp

#module one_data NO,型,tmp_型,中身の数,中身,warn,n_warn

#modinit int number
NO=number
型=null
sdim tmp_中身,2000
sdim tmp_型,256
tmp_型=""
中身の数=0
sdim 中身,2000,32
repeat 32
中身.cnt=""
loop
n_warn=0
sdim warn,1000

sdim of_sep_A,1000
sdim of_sep_B,1000
return
#modfunc add_warn str w
if n_warn=0{ warn=w : n_warn++ }
else{ warn+="\n"+w : n_warn++ }
return
#defcfunc sep2 var to_sep,var from_sep_01,var from_sep_02
l2sep=strlen(to_sep)
ans_of_sep=instr(to_sep,0,"||")
if ans_of_sep==-1{
from_sep_01=to_sep
return 1
}else{
from_sep_01=strmid(to_sep,0,ans_of_sep)
l=l2sep-ans_of_sep-2
from_sep_02=strmid(to_sep,-1,l)
return 2
}
return -1
#modfunc search_sep_error
if tmp_型==""{add_warn thismod,"区切り文字の前に何もありません" }
ii=中身の数-1
if 中身の数>0{
if 中身.ii==""{add_warn thismod,"区切り文字の後に何もありません" }
}
n=中身の数
if n>=2{
repeat (n-1)
if 中身.cnt=""{add_warn thismod,"区切り文字の間に何もありません" }
loop
}
return
#modfunc set_one_data var data
ans=sep2(data,of_sep_A,of_sep_B)
tmp_型=of_sep_A : 中身の数=0
n_cnt=0
while ans==2
tmp_中身=of_sep_B
ans=sep2(tmp_中身,of_sep_A,of_sep_B)
中身.n_cnt=of_sep_A
中身の数++
n_cnt++
wend
search_sep_error thismod
return

#modfunc dump
logmes "NO = "+str(NO)
logmes "型 = "+tmp_型
logmes "中身の数 = "+中身の数
repeat 中身の数
logmes "中身"+cnt+" = "+中身.cnt
loop
if warn!=""{
logmes "警告:"+warn }
return
#global


テストコード その1

#include "mdl_calc_one_dat.hsp"
sdim sn,4000
sdim tmp_sn,256
sdim one_sc,256

sdim to_test,2000,32
to_test.0="this"
to_test.1="this||a"
to_test.2="this||a||b"
to_test.3="this||a||b||c"
to_test.4="this||a||b||c||d"

newmod one_dat_01,one_data,1
set_one_data one_dat_01,to_test.0
dump one_dat_01

newmod one_dat_02,one_data,2
set_one_data one_dat_02,to_test.1
dump one_dat_02

newmod one_dat_03,one_data,3
set_one_data one_dat_03,to_test.2
dump one_dat_03

newmod one_dat_04,one_data,4
set_one_data one_dat_04,to_test.3
dump one_dat_04

newmod one_dat_05,one_data,5
set_one_data one_dat_05,to_test.4
dump one_dat_05


・テストコード その2

#include "mdl_calc_one_dat.hsp"
sdim sn,4000
sdim tmp_sn,256
sdim one_sc,256

sdim to_test,2000,32
to_test.0="this"
to_test.1="this||"
to_test.2="||a||"
to_test.3="a||b||||||||c"
to_test.4="this||a||b||c||d||e||f||||g"

newmod one_dat_01,one_data,1
set_one_data one_dat_01,to_test.0
dump one_dat_01

newmod one_dat_02,one_data,2
set_one_data one_dat_02,to_test.1
dump one_dat_02

newmod one_dat_03,one_data,3
set_one_data one_dat_03,to_test.2
dump one_dat_03

newmod one_dat_04,one_data,4
set_one_data one_dat_04,to_test.3
dump one_dat_04

newmod one_dat_05,one_data,5
set_one_data one_dat_05,to_test.4
dump one_dat_05

HSP製インタプリタ2008/12/17

便利なインタプリタ作成は後回しにして
中間言語だけのインタプリタを作成中です
作成中というか
アイデアだけ色々と考えてます
コツコツとスクリプト書きするほうが
完成への一番の近道なのでしょうが
スクリプト書きが激遅のTACKは
全然スクリプト書きがはかどっていません
順調に進むといいなぁ→スクリプト書き

というわけで最近作成したモジュールです
作成しているのは中間言語なので
tokenで区切るのではなく
区切り文字で区切る予定です
というわけで、”||”の2文字で
区切るモジュールを書いてみました
区切り文字で区切るといっても
"と"で区切った中の区切り文字は無視するのが
次のSTEPです

2008年12月7日日曜日

HSPwikiへの投稿2008/12/7 その後

wikiへの投稿、ガッツリ削除されました
なんか、怒りが収まらない

消されてすぐ書き込みしなおすのも癪なので
同じ内容を自分のサイトに書きました
もうこのネタ、wikiに書かなくていいよ...

でも消したヤツ一体どういうつもりなんだろう?
このサイトは俺が管理する!
俺の気に入らない記事は削除だ!とか
勘違いしているんだろうか?
こういう奴がいるから
HSPwikiの管理人のiwataさんにキレられるんだ

行頭のタブとスペースを取り除く

プログラミング言語って行頭と行末のタブとスペースを取り除いてくれますよね
シナリオにそんな機能もつけたいと思い
まずは行頭のタブとスペースを取り除くスクリプトを書いてみました
2byte文字の関係で行末のタブとスペースの取り除き方はわからないけどな!
sdim sn,4000
sdim tmp_sn,256

notesel sn
noteload "scenario_test02.txt"

repeat notemax

noteget tmp_sn,cnt
l_tmp_sn=strlen(tmp_sn)
css=" "
cs=peek(css,0)
c=peek(tmp_sn,0)
if c=='\t'|c==cs{flag=1}
else {flag=0}

while(flag)
l_tmp_sn--
tmp_s=strmid(tmp_sn,-1,(l_tmp_sn))
tmp_sn=tmp_s

c=peek(tmp_sn,0)
if c!='\t'&c!=cs{_break}
wend

noteadd tmp_sn,cnt,1
loop

stop

HSPwikiへの投稿2008/12/7

久しぶりにHSPwikiに投稿しました
内容は新規命令系の防忘録です
場所は名前ページです
今なら投稿したばかりなので
HSPwikiの最近の更新で
タイトルがy.tackのページを見れば
あると思います

僕は新しいモジュールを作成する時
区切り文字やら引数やらオブジェクト名やらがごっちゃになって
よくわからなくなります
そんな時
自分で書いた”モジュールについて”というページを見ます
ならもう少し防忘録という趣旨で書いてみよっかなー
って思ったのです

wikiは(僕の書き方も悪いけれど)中傷コメントが多くて
書くのを控えていたんですけど
それでも最近、また書いてみよっかなー。ってなりました
今度は中傷コメントに負けないようにー♪

HSP製インタプリタ2008/12/7

最近、RPGツクールを少々したんですよ
で、思った
変数/スイッチの選択呼び出し画面。
と、コモンイベント呼び出し画面便利やなー
で、そんな機能を持ったツール作ろうかな。

で、作ろうと思ったら
なぜかHSP製インタプリタを作りたくなった
インタプリタと言っても
字句解析だけの
中間コードだけの
簡単なやつね

目標はシナリオ機能を手軽に作成できるようにすること
シナリオ機能は簡単なの作ったことあるから
それのバージョンアップ兼汎用性を高めようという趣旨です
なので、あんまり期待しないで下さいね

2008年12月2日火曜日

検索ツール

ちょっと思った
(ちょっとじゃなく、少し前からです)
APIやらUSER32.dllやらの命令やらを
TACK Local Linksの形式で
マウスクリックでMSNで検索できるようにしたら
便利ではないだろうか?

APIやらはMSNで検索かければ
使い方がわかるものですが
コピペして検索かける行為がめんどくさかったりします
なので、そのような行為が手軽になれば
と、思うのです

公式BBSに関する話題(IE)

HSPでIEを操作したい場合
COMを使うんだろうけれど
COMを作成しないでIEを操作する方法が
公式BBSに書いてありました
COMを使ってもいいけれど
IEを×ボタンを押して消すと
COMを削除する時にエラーが出るんですよ
なのでCOMを使用しないで
IEを操作できる。と読んで
おぉ!そんなことができるのか!ってなりました

今、作成中のツールにも
この技術を採用させてもらおう

Magic Point その2

コンテストの結果、発表されたみたいですね
僕の投稿作はと言うと...

一時審査落選♪
適当に作ったやつだから当然やけどね
でも、Rankingはたまに覗くんだけど
Playしてくれる人が何人かいるみたいで
最初はRankingのあるHSPTV部門で良かったのかも
なんて考えてしまいます
ちょこっとPlayしてくれる人だけでなく
やり込んでくれる人もいるみたいで
それもまた嬉しいです

ここ一ヶ月くらい自分のサイトを全然更新してなかったんやけど
原因はGAMEです
またGAMEばっかやってしまった
でも一ヶ月くらいディスガイアにはまって
少しプログラミングしたい気持ちも復活してきました