2009年12月26日土曜日

2byte情報を配列に書き込むモジュール

何ヶ月か前に書いた命令です
いがいと便利です

2byte情報を配列に書き込むモジュール

http://space.geocities.jp/digital_clock_2006/HSP/module/count_2byte.htm

2009年12月23日水曜日

2009年12月18日金曜日

マインドマップ

最近、先日買ったマインドマップの本を読んでいます
それで興を覚えて軽くマインドマップを書いてみました

書いたのは
改造したいこと→~
なぜ改造がはかどらないのか?→~
改造案→~
とかです

で問題点、問題提起、解決策をまとめてみたら
スクリプト書きが少しはかどりました

スクリプトを書くのってやっぱ
設計もしくは整理が必要なのかもしれませんね
プロのプログラマーは1日中
プログラムをしているイメージがあるけれど
やっぱり設計や会議とか色々してるのかもしれません

テキストに行番号をつけるサンプルスクリプト

前書いたスクリプトがわかりにくかったので
プリントアウトしたかったんですけど
ついでに行番号も欲しいよな。と思い
テキストに行番号をつけるスクリプトを書いてみました


sdim sss,4096
notesel sss
noteload "FILE_char2q_q2char_can_2byte_0_6.hsp"
repeat notemax
s=""
noteget s,cnt
ss=str(cnt+1)+":"+s
noteadd ss,cnt,1
loop
notesave "tmp.txt"
stop

繰り返し条件の前に毎回色々やりたい時のためのマクロ

サイト更新しました
今日は(昨日?)めずらしくガリガリスクリプトかいてます
その途中でちょろっとやってみたマクロです

繰り返し条件の前に毎回色々やりたい時のためのマクロ

http://space.geocities.jp/digital_clock_2006/HSP/module/b_while.htm

2009年12月16日水曜日

先日のブックハントver2009/12/16

先日また本買っちゃいました

「ソフトウェア開発に役立つマインドマップ」
日経ソフトウェアの記事でマインドマップがでてたので
もっと詳しく知りたいので

「ゲームについて思うことX」
ゲーム開発に関する本なので

「ソフトウェアライセンスの基礎知識」
ソフトウェアのライセンスはよくわからないので
詳しく知りたいので

買って読破してない本いっぱいありますが
10冊同時に読め。とかどっかに書いてた気もするし
いっぱいあってとっかえひっかえ読む方が
読書はかどるんですよねー

2009年12月12日土曜日

先日のブックハント ver 2009/12/12

これからなんか本買ったらブログ書こうかな?

先週あたり久しぶりに本買いました
今週も買ったけど

「いつも目標達成している人の勉強術」
「エンジニアのための
 文章術再入門講座」
「開発現場の掟」

最近プログラマーのハウツー本増えた気がします

本日のブックハント ver 2009/12/12

バイト帰り書店寄ったら本を3冊も買っちゃった

・買った本
独習SQL
デバッグが256倍速くなるテクニック
エンジニアプロ論

来年のコンテストに向けて作ろうかなー?
と考えているツールで
データベース使おうかな?
とか思って
SQLの本買いにいったら
3冊買っちゃった
最近あんま本読んでなくて積み気味ですがナニか?

2009年12月5日土曜日

モチベーション

福田稔著「いつも目標達成している人の勉強術」
読んでますよー
読んでるっつーか
読んだのを読み返して
気付いた点を整理しながら文章書いてるんですけど

>・ストレート合格にこだわる
>ストレート合格のこだわるべき三つの理由
>③モチベーションを維持できるだろうか

>二年、あるいはそれ以上に及ぶ
>受験勉強を継続するには
>相応のモチベーションが必要です

これをプログラミングにあてはめると
二年、あるいはそれ以上に及ぶ
ソフト作成を継続するには
相応のモチベーションが必要です

になりますね
SKILL POINTは作成しだして二年こえてる気がします
僕の場合
サイトを更新したりブログを書くモチベーションはあるんですけど
ソフトを開発するモチベーションはあまりないのかもしれません
サイトの更新とかブログを書くのって
パパッとやってパパッとUPってかんじじゃないですか?
でもソフト開発はコツコツコツコツやる必要がありますもんね
僕は性格も飽きっぽいですし

二年とまではいかなくても
ある程度の期間うちこむのって
相応のモチベーションが必要なのかもしれませんね

英単語の暗記もやってたの半年くらいかな?
しかも全然覚えれてないし
これもモチベーションが続かなかったってことなんかな?

合格力はプログラミング成功力につながる?

福田稔著「いつも目標達成している人の勉強術」
読んでますよー
この本によると
「合格力=勉強時間×やり方×やる気」
と書いています
勉強をプログラミングにおきかえると
プログラミング成功力=作成時間×やり方×やる気
になりますよね

初心者のプログラミング成功力が高いのは
やる気がすごいからでしょう
TACKも最初ものすごいやる気があった気がする
でもベテランもプログラミング成功力は高いです
それはやり方に長けているからでしょう
挫折する初心者はやり方が悪い
作品が出ないベテランはやる気がない
のかもしれません

TACKがイマイチ作品が完成しないのはなぜなんだろう?
たまにしかプログラミングしない
プログラミングをしないっつーか
プログラミングが習慣になってない
やり方も悪いかもしれない
やる気がないのかもしれない
文章を書くのはある程度
習慣になっているかもしれません
僕よりいっぱい文章書く人いますけどねー
でもプログラミングするより文章書く方が好きやわー
昔ほど好きじゃないですけどね
イマイチ自分の文章が面白くないんです
昔は自分で文章書いて自分で読んで爆笑して
更に文章書きたくなってたなー

福田稔著「いつも目標達成している人の勉強術」

今日買って読み始めてます
勉強しないわりには勉強の方法論の本を読むのは好きです
色々読みましたが
この本に書いてあることは、一番僕にしっくりくる気がします
本って相性ありますからね
この本を読んで気付いたことがあれば
ここのブログにUPしていきたいと思ってます

題材は勉強ですが
勉強をプログラミングに置き換えても
ものすごいしっくりきます

本日のerror ver 2009/12/5

作ったモジュールをデバッグしてたら
わかりにくいerrorでました

それは…

error処理の返り値が数値
返り値が文字列なのに
error処理の返り値が数値だったんです
返り値を関数の引数に丸投げしてたら
その引数は文字列って指定してたんですよ
なのに-1を返してたもんだからerror

#defcfuncは色々返せますが
引数に渡すことを考えると
統一すべきなんでしょうね

数値文字列を文字コードにするモジュール

サイト更新しました
勘戻すのに簡単なのその2

数値文字列を文字コードにするモジュール

http://space.geocities.jp/digital_clock_2006/HSP/module/char2int.htm

2009年11月9日月曜日

特殊文字を展開するモジュール

サイト更新しました

特殊文字を展開するモジュール

http://space.geocities.jp/digital_clock_2006/HSP/module/char2q_q2char.htm



更新は今日でもスクリプトを書いた日は
10月なかごろだった気がします

プログラミングのセオリー

最近、読んでます
自称プログラミング芸人の矢沢久雄氏著です
氏の文章はわかりやすくて好きなんですよねー
日経ソフトウェアでもよく目にします

まだ読破はしていないのですが
面白かった項目が
一本ソースを戒めていることです

TACKも初心者の頃は一本ソース書いてました
理由は関数への分割の仕方がわかってなかったからです
一応分割はしたかったのですが
呼び出しの下に関数を書いてerror出てた気がします
そりゃerror出るわな
呼び出しの下に関数を書く時は
関数のアレを定義しなきゃいけないんやね

いや初めて使った開発環境は
なけなしのお金をはたいて買ったvisualC++やったからね
開発環境は使いこなせないってのがそれでわかって
今HSPユーザーでーす♪

最近サイトもブログも更新をサボってましたが
原因は読書量が減ってるからなのも一因です
書くのは好きなんで
それを支える読書はなるべくしていきたいですね

2009年11月2日月曜日

repeatみたいな関数

サイト更新しました
マクロが通らないコンパイラ用の関数です
更新したPageはコチラ

repeatみたいなマクロ

http://space.geocities.jp/digital_clock_2006/C/like_repeat.htm

2009年10月16日金曜日

repeatみたいなマクロ

サイト更新しました
Cでrepeatみたいなことがしたい時のためのマクロです

更新したPageはコチラ

repeatみたいなマクロ

http://space.geocities.jp/digital_clock_2006/C/like_repeat.htm

2009年10月8日木曜日

Level Point

この前登録しました
でさっき公式pageをcheckしたら
遊べる状態になってるみたいです
LV99はまでですが50turnくらいでLV99になりました
HSPTV!の2009部門にあります

これを改造してLV9999まであるverを作成中です
LV999999とかLV99999999まであるやつ作りたいなー。と
思っている今日この頃です
しかもCUIでいいかな?とも思ってます

2009年9月23日水曜日

Level Point

サイト更新しました
LevelPoint一応完成です
作成日数:約6日
あとはマニュアルを寝かせて
誤字とか探しつつ
そのうちコンテストに応募します

更新したPageはコチラ

Level Point HELP Page

http://space.geocities.jp/digital_clock_2006/soft/Level_Point.htm

2009年9月21日月曜日

我輩はフリープログラマー。妻も子もあり猫もいる

BOOKOFFで購入して読んでます
TACKはアマグラマーやけど
そのうちフリープログラマーとか自称しだすんかな?
自分をどう称するのも自由
フリープログラマーなんて自分で言い出せばよいのだ
みたいなことが書いてありました

フリープログラマーに締め切りはない
完成したその日が納品日なのだ
みたいな勢いです
TACKもSkillPoint締め切り破りまくってます

そうそうLevelPointは完成見えてきました
後はRanking登録の処理と説明書書きです
作成した日数4日です
しかもものすごいスクリプト汚いです
4日全て書き足し書き足しで
設計無しで書くからこんなザマなのです
でも整理しなくても容量守れそう

10日でおぼえるSQL入門教室

確か先週の木曜日図書館で借りてきました
ubuntu(Linuxディストリビューション)は
いつ書籍買ったかわからないのに
まだInstallしてないのに
借りてすぐFireBirdのInstallしましたよ
Javaの収録してるのが1.4なんで
win98のセカンドマシンにね

この書籍は講座が10日分に分割されていて
きちんとやれば10日で完了なのですが
やったのは最初の講座だけです
借りて帰ってInstallして最初の講座して
って珍しく順調だったのですが
そこからパッタリと...
こんなもんです。僕の人生

DOSで色々コマンド打つのですが
TACKは常日頃コピペばかりなので
びっくりするくらいtype missの連続です
TABLEをTBLEって打ったり
masterkeyをmstrekeyって打ったり
{だと思ってたのが(だったり
一つの入力を10回くらいやってますね。平均
どかかが間違ってるんだろうけれど
どこが違うかわからなくて
イライラしながらtypeするから
余計type missするんですよね
返却する前に終わるんやろか?
終わらなかったら日を改めてまた借りようか?
こんなかんじで最新のJava使ってるのやったら
購入も検討します
どうも最近図書館で借りた書籍を購入したくて困ります

2009年9月9日水曜日

蟹瀬誠一氏著。「1日15分が一生を変える!」

最近、暇をみつけては読書してますねー
少し前にガスト行ってコーラを飲みながら読書したるー
とか思って
コーラだの水だの薄めたアイスコーヒーだの飲みながら
3、4回ガストで読書してました
僕の家からガストは歩いて行ける距離なので便利です
それからセイコーマートで1.5Lのコーラを買って
飲みながら読書したり
今はMAXVALUEの浄水器のお水を汲んできて
それを飲みながら読書してます
だんだんチープになっていくw

で、文庫の話
15分読書をしよう
コレいい概念ですね
なんか家で読書をすると15分くらいで読む気がなくなるんですよ
集中力と持続力と気力が落ちてるよー。とか凹んでたんですけど
15分くらいで集中力は落ちるものなんですね
その代わり今5、6冊いっぺんに読んでいます
コレ疲れたらアレとか
半分くらい前読んで一週間くらい経ってますけど

いくつかを並行して行うの術は
Programmingにも応用ききますね
SkillPointとLevelPointとMagicPoint(C ver)
いっぺんに開発してます
TACKのProgrammingのStyleはずっとボトムアップでした
問題を分割して順々にってかんじ
サブルーチン作るのも好きやし
でもそのProgrammingのStyleが原因で
SkillPointの製作が順調に行きません
一応。中規模スクリプトなんでね
どうしても全体をみながらいっぺんに
色んな処理を書く必要があるんですよ
それが上手くできなくて順調じゃないんです
分業作業なら上手くいけた?
いやいや結局は全体を見ながらって姿勢は必要だと思う
それがないと昇進できなそうやし
でも僕はプロではないが
その代わり一人で全部をこなさねばならないので
全体を見ながらするプログラミングは絶対必要だとは思います

1日。されど毎日15分だけ英語を勉強しよう。とも書いていました
そうそう。今日長いです
昨日、眠くて午後9時に寝たら
午後10時半に起きました
でも体力バッチシ
Programmingはあんましてないけど
ずっと読書してました
英語も15分くらい勉強しました
DUOを15分くらい。リスニング。音読。シャドーイング
復習なんだけどバッチシ頭に入りました
15分書き取りする。とかもこの本に書いてありました
なかなか楽しいですが適切な教材がないo...rz

2009年9月7日月曜日

switchみたいな処理

サイト更新しました
Cではswitchが数値のみぽいのですが
ぜひとも文字列の値で分岐したいので
そんな処理を書いてみました
動作はなんとなく同じですが
ものすごい読みにくい

更新したPageはコチラ

switchみたいな処理

http://space.geocities.jp/digital_clock_2006/C/like_switch.htm

HSPとは?

ずっと工事中とか書いてて
工事中のようで全然工事する気が感じられなかったこのPage
やっと更新しました

やっとっつーか
お得意の気紛れで更新しちゃいました
更新したPageはコチラ

HSPとは?

http://space.geocities.jp/digital_clock_2006/HSP/Whats_hsp.htm

本日のerror on C ver 2009/9/7

久しぶりっつーかまともにやったことない
CでProgrammingしてます
error出る出る
わかんないことあるある
リファレンス的に独習Cひいてますよー

でerror
;で終わってない
変数宣言してない
必要なヘッダFILEを#includeしてない
clock()が一秒単位なのをわかってない

わかりにくいのでは
getch()で得た文字を
printf内で%s使って文字列的に表示しようとした
getch()で得られるのは一文字なので
終端コードないので強制終了するんですよ

よく出る警告は
変数を使ってない。です

でも、たまにいつも使っている言語じゃない言語を使うのはいいですね
新鮮なかんじになります
なんかSkillPointの作成をまたやりたくなってきました

C日記 ver 2009/9/7

LinuxProgrammingをしようと思っていたら
C,Programmingがしたくなって
Borlamd C C++ Compilerをやってます

作成しているのは昨年Contestの応募した
ShortGameのMagicPointというGAMEです
CUIで遊びます

なんか僕が作成するGAMEは全部CUIで十分じゃんじゃないか?
と思えてきます
でもCUIProgrammingをしていると
HSPのButtonがすごい使いやすいなぁと思えてきます
たぶんTACKがHSPで一番好きな命令はButtonなのでは?
ってかんじです

ってなわけでCで作成した命令です
ミリ秒。動作を停止します

#include <time.h>
void wait(int t){
int begin,end;
begin=(clock()*1000)/CLOCKS_PER_SEC;
begin+=t;
while (1){
end=(clock()*1000)/CLOCKS_PER_SEC;
if (end>begin) break;
}return;
}

注:文字の都合で#includeのパラメータに全角<使ってます

そのうちコレもサイトにUPしよーっと
その前にUbuntuをInstallしたいなぁ

2009年9月3日木曜日

リカバリ中

先日の帰宅途中に書店にCDをレンタルにしに行って
「ふつうのLinux」を読んでることもあり
その書籍は簡単なLinuxの使い方がわかることが
書籍情報の前提として書いてあったので
PC書籍の棚をブラブラしていたら
入門書が欲しくなり買っちゃいました
「Linux超入門。Ubuntuでしっかりマスター」
という書籍です
Ubuntuも収録してるみたいです

で、家に帰ってパラパラ読むと
空き容量8G以上とか書いてある
スペックはXP程度で十分と書いてあるので
TACKのPCでもたぶんOK
でもCドライブ足りないよーってことで
それからリカバリ中です
今はデータをzipにして
DVDにバックアップして
PCをリカバリ。パーティション変更。再インストール
バックアップを入れるってとこまでです

バックアップとそれを戻すのがめんどくさかったです
いるんだかいらないんだか
でも、消したらもったいない
そんなのが5~8個くらいのzipになりました
サイズは全部で8Gくらいです
TACKのPCはDVDを追加書き込みできないので
DVD3枚になっちゃいました
リカバリとかバックアップとかしてると
外付けHDDがマジ欲しくなります
USBが2.0に対応してないからー
USBも買わなきゃダメなんだよなー
でも残すはLinuxのインストールのみなので
明日明後日くらいをめどに頑張ります

ついでにリカバリしたらIEが使えるようになりました
でもやっぱOperaのが好き
Operaのスピードダイヤルはずっと9件だったのですが
簡単な設定いじったら20件になりました
大部分。お気に入りではなくスピードダイヤルで済みそうなかんじです

2009年9月1日火曜日

本日のerror ver 2009/9/1

errorでもないですけど
スペルミスやっちゃいました
しかもものすごい簡単なスペルミス

*hoom
これはないやろ
homeって単語中学1年生レベルやろ

中学一年生レベルのスペルミスをした
y.tackでありましたとさ
いやなんかroomとごっちゃになってたんやろね
ハァ。凹む

ふつうのLinuxプログラミング

BOOK・OFFでめっけて買いました
著者はRHGの青木氏
いい本書くなー

最近、本ばっか読んでプログラミングの方サッパリです
コンテストに投稿するのはショート部門かな?
LevelPointというショートRPG風GAMEを構想中です
なぜかなんだかPointっていう作品名にはまっています

この本によるとLinuxプログラミングは
CUIを基本にしてもそこそこ出来るみたいです
HSPではGUIは簡単やけど
他の言語だとめんどくさいうえに
よくわからないんですよね→GUI
MagicPointもLevelPointもCUIで十分ちゃうかなー。
だなんて考えていマス
GAMEやから言語がGPLはマズイと思いきや
gccはコンパイラやから
実行形式で配布すればスクリプト見えないしねー

今度なんかLinuxの本買って
Linuxをインストールしてみようかな?

SkillPointの方は全然はかどっておりません
やったとしても相変わらずリファクタリングです
でもいいや
スパイラルだと思おう
現在スパイラル3週目
何回もスパイラルさせて
よりよいものができたらいいですよね

TACKはやっぱ締め切りは守れない方やわー
現在のペースで行くと
きちんとプログラミングすると
完成は12月頃かな?
それも上手くいくとは思えないから
もっと延びるかも
来年のコンテスト前には完成させて
来年のコンテストにこそは投稿したいですけど
ホラ今だってプログラミングを全然せずに本読んでるー

2009年8月13日木曜日

Skill Point 作成日記 ver 2009/8/13D

SKILL POINT開発のToDoリストです

・コーディング
今から10月2週目まで
・TEST
10月3週~10月31日
・マニュアル書き
10月3週~10月31日

・コーディングの中身
・・CSV形式のデータ作成
・・・CSV形式のデータ(MP消費)作成
・・・CSV形式のデータ(攻撃力)作成
・・・CSV形式のデータ(WP消費)作成
・・CSV形式のデータを文字列配列に読み込む
・・文字列に読み込んだCSV形式のデータを利用する
・・戦闘処理の分割
・・戦闘処理のコーディング
・・装備の処理のコーディング
・・お金入手の処理のコーディング
・・経験値の処理のコーディング
・・LVUPの処理のコーディング
・・WP消費の処理のコーディング
・・MP消費の処理のコーディング
・・SP消費の処理のコーディング

・シナリオを書く
・・シナリオ処理の処理のコーディング

Skill Point 作成日記 ver 2009/8/13C

昨日、割と古本屋で買った
実践!プロジェクト管理入門という本を読んでました
今はスケジュール管理の章を読んでいるとこ
そう言えば最近ToDoリスト書いてない
ってなわけで
昨日、ToDoリスト書きました
あかん日程が大雑把すぎる
TACKは何事においても
計画性がないので日程がたてれない
でもやるべきことを列挙してみると
上手くいきそうな気もしてきました

Skill Point 作成日記 ver 2009/8/13B

なんか戦闘処理を分割してるんやけど
分割する前の処理もまだ割愛できなくて
共存してます
そんな時に問題になるのが
命令名の衝突
それと命令がどこにあるのかわからない
探しても探しても出てこない
仕様がわかってないから、作り直す気もしない
で、戦闘sampleをめっけて
そこに命令がありました
やっぱTACKの命令名の命名方式は
命令名_at_module名があっている
そういう命名方式にたどり着く前から
このGAME作ってたりします

Skill Point 作成日記 ver 2009/8/13

再開させるとか言って全然放ったらかしてましたよ
このGAME
で、一週間前くらいから
2日に一回くらい2~4時間スクリプトかいてます
step by stepが板についてきた
なんかdebug画面からbuttonを選んで
処理に飛ぶの
戦闘画面は大体できてるんやけど
(経験値の取得とかSKILLPOINT消費はまだやけど)
それを分割してます
なんかいつもリファクタリングばかりしてる気がなきにしもあらず
step by step
one by one
ひとつひとつね

本日のerror ver 2009/8/13C

なんか型が違う。とかHSPに怒られました
しかも実行時errorなのでどこが間違っているのかよくわからん

原因は...
TACKは文字列はログ取ったりできるように
#define ctype ID(%1):"%1"
とかするんですが
いや、後から
#define ID(%1)%1:logmes "%1"
とかできるからなんやけど
そのID(hoge)
とかが、忘れてて
(hoge)
とか書いてて
そうなると数値やから
しかもそのhogeはどっかでstrmidの引数になってて
そういうわけで
文字列だと思ってたのが数値になっちゃったんですよ

またコピペしまくってたから
ID(hoge)
がコピペmissで
(hoge)
になったんやろね

本日のerror ver 2009/8/13B

なんか文法error出ました
文法error嫌いなんですよ
なんかerrorの表示が抽象的すぎる
で、debugすること数分
命令名のtype missでした

本日のerror ver 2009/8/13

FILEの中身が長くなってきたので別FILEに分割
で、
switch foo
#include "hoge.hsp"
#include "piyo.hsp"
swend


;FILE名 hoge.hsp
case 1
;hogehoge
swbreak


;FILE名 piyo.hsp
case 2
;piyopiyo
swbreak

みたいなかんじにswitchの中身を分割したらerror出ました
なので

#include "hoge.hsp"
#include "piyo.hsp"


;FILE名 hoge.hsp
switch foo
case 1
;hogehoge
swbreak
swend


;FILE名 piyo.hsp
switch foo
case 2
;piyopiyo
swbreak
swend


みたくしました
y.tack的にswitchはよく巨大化して遅くなりますが
それはcaseが多すぎるからで
5、6個switchの最初と最後が多くてもたいして遅くならなそうやからええかなって

2009年8月2日日曜日

2009年7月31日金曜日

本日のerror ver2009/7/31

tytyさん作のmoduleを改造したのを
(公開している)使用していたら
0除算errorが出ました
で、報告したら
僕がerrorチェック無視してたみたいです
型がきちんとdoubleになってなかったから
と思ってたら全然違いました
改造して改造中にバグ入れて
そのバグを本人に直してもらうという...
全くなさけないです

2009年7月25日土曜日

本日のerror ver 2009/7/24

color命令で色変えてるのに
色が変わらない

原因は・・・
color 256,0,0
とか255より大きい数を指定してました

2009年7月15日水曜日

特殊文字を展開するモジュール

サイト更新しました

更新したPageはコチラ

特殊文字を展開するモジュール

http://space.geocities.jp/digital_clock_2006/HSP/module/char2q_q2char.htm

本日のerror ver 2009/7/15

本日のerrorというより昨日のerrorなんですけど
皆さんはこのスクリプトの結果が何になると思いますか?

goto *@f
#defcfunc is_digit int h
if h=='0'{ ff=1}
if h=='1'{ ff=1}
if h=='2'{ ff=1}
if h=='3'{ ff=1}
if h=='4'{ ff=1}
if h=='5'{ ff=1}
if h=='6'{ ff=1}
if h=='7'{ ff=1}
if h=='8'{ ff=1}
if h=='9'{ ff=1}
if ff!=1:return -1
return 1
*@
logmes str(is_digit('1'))
logmes str(is_digit('a'))

結果は1\n1です
予想したとおりの結果にならないのはffがグローバル変数だからです
goto *@f
#defcfunc is_digit_b int h
ff=0
if h=='0'{ ff=1}
if h=='1'{ ff=1}
if h=='2'{ ff=1}
if h=='3'{ ff=1}
if h=='4'{ ff=1}
if h=='5'{ ff=1}
if h=='6'{ ff=1}
if h=='7'{ ff=1}
if h=='8'{ ff=1}
if h=='9'{ ff=1}
if ff!=1:return -1
return 1
*@
logmes str(is_digit_b('1'))
logmes str(is_digit_b('a'))

このようにきちんとffに0を代入すると期待通りの結果になります
ffがグローバル変数だということに気付かず30分くらい試行錯誤しました

2009年7月13日月曜日

命令名を省略するマクロ その3

サイト更新しました

更新したPageはコチラ

命令名を省略するマクロ その3

http://space.geocities.jp/digital_clock_2006/HSP/module/sorten_macro_simple.htm

7/15 サンプルその4追加

木下是雄氏著「レポートの組み立て方」 その2

・ペンを執る前に
 ・主題を決める


出発点は、予備知識より
それに加え、もしくはもしそれがなければ
少し前の新聞/雑誌を斜め読みしたり
大きな書店で立ち読みしたりする
出発点は予備知識より始まる

予備知識を用いて
問題点になりそうな点を思いつくままに書き並べてみる
時間をかけたり、間に休みをおいてときどき考えたりして
問題点を出す
考えたり書き出したりするとそれによって助けられる
問題点の項目はB6の紙に書くと便利
書いたものを眺めてたら、別の項目を思いついたりする


レポートのテーマは
それらの項目のいくつかを一つにまとめたもの
もしくはいくつかの項目の共通点をテーマとしよう
テーマを選ぶ際には4点考える
> (a) その話題は自分にとって魅力的か
> 自分はそれに積極的な魅力を感じるか
興味/魅力がなければ、文章が膨らまない
> (b) 自分はそれについて何かの考え-意見-があるか
レポートはテーマがあることが前提である
文献を読みながらテーマを決めても良いが
この本によるとテーマを元に文献にあたるので
この本の方式では自分なりの意見を持っていることが
レポートを書く前提となる
> (c) 自分はそれについてある程度の予備知識をもっているか
予備知識がないと本を読んでも文章が膨らまない
文章を読むためにはその分野に関するレベルが
ある程度あることが望ましい
> (d) その話題についてのレポートは
> 指定された長さ(原稿用紙)におさまりそうか


レポートに関する目標を決めたら
何に関して調べようか?
どんな結論にしようか?
どのような意見を主張しようか?
の3点を考えよう
それが構想である(レポートの主題に関する)
仮の主題を決めてから、文献探索をすることが
良いレポートを書くために必要なことである

主題は、誰もがわかりきっていることで良い
それでもそれを借用するのではなく自身で
客観的/数値的資料を集めて裏付けることは大変なことだ

レポート作成の基本(定石)は
確実な事実の裏付けによって
一つの考えをくみ立てることである

・主題の決め方は次の三段階である
① > 問題点を探す
② > レポートの話題をえらぶ
③ > レポートの主題を決める

引用雑記
 談話や意見を引用すると
 引用者の主観が含まれてしまう

木下是雄氏著「レポートの組み立て方」
p 43~p 54
1990年3月30日初版発行
発行所:株式会社 筑摩書房

木下是雄氏著「レポートの組み立て方」 その1

この本は一回読んで、本棚に飾ってありました
でも、ふと手に取りパラパラ読んでみると実にためになる
僕の中の文章理論が、この本を読めるレベルに達したかんじです
論文を書くための参考書とかも読んだけれど
レポートを書くための参考書ってのがいいかんじ
卒論は書いたことはあるけれど
論文にしたいテーマもあるけれど
折にレポート形式の文章を書いていきたい
この本を読んで思いました

筆者は大学の教授で自身の講義の
夏休みの課題として原稿用紙10数枚のレポートを課していたようです
2/3以上が事実の記述であり
その事実の記述に基づいて、自分の意見を組み立てることを要求しています
出題者の計算として、事実の記述は色々な文章からの引用が主体と定義しています

・ペンを執る前に
 ・レポート作成の手順

①レポートの目標を決める
レポートの書き手は課題に包含される色々な問題の中で
何を取り上げてレポートの話題とするかを考えます
しかし、それが決まっただけで書こうとしてはいけません
そのことについて考えて
どういう結論に持っていきたいか
見通しを立てなければいけません
それが仮の目標です
その後の文献探索により
この目標は、修正されたりくつがえされたりするかもしれませんが
それは始める前にしなければ
文献探索が効果的にならないのです

②レポートの目標を主題文にする
自分が書くレポートは何の目的か?
主張したいのは何か?それを文章にする
それが書けたら、それを参考に
何を調べるか?
調べたものをどう並べて結論に至るか?
そのようなことを考えながら構想を練る

③文献探索
図書館を利用する
課題が時事問題ならば、新聞/TVも活用
集めた資料が主張を支持すれば、主題は決定され
構成案を作成する
資料を集めたり、読み進めるうちに
主題の変更が要求されれば
主題や目標を修正してやり直す
木下是雄氏著「レポートの組み立て方」

p 37~p 42
1990年3月30日初版発行
発行所:株式会社 筑摩書房

2009年7月12日日曜日

仏のK先生

TACKは大学時代、仏のKと言われるK先生の単位を
6単位も取りました
(全単位の約5%です)
半年くらい毎日のように遊んでいたM君は
テスト勉強しなくても単位を取れる。とか豪語して
見事単位を落としました
僕は授業には一切出ずにテスト勉強をしただけでした

ベンチャー企業の講義で
レポートの提出を求められ
読書をしながら文章を書くというのがやりたくて
冬休み中ずっと、本を読みながら引用しまくりながら
書いてたら12ページくらいになり
評価はAの100点満点でした

なんか思い出しちゃった

ロジカル・シンキング入門

今は時代の変わり目、変革期
今までの価値観が通用しなくなる
こんな時代を生き抜くためのキーワードがロジカル・シンキング
みたいな導入部分で上手く行きぬけてない僕は
ハートをわしづかみされてしまいました

ロジカル・シンキングの手法の一つはレトリック
いくつもの視点を持つこと
想像力を持つこと
僕はあんま視点ないかな
想像力も自信ない
視点はもっと欲しいけど
想像力はいらんかな。とも思う

英語を読む時は想像力だなんてとも言うけれど
英語を読むのに必要なのはフィーリングだと思う
僕は想像力よりフィーリングに自信がある
英語に想像力が必要なのも初級者だけかもしれんし
何ヶ月前に買ったんだろうか?
という音読雑誌もまだ音読終わってないけれど
音読すればするほど意味がつかめなくなってきます
でも英語のフィーリングには近づいてきたかな?
効果でるほどやってないけど

この本には梶井なんとかの「レモン」の話も出てました
高校の教科書で読んでたなぁ
高校時代は国語の授業が一番好きだったかも
テストはできなかった気もするけれど
なんか小中の頃はきちんと設問を解くってのがテーマで
味わってなかった
夏休みとかに読んだら結構面白かったけれど
高校の頃は授業に入っていく気ゼロで
ずっと教科書読んでたなぁ

ロジカルな考えはできるかもしれません
塾長にロジカルな考え方できないんですよー
って言ったら話聞いててもできてるよー
みたいなことを言われました
だってプログラミングはかどらないのに
だなんて考えたら
できないのはロジカルな考え方じゃなくて
現状認識でした
プログラミングしてても
今どういう状態なのか?とか全然わからなくなったし
確かめてばかりです

科学における「レモン」それは全世界と繋がる
常に存在する「レモン」
文学における「レモン」それは
一回限りのレモン

主婦がスーパーで手に取る「レモン」それは
普遍的な「レモン」?
子供が手に取って遊ぶ「レモン」それは
一回限りのレモン?

主婦の「レモン」は科学に通じ
子供の「レモン」は文学に通じる?

科学は全世界に通じる
文学も世界に通じる
主婦の「レモン」は世界の部分
子供の「レモン」も世界の部分
そんな趣旨でした

以前、wikiに書き込んだ時、中傷されたんだけど
僕の文章に科学を求められたのだろうか?
書くのは一回
でもそろそろ僕の文章は科学を目指すべきなのだろう
wikiは控えているけれど
いつか自分でwikiを運営したいし
サイトにもプログラムのっけてるし
科学な文章を志すべきなんやろーなー

と、文庫読みつつなんか書いているんですが
いつからか応用するように読んでいます
常に感想をブログに書きたい
だ、なんて考えながら読書してます
進むの遅いし、全然理解できない
何回も読むし
高校の頃読んだ教科書の文章は読みやすかったなー
最近はこういう啓発書っぽいのばかりで
ゲーム小説も読むの遅いかなー
読みやすい小説ってのは流れだったのかも?
一時期はまった辻仁成作品もよみにくかった
何ヶ月か前久しぶりに司馬遼太郎の功名が辻読んだら
ものすごい読みやすかった

高校の古文・漢文の先生かんじよかったなー
古文は覚えることが多すぎてだめだったけど
漢文は割と得意やったなー

mixiにインパルスの板倉さんが小説を出版すると書いてありました
一年半もかかった。とか書いていたけれど
完成した事実がすごいです

2009年7月10日金曜日

SeeSaa BLOG

YkさんのブログがSeeSaa BLOGで
いくらか広告料入るみたいなんで
僕もSeeSaa BLOGを始めてみました
これは日経ソフトウェアのファンサイトという趣旨で
内容は日経ソフトウェア他
雑誌/ムックに関して書いていく予定です

ずざざん ざん♪ to 日経ソフトウェア

http://zuzazann.seesaa.net/?1247044249

本日のerror ver 2009/7/10

moduleを#includeしてTEST済みのmoduleで
TESTでは出なかったerrorが出ました
原因が全然思い浮かばなかったけれど

原因は...

同じFILEを#includeしてました

命令名を省略するマクロ その2

サイト更新しました

更新したPageはコチラ

命令名を省略するマクロ その2

http://space.geocities.jp/digital_clock_2006/HSP/module/shorten_macro.htm

2009年7月8日水曜日

indexを使って配列にアクセスするモジュール

サイト、更新しました
新作モジュールです
以前作ったモジュールを使用しているので
楽に作れました
でも完璧なTESTはできてない
だいたいカバーしたから(TEST)
大丈夫だとは思うけれど...

indexを使って配列にアクセスするモジュール


http://space.geocities.jp/digital_clock_2006/HSP/module/array_push_pop.htm

企業に取り込まれる

自分のサイトにホームページ・ビルダーの広告がのってて
クリックしたんですよ
そしたらホームページ・ビルダーに解説書がついてるバージョンがあるみたい

それで色々考え込んでしまいました
こうやって書籍は企業に取り込まれないものか?
企業が金出して書籍を発行するの
でも書籍は売れないと採算取れないしなー
ならテキストを取り込んで公開できるかも
企業が書いて欲しいテキストを募集して金出すの
visualなんたらとか、Delphi、Javaあたりなら
その方式でも採算とれそう

他にもモジュール、DLL、COMあたりも
企業が金出してNETの人に開発させれそう
もしくは、便利そうなモジュール、DLL、COMなんかを
開発した人が企業に売り込むの
visualうんたらは便利そうなライブラリを
NETの人が開発したのを公開。とかあんまり見たことないんで
この方式いけるかも

イメージトレーニング

今日は8時就寝2時起きのTACKです

最近、新しい技を見つけました
それがイメージトレーニングです
何かをする前に5分か10分
イメージトレーニングしています

勉強します。とイメージトレーニングを5分か10分して勉強
読書します。とイメージトレーニングを5分か10分して読書
プログラミングします。とイメージトレーニングを
5分か10分してプログラミング
イメージトレーニングというものを何かの本で読んで
イメージトレーニングしています
バッチリ効果ありますよ

2009年7月2日木曜日

IE6

あ、逝った
なんかIE起動しようとするとerrorでる
今はOpera
ハァまたリカバリか...

2009年6月25日木曜日

「HSPプログラマさんに40の質問」ver y.tack

サイト更新しました
てか、やっとアレHTML化しました
そのうち「HSP Beginner's Club」に報告に行こう

HTML化したページはコチラ

「HSPプログラマさんに40の質問」

2009年6月24日水曜日

命令名を省略するマクロ

サイト更新しました

更新したページはコチラ

命令名を省略するマクロ

2009年6月22日月曜日

分岐点

今、スクリプト書きの分岐点にいる気がします
何をつくりたい。とか
方向性の分岐点ではなく
スクリプト書きのスキルアップの分岐点です

僕はこれまで、こんなモジュールがあれば便利やろうな
という動機で色々とモジュールを作成してきましたが
そんなモジュールを作ったまま
ほったらかしにしてきました
でもそうじゃなく、これからは
どんなモジュールを使いたいのか?
よく考え
そしてより便利になるような
モジュールを作れば作るだけ
スクリプト書きの幅が広がる
もしくはより直感的なスクリプトになる
そんなモジュール、マクロを作っていきたいのです

つまり、作ったら作ったまんまほったらかしにするのではなく
せっかく作ったんだからきちんと活用していこう
活用できそうなモジュールを作っていこう
そんな分岐点にさしかかっている気がします
そりゃあ。標準命令とは違い
マニュアルは整備されていない
でもせっかく作ったんだもん。活用していきたい
活用できるようなモジュールを作りたい

そんなことを考えています

2009年6月15日月曜日

本日のmacro ver2009/6/15

TACKの命令名は長すぎます
自認してます
でも命令の名前考えるのめんどくさいしー
衝突したくないしー
ってなわけで
適当な命令名_at_モジュール名
にしています
それだと考えるのもめんどくさくないし
衝突もしない
でもタイプする気がおきません
いつもコピペしてます
コピペ...
悪い習慣だとは知っていますが
しょっちゅうやっちゃいますね
ところが
そんな問題を解決させるmacroを考え出しました
以下macroです
サイトにのっけてるモジュールも
このmacro使ったver作成しよっかな?
(いつになるかはわからないw)


// %1をdef_sタグへストック
#define ctype def_stock(%1):%tdef_s %s1
// %1と%2を結合してdef_sタグへストック
// 命令名_at_モジュール名。と書きたいので
// %1は_at_。%2はモジュール名を代入する仕様
#define ctype dA_stock(%1,%2):def_stock(%1%2)
// %1にdef_sタグへストックしてたものをくっつけて命令名とする
// ストックは維持
#define ctype dA(%1):%tdef_s %1%p
// ストックしてたものを吐き出す。=0は代入式にさせるため
#define def_end %tdef_s %o=0
;
goto *@f
#deffunc aaa_at_bbb
mes "OK"
return
#deffunc aaaa_at_bbb int a
mes "this is "+a
return
*@
;
dA_stock(_at_,bbb)
dA(aaa)
dA(aaaa) 1
stop
def_end

サイト色変更

TACKのサイトは昔ライムがメインでした
でもtytyさんがそれだと目が痛い。というわけで
グレーをメインにしました

でもなんか飽きてきた
ってなわけでサイトの色変更しました
今度は紺色をメインへ
ここのブログの背景色も紺色がメインなので
たぶん大丈夫でしょう

スクリプトの背景も
紺色をベースにしようかな。と思いましたが
ちょっと考え中

細木数子の占いでは
ラッキーカラーが緑と赤で
よく緑と赤の服を買うし着ます
本当は緑か赤をサイトのメインにしたくもありますが

でも数字占いでは
ラッキーカラーが紺色なので
サイトのメインを紺色にしたのです
緑と赤も好きですが
紺色も好きなのでこの占いもあてにしています
ジーパンも紺色だしね

プライベートでは
ジーパンばかりのTACKでした

初心者向け言語

まつもとひろゆきさんは
いわゆる初心者向け言語というものを
こきおろしているけれど
理由は初心者はいつまでも初心者ではない
といったものであるけれど
それでも僕は初心者向け言語の存在価値は
あると思います

確かに初心者はいつまでも初心者ではないし
HSPの自分が初心者であるという免罪符も
好きではありません

でも初心者向け言語って
プログラミングをする時の決まりごとが
少ないですよね

僕みたいにたまにしかプログラミングしない人間は
HSPの決まりごとの少なさが嬉しかったりします

たまに思い出したようにしかプログラミングしないので
決まりごとが多いと
error。error。で
なかなかやりたいことができないかもしれません
たまにプログラミングした時に
HSPの決まりごとの少なさは本当に嬉しいです

それから
初心者向け言語のほうが
アウトプットの量が多そうでもあります
それはHSPのコンテストの盛況ぶりが物語っています
Rubyでコンテストがあったとして
HSPほどの出品の多さが果たしてあるだろうか?
Rubyはやりたいことがあったとしても
調べ物が多くて
なかなかやりたいことに手が回らないかもしれません

そうは言ってもそのうちRubyにも手を出したいなぁ
とは思っていますけど

ウィルス対策ソフト

TACKはXP。SPなしのOS使ってるんですけど
何ヶ月か前ウィルス対策ソフト入れました
(XP。SPなし用のはなかなかなかった)
入れた時は怪しいプログラムがザクザクあって
面白かったんやけど
それからHSPの起動が遅いです
前チラッとなでしこやった時も遅かった
ネットする時も遅いです
遅いっつーか
電源入れた時とか
スタンバイから戻した時とか
1分くらい接続できないんです
1分くらいなら待てばいいじゃないか?とか
思うかもしれませんが
その1分がイライラするんです
ウィルス対策ソフトなしでネットする気にはならないけれど
セカンドマシンのOS98のやつで
(また)HSPやったろか?
なんて逆切れ気味のTACKでありました

2009年6月14日日曜日

foreach

いつからHSPで使えるようになったかわからないforeach
でも使ってみるとものすごい便利です

どんな時に使うかというと
値が一定に減ったり増えたりしない場合です

配列を要素数だけ繰り返すんだったら?
配列の要素数と使っている上限が一緒でない時には
使えないんじゃね?

ハイ。確かにそうです
でも考えてみてください
新しく上限と要素数が同じ配列を確保すればいいんです


dim to_loop_01,5
dim to_loop_02,7
to_loop_01.0=0,4,0,2,4
to_loop_02.0=1,0,3,7,0,5,0

dim from_loop,5,7

foreach to_loop_01
i=cnt
foreach to_loop_02
ii=cnt
from_loop.i.ii=to_loop_01.i*to_loop_02.ii
logmes str(to_loop_01.i)+"*"+str(to_loop_02.ii)
logmes "= "+str(from_loop.i.ii)
loop
loop

2009年6月13日土曜日

本日のerror ver 2009/6/13

本日でもないですが
sdimで4次元配列を確保したらフリーズしたんで
バグトラックに書き込んだんですよ

そしたら総の確保量が大きすぎたみたいです
例えばsdim 300,100,100,100,100
とかすると
600000000byte確保することになり
フリーズするみたいです
止まらないでフリーズするもんだから
バグかな?止まって欲しいな。とか
思ったんですけど

毎度毎度お騒がせ致しました

2009年4月17日金曜日

本日のerror ver 2009/4/17

なんか同じ命令があります。とか
HSPに怒られた

原因は
命令の名前長すぎ...

2009年4月14日火曜日

Skill Point 作成日記 ver 2009/4/14

一日おきくらいに
一日1、2時間作成してます
今回こそはコンテストの期間(予想)内に
完成させたい。と気負っています
やりたい時は、気負うのではなくたんたんと
なんですけどね

スクリプトをほったらかして
全然見てなかったので
調べるのにFreeMindを書くことから始まりました
FreeMindは完成してないのに
やる気がでてきました

動作させてるのではなく
ステータス書いているのはご愛嬌
動作させるより定義する方が楽なんです
苦手な動作させることも
スクリプトを書きながら上達すればいいけどさ

本日のerror ver 2009/4/14

なんかよくわからないerror
確かerror番号1
引数が文字化けしとる
原因は…

newmodのパラメータに
モジュール名を指定してませんでした

2009年3月3日火曜日

MODULE:array_ex ver 2009/3/3

サイトにUPしました
http://space.geocities.jp/digital_clock_2006/HSP/module/array_ex.htm

更新してたらsetterの配列を番号から始めて値を取得する命令
を作ってみたくなる
ハァ。まだ完成しないのかぁ

2009年3月2日月曜日

array_exモジュール ver 2009/3/2

一応完成しました
コンストラクタ入れて命令が12個あります
つかわなそうなのばっかりです
モジュールだけで430行くらいあります
作成に一ヶ月くらいかかりました
相変わらずスクリプト書くの激遅
谷間のスクリプト書きってかんじ
作成する前はこのスクリプトを書いた後
書きたいスクリプトがけっこうありましたが
これ書いているうちにどうでもよくなってきました
まずはこのモジュールの文字列版作成しよう!
サイトにアップは明日以降ってかんじでよろしくです

2009年2月20日金曜日

array_exモジュール ver 2009/2/20

作成中の領域自動確保モジュールの作成を
なかなかする気がおきなかったので
FreeMindで図にしてみました

これは単語に矢印を書けるので
スクリプトの整理/設計にも便利
と、感じました

で、図書いてたら眠くなってきた
このモジュール似たような処理がいっぱいあって
頭の中がこんがらがります
眠くなってきたので
図を大体書いたこともあり
今日のスクリプト書きはこのへんにして
ディスガイア1でもやって寝ます
やらないで寝るのもアリ

スクリプト書いてるっちゅーか
図書いてるだけやけどな!

MindMap

マインドマップ作成 Soft FreeMind

マインドマップとは、単語郡を書いて
単語間に線を引いて関連づける図です

頭の中にモヤモヤしている概念を
単語や線の描画に落として
頭の中そのままに近い感覚で図に落とせます

書きたいけど上手く整理できない概念などを整理するのに便利です
スクリプトの設計図を書くのにも便利です

配布元(英語)
http://sourceforge.net/projects/freemind/

インストール・作成マニュアル(日本語)
http://www.freemind-club.com/

マインドマップ活用クラブ (日本語)
http://mindmap-club.com/

2009年2月8日日曜日

LINKの整理

やりたいことがあるけど
(HSPで)
やる気が出ないので
LINKにコメント書いたり、デザイン変更したりしてます

で、最初。table tag で囲えばいいか
で、枠が変
原因:枠に使ってる色と背景が同じ色w

背景変更
するとLINKの文字がよみにくい
見えにくいのを解消しようとして
背景を変更すると、TOPページからの移動に違和感が...
対処:LINKの文字でかくしました
みえにくいならみえにくいなりにデカくなれ!
ってな勢いです(安易な対処法だこと)

で、簡単な説明とか書いてたら時間切れ
更新が中途半端なまま、放置!W
(コレ午前中の出来事です)

こんなこと書いている暇あるなら最後まで更新。
ですよね
でも今してることあるので...
ゴメンナサイ!!!
コレが終わったらやります!!!(開き直りw)

#あ、なんかテンション変だ

2009年2月7日土曜日

半角/全角ボタン

TACKはこんなに文章書いているのにブラインドタッチできません
数字とアルファベットとローマ字がごちゃごちゃなの
コピペばっかするし...
でもキーボードの操作でマスターしたいことがあります
それは...
半角/全角ボタンの押し方です
押したつもりでローマ字打ってアルファベットになったり
押したつもりでアルファベット打って変な日本語になったりします
半角?全角?の意識が足りないのかも
と、さっきコメント書いてて思った
全角でコメント書きたい時は
テンキーの”/”とtabで書けるのは便利ですけど
コメント書く時はアルファベットとローマ字が特にごちゃごちゃになります
半角/全角ボタンの押し方。マスターしたいよぉ
左足でボタン踏んだら、半角
右足でボタン踏んだら、全角
みたいな装置あればいいのにな。とか考えてます
足でリターンキー押せればブラインドタッチできるかも?
とかも考えています

話は少しずれるけれど
なんでHSPユーザーって変数/命令/関数名日本語にするの嫌いなんやろ?
やっぱ慣れ?
あんまり使わないけど範囲が広い変数は特に日本語使いたくなるけどね
日本語だとスペルミス減るしさ
スペルミスの怖さが僕がコピペする一因だったりします

そう言えば僕のデスクトップは大戦略を中古で買ってPLAYしたら
256色にして!って怒られて
256色だったんですけど
このブログ256色だと背景がたまに黄色になってムカつくので
色数戻しました
256色だと他のサイトで色が変になって笑えます

strf (使ってないけどw) その2

なんかコメントなかったので書き直し
配列そのまま使ってる部分(文字列返ってくるので)を
intにキャストしてgetter使った

TACKはHSPもしますけどRPGツクールもします
変数使ったテキストだけの自前戦闘作って
ショボくて飽きたりします

そんな感覚で作りました
それがワクワクすると形容した部分です
では、サンプルスクリプトです
// 製作:y.tack version 0.03
;
// enemy のstates eはenemyのeです
// 値は1から3にしたかったので4つ確保してます
sdim e_name,32,4
e_name="","スライム","こうもり","さそり"
dim e_mhp,4
e_mhp=0,20,40,80
dim e_hp,4
e_hp=0,20,40,80
dim e_at,4
e_at=0,10,20,40
// Player のstates pはPlayer のpです
// 値は1から3にしたかったので4つ確保してます
sdim p_name,32,4
p_name="","TACK","RAG","LIST"
dim p_mhp,4
p_mhp=0,30,60,120
dim p_hp,4
p_hp=0,30,60,120
dim p_at,4
p_at=0,10,20,40
;
goto *@f
// enemy のgetter 文字列で取得したいのでstr()使ってます
#defcfunc get_e_name int number
return e_name.number
#defcfunc get_e_hp int number
return str(e_hp.number)
#defcfunc get_e_at int number
return str(e_at.number)
// enemyのHPを減らす処理
#deffunc sub_e_hp int number,int value
e_hp.number-=value
return
;
// Player のgetter 文字列で取得したいのでstr()使ってます
#defcfunc get_p_name int number
return p_name.number
#defcfunc get_p_hp int number
return str(p_hp.number)
#defcfunc get_p_at int number
return str(p_at.number)
// PlayerのHPを減らす処理
#deffunc sub_p_hp int number,int value
p_hp.number-=value
return
;
// HP初期化
#deffunc e_hp_reset int number
e_hp.number=e_mhp.number
return
#deffunc p_hp_reset int number
p_hp.number=p_mhp.number
return
;
// 戦闘の前に表示する文字列
#defcfunc fight_begin int p_number,int e_number
return get_p_name(p_number)+" VS "+get_e_name(e_number)
;
// Playerの攻撃
// get_p_at()は文字列で返ってくるのでintにcastしてます
#defcfunc p_attack int p_number,int e_number
sub_e_hp e_number , int(get_p_at(p_number))
s =get_p_name(p_number)+"の攻撃!"+get_e_name(e_number)+" は "
s+=get_p_at(p_number)+" のダメージを受けた"
return s
// enemyの攻撃
// get_e_at()は文字列で返ってくるのでintにcastしてます
#defcfunc e_attack int p_number,int e_number
sub_p_hp p_number , int(get_e_at(e_number))
s =get_e_name(e_number)+"の攻撃!"+get_p_name(p_number)+" は "
s+=get_e_at(e_number)+" のダメージを受けた"
return s
;
// Playerの勝利
#defcfunc p_win int p_number
return get_p_name(p_number)+" の勝利!"
// enemyの勝利
#defcfunc e_win int e_number
return get_e_name(e_number)+" の勝利!"
;
// HPの表示
#defcfunc show_hp int p_number,int e_number
s =get_p_name(p_number)+" : HP "+get_p_hp(p_number)+" "
s+=get_e_name(e_number)+" : HP "+get_e_hp(e_number)
return s
*@
sel_p=1
sel_e=1
// Playerキャラ選択
*scene_A
cls 0
mes "プレイヤーキャラクターを選んで下さい"
button get_p_name(1),*sel_p_A
button get_p_name(2),*sel_p_B
button get_p_name(3),*sel_p_C
stop
*sel_p_A
sel_p=1
goto *scene_B
*sel_p_B
sel_p=2
goto *scene_B
*sel_p_C
sel_p=3
goto *scene_B
// 敵キャラ選択
*scene_B
cls 0
mes "対戦相手を選んで下さい"
button get_e_name(1),*sel_e_A
button get_e_name(2),*sel_e_B
button get_e_name(3),*sel_e_C
stop
*sel_e_A
sel_e=1
goto *scene_C
*sel_e_B
sel_e=2
goto *scene_C
*sel_e_C
sel_e=3
goto *scene_C
// 戦闘前の文字列の表示
*scene_C
cls 0
mes fight_begin(sel_p,sel_e)
button "NEXT",*scene_p_AT
stop
// Playerの攻撃
*scene_p_AT
cls 0
mes show_hp(sel_p,sel_e)
mes p_attack(sel_p,sel_e)
if int(get_e_hp(sel_e))>0{
button "NEXT",*scene_e_AT
}else{
button "NEXT",*scene_p_win
}
stop
// enemyの攻撃
*scene_e_AT
cls 0
mes show_hp(sel_p,sel_e)
mes e_attack(sel_p,sel_e)
if int(get_p_hp(sel_p))>0{
button "NEXT",*scene_p_AT
}else{
button "NEXT",*scene_e_win
}
stop
// Playerの勝利
*scene_p_win
cls 0
mes p_win(sel_p)
p_hp_reset sel_p
e_hp_reset sel_e
button "NEXT",*scene_A
stop
// enemyの勝利
*scene_e_win
cls 0
mes e_win(sel_e)
p_hp_reset sel_p
e_hp_reset sel_e
button "NEXT",*scene_A
stop

#スクリプトが横からはみ出たのでスクロールバーをつけてみました
#スクロールバーつけたのはじめてや(久しぶりのWEB検索でした)

strf

tytyさんがstrf使いまくってたのを読んで
strf使いたくなった
で、文字列が返ってくることにこだわってスクリプトを書いてみた
で、実行
むぅ。strfに%sを使うと前と後ろの文字列が無視されるらしい

HELP BrowserⅡには
> 「%s」 はサポートしていません
と書いてある

本当にサポートされていないみたい
でstrf使わなく修正
でも、文字列を返すのは新境地
ワクワクするようなスクリプトを書くのも久しぶり
なんか開発wiki見てたら、少し昔を思い出しました
もっとワクワクするようなスクリプト書いていきたい
ちなみにコレ作成1時間
やったことある処理って作成するの早いなぁ

##スクリプトは更新したので削除しました

2009年2月6日金曜日

ゥアホゥ

なんかここ一週間くらい
珍しく順調にスクリプト書いているんですけど
なんかアホらしくなってきた
本でアホらしくなっても
とりあえずソレをやれ!とは書いていた気がするけれど

そんな時に
tytyさんのBBSで何回か書き込みしました
意欲出てきたんだか、どうだろうか?

スクリプト書きではなく
文章書きしたくなってきた疑惑もありますが

どっかのサイトに贔屓のBBSを見つけよう
と書いていたような気がします
tytyさんのBBSが贔屓のBBSになれればなぁ
それでスクリプト書きをする意欲がUPすればええなぁ
なんて考えています

2009年2月5日木曜日

お知らせ

ここのブログ
コメントがあってもmailに通知されない設定になっていました
ってデフォルト設定ですけど
今日tytyさんのコメントがあって気付いて
コメントがあったらmailが来るように設定しました
結構な期間、ここのブログで書いているので
コメント欄見直しきれません
もしコメント書いた人がいたらゴメンナサイ

repeat命令のパラメータ その3

lengthはマクロかもしれないので
関数の戻り値をパラメータにして
ベンチマークを測ってみました
goto *@f
#defcfunc get
return 1000000
*@

before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
repeat get(),0
a=a+1
loop
after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間A:"+t

before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
n=get()
repeat n,0
a=a+1
loop

after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間B:"+t
stop

最初のベンチマークの方が若干早い
何度も関数呼び出しているのだろうか?
それほど遅くもないけれど
もう少し調べてみました
i=0
goto *@f
#defcfunc get
i++
return 1000000
*@

before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
i=0
repeat get(),0
a=a+1
loop
after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間A:"+t
logmes "i = "+i

before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
i=0
n=get()
repeat n,0
a=a+1
loop

after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間B:"+t
logmes "i = "+i
stop

今度はベンチマークの時間は同じでした

・というわけで結論
repeatのパラメータを参照するのは一度だけ

repeat命令のパラメータ その2

ベンチマークの取り方がわからなくて
tytyさんのBBSで質問したんですよ
で、教えてもらって
さっきこの前の速度の疑問を調べるスクリプトを書いてみました


before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
dim d,100000
repeat length(d),0
a=a+1
loop
after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間A:"+t

before = gettime(7) + gettime(6) * 1000
before += gettime(5) * 60000

a=0
repeat 100000,0
a=a+1
loop

after = gettime(7) + gettime(6) * 1000
after += gettime(5) * 60000

t=after - before
logmes "所要時間B:"+t
stop

所要時間をどちらも110でした
repeatのパラメータは外に出さなくてもいいみたいです
lengthはマクロっぽいので
そのうち関数の返り値にしたらどうなるか?調べてみたいです

よくわからなかった部分は時間に関する命令で
こうやって使うやぁ。と目から鱗が落ちる思いです
これでこれから気になった部分があれば
ベンチマーク測れるぅ!ってかんじです

2009年2月3日火曜日

repeat命令のパラメータ

ループの条件式の中の不変な値は
ループの外に出すのは高速化な常識やけど
(というかそれくらいしか知りません)
repeat命令のパラメータはどういう扱いなんやろ?

というのもrepeat命令のパラメータに配列の長さを使おうとして
ふと思い直して外に出したんですよ

例えば
dim d,8
repeat length(d),0
logmes str(cnt*2+1)
loop
stop

みたいな

これを
dim d,8
flag=length(d)
repeat flag,0
logmes str(cnt*2+1)
loop
stop

みたいにすれば
速くなるのかなぁ。と疑問に思ったのです
計測するにもベンチマークの仕方よくわからない
というか現在めんどくさくてあんまりベンチマークの仕方を
学ぶ気がしない

そうそう
array_exモジュールは
朝1時間くらい作成して
午後10時くらいからずっと作成しています
サイトへの更新は無理やろうけれど
是非とも今日中に完成させたいです

array_exモジュール

数値を文字列に変換して文字列配列の自動拡張を利用して
自動拡張できる配列のモジュールは以前作成しましたが
最近は配列のコピーをして自動拡張できるモジュールを作成しています
完成度は50%くらいでしょうか

その中のエラー
配列アクセスで代入したのに
代入した値がdumpされない
原因は上限がindexなのに上限を超えた場合
要素の番号で上限を更新していたためです

例えば
番号6に値を入力
上限が6に
出力:0~5
うーん上手く書けないけれど
番号が6の場合
上限は7にしなきゃいけないんですよね
番号は0~6
上限は1~7
よくわからないですか?
僕もよくわからない
でもerrorの原因はわかりました

後は...
察して下さい...(笑)

2009年1月24日土曜日

JavaScriptサンプル

MagicPointのJavaScript versionの完成を目指して
JavaScriptで試行錯誤しています

簡単な文字列操作、ブラウザ情報取得
オブジェクトを出したり消したり と準備運動的な
プログラミングを経て
そろそろ本題のMagicPointのJavaScript versionの作成に
入れそうなところです

JavaScriptサンプル はこちら

JavaScript sample

2009年1月15日木曜日

JavaScript

tytyさんのBBSの広告先で色々見てたら
ブラウザゲームが作りたくなった
tytyさんのBBSの提供元が
ゲーム可CGI可Ruby可の
ホームページスペースを提供しているらしい
Rubyにしよっかなー
Perlにしよっかなー
なんて考えてたけれど
最初はJavaScriptかな
ってなかんじ

というのもCGI関連の書籍が今手元にないからだ
PerlのCGIの書籍なら押し入れのどこかにあったはず
探すのめんどくさいなーってとこ
でもPerlよりRubyでCGIを書いてみたい
そのうち書店にあったら始めよっかなー
ってなかんじ

でもCGIを書くとしても
JavaScriptを駆使したい
JavaScriptの書籍どこ行ったかなー?
たぶんそれも押し入れの中だ
押し入れ捜索隊をするか
もう一冊買うか
図書館で借りるか
考え中

JavaScriptは一度作りかけたけれど
日経ソフトウェア総集編2007で
JavaScriptの解説を読んだら
HTML文を全て変更できると書いてありました
僕の作ったのは
ボタンとメッセージボックスの内容の変更で補っていました
ネット情報でスクリプト書きカバーできないかな?
ってなかんじ
ゲームの構想が未完成だと
完成しなさそうなので
何ヶ月か前に作った
MagicPointのJavaScriptバージョンでも書いてみようか

2009年1月10日土曜日

日経ソフトウェア2007総集編を読んでたら
図の解説をしていました
UMLにフローチャート、あと一個

UMLはまだ書けそうにないですが
あと一個は思考の図化で
図を書きながら考える
考えたものを図にする
と、考えがまとまるそうです
少し挑戦してみとうかな?ってかんじです

フローチャートは
コメントの下手な人はフローチャートを
書くと良い。と書いていました
ちなみに
値が素数か調べるver2
は、フローチャートは書かなかったけれど
フローチャートを書いたつもりでコメントを書いてみました

プログラムとは
順に書いていくものなので
図を使って
構造を示すのは悪くないかもしれません

マイルストーン

某文庫に書いてありました
しにくいことは
出来る範囲で少しづつやってみなさい
ということでした

コレを一昨日読んで
昨日、読むのがはかどらない
visual C++2005の本を読んだら
かなりはかどりました
言語解説が終わり
自動作成されるコードの解説にはいりました。とさ

何事も始めるまでがおっくうで
始めてみると案外やってしまう。とは
何かの本で読んだけれど
その具体例ですね

値が素数か調べるver2

この前書いたのが手抜きすぎなので
もう少しきちんと書き直してみました
;素数例:2039

d=0
s=""
input d,300,20,0
button "calc",*start
mesbox s,480,400,0
stop

*start
s=""
cls
input d,300,20,0
button "calc",*start


n=0
m=0
l=0
p=0
// 変数flag:素数であるの時1、素数でない時0
flag=0
s=""
// dは2の倍数であるか調べる
// 2は2n+1ではないので
// whileループの中に入れれない
n=d/2
m=d\2
if d!=2{
if m==0{
s+="× "+2+" * "+n+"\n"
flag=1
}else{
p=(n+1)*2
s+="○ "+2+" * "+(n+1)+" = "+p+"\n":
}
}

// 変数tmp:dがtmpの倍数であるか調べる数
// 値は2n+1
tmp=1
tmp+=2
// 変数tmp02:dがtmpの2乗より大きいか調べる数
tmp02=tmp*tmp
n=0
m=0
l=0
p=0

// dがtmpの2乗より大きい限りループ
while tmp02 <=d
n=d/tmp
m=d\tmp
if m==0{
s+="× "+tmp+" * "+n+"\n"
flag=1
}else{
p=(n+1)*tmp
s+="○ "+tmp+" * "+(n+1)+" = "+p+"\n"
}
tmp+=2
tmp02=tmp*tmp
n=0
m=0
l=0
p=0
await 1
wend
// flagの値で分岐して結果を表示
if flag=0{
s+=""+d+"は素数です"
}else{
s+=""+d+"は素数ではありません"
}
mesbox s,480,400,0
stop

2009年1月7日水曜日

数値が素数か調べる

ハッシュテーブルが257では小さすぎるので
2000くらいにしたいな。と思い
2000くらいの素数ないかな?と思い
その数が素数であるか調べるスクリプトを書いてみました

;素数例:2039

d=0
s=""
input d,300,20,0
button "calc",*start
stop

*start
cls
input d,300,20,0
button "calc",*start


tmp=1
n=0
m=0
l=0
p=0

n=d/2
m=d\2;注
if m==0{
s="× "+2+" * "+n
logmes s
s=""
goto *finish
}else{
p=(n+1)*2
s="○ "+2+" * "+n+" = "+p:
logmes s
s=""
goto *begin
}

*begin
tmp+=2
tmp02=tmp*tmp
n=0
m=0
l=0
p=0
s=""
if tmp02 <=d{
n=d/tmp
m=d\tmp;注
if m==0{
s="× "+tmp+" * "+n
logmes s
s=""
goto *finish}
else{
p=(n+1)*tmp
s="○ "+tmp+" * "+n+" = "+p
logmes s
s=""
goto *begin}
}
*finish
stop


注:¥が文字コードの関係で\になっています
ハッシュテーブルの大きさは2039にしよっと

抽象化

プログラム言語の流れは抽象化だそうです
で、HSPは抽象化が足りない。とどこかに書いてありました
でも、結局抽象化ってオブジェクト指向?
オブジェクト指向でデザインパターンに落とし込むのが抽象化?

でもHSPでスクリプト書いてて
だいたいモジュール作って、それで終わりってことが多い
(僕の場合)
作成したモジュール。関数。命令の統合が上手くできない
これがその例?
だからといってオブジェクト指向にしたら上手くいくとも
思えないけれど
僕の場合オブジェクト指向でプログラミングしても
部品ばかり作ってそうな気がします

UMLはよくわからないけれど
フローチャートとか、紙に図を書くと
少しは上手くいきそうな気もします
だからといってあんまり紙に図を書いてないですね
なんでやろ?全体像がぼやけているからかな?

ToDoリストは書くこともあるけれど
ToDoリスト列挙してもそれ通りに動くのは最初だけだったりもします
なんか書いたスクリプトへの加筆が上手くいかない
書いたスクリプトへの加筆は抽象化させないとできないのかも
書いたスクリプトの解説が上手くいかないのは
きちんと抽象化してないから?
でもスクリプトを書いたらそれで満足しちゃうよな
スクリプトをもっと解説するよう努力するのは
いいのかもしれませんね

抽象化がある?ない?は
トップダウン。ボトムアップのスタイル。も関係しているのかもしれません
僕のプログラミングスタイルは完璧ボトムアップですね
部品ばかり作ってるし
この前コンテストに投稿したGAMEはトップダウンでしたね
行数そんなになかったけど
なかった故にトップダウンで書けた気もします

言語をトップダウン。ボトムアップの視点で見てみると
HSPがトップダウンでRubyはボトムアップな気がします
ツールとして向いているマニュアルが整備されているHSPは
トップダウンだと思います
便利な機能はそろっているけれど
アプリケーション作成には向いていなそうな
Rubyはボトムアップな気がします
僕がボトムアップ型人間であるが故に
トップダウンなHSPが好きなのかもしれない
トップダウン故に居場所が上の方で
そこからボトムアップでスクリプトを書くと
手軽に上へ行けるのでしょう

さっき日経ソフトウェア総集編を読んでたのだけれど
その中に視座という言葉が語られていました
抽象化、ボトムアップ、トップダウン
色々な視座でスクリプトを書いていければ。と思うのです

2009年1月6日火曜日

文字列を " で分割する

プログラムなりスクリプトなりでは
文字列を " でくくりますよね
なのでソースから文字列をくくり出すスクリプトを書いています

紙にオートマンを書いたりして設計までしつつ記述しています
でも文字列中のエスケープ文字の処理がよくわからない
¥¥¥¥→¥¥
¥¥t→¥t
くらいならわかりやすいんですけど
¥¥¥
とか
¥t
とかがあったらどうしよう?なんて考えてます
¥はややこしいので
?tとか?nとかでも可。にしようとは思ってはいますが

でもなんか近いうちにこの処理は完成しそうなかんじです

ハッシュ値の計算

なんか書いてみるかな?ってことで
ハッシュ値を計算してみました

注:blueleafさん作のlongint.dllを使用しています


#include "longint.hsp"
#module
#defcfunc calc_hash var source
l=strlen(source)
tmp01=LongInt(0)
to_cmp=Longint(1)

dim v,l
repeat l
v(cnt)=peek(source,cnt)
loop

repeat l
tmp01+=Longint(v.cnt)*to_cmp
to_cmp*=31;注1
// logmes str(tmp01)
loop

tmp01\=2039;注2
r=int(tmp01)
// logmes str(tmp01)
return r

#global
s1="abc--start"
s2="def--start"
s3="abc--begin"
mes calc_hash(s1)
mes calc_hash(s2)
mes calc_hash(s3)
stop


注1:ハッシュ値は文字列の各要素に
31とか37を掛け続けた後、素数で除算して求めるみたいです

注2:文字コードの関係で¥が\になっています

ハッシュ値を計算できたはいいが
これをどんなデータ構造で管理するかは
今後の課題です

2009年1月2日金曜日

2ちゃんねる宣言

古本屋で売ってて安かったので買って読んでみました

ひろゆきさんがめんどくさがりなのに
こんな巨大サイトを製作するに至った経由とかが
読み応えありました

僕は普通の話題と下ネタは切り離して話すタイプで
普通の話題と下ネタが混ざっている2ちゃんねるは
ほとんど読んでないですけど
こういう本は楽しいですね

2ちゃんねるはやんないけれど
mixiは結構やります
色々なコミュニティにはいりすぎて
新着記事がいっぱいありすぎて
ほとんど追えてないですけど
mixiのコミュニティも
はまってるのがあればもっと楽しいんでしょうけれど
たまに日記書いて
マイミクが少ないので
マイミクの日記は全部読んでます

これはアレか?
自分でコミュニティ作るべき時期なんだろうか?
ま、そんな時は自分のサイトのコンテンツ増やすでしょうけれど

そうそう2ちゃんねるがシンガポールの会社に譲渡されるんですってね
利用してないのでコメントできませんが
あんなに巨大なサイトの経営が上手くいかないって
不思議やなぁ