第85話 送風機とコンロ
「今日は隆盛期に作られた古代魔道具の数々を紹介します」
魔法古代史1の講義で黒板に古代魔道具の説明が所狭しと書かれた。
魔道具の機能が分かっても作るのには役に立たない。
「ねぇ、美味しいお菓子出す喫茶店を見つけたの。帰りに寄ってかない」
ミニアの隣に座るセラリーナがそう言って来た。
「行く、行く、絶対行く」
何時の世でも甘味は女の子に大人気だな。
授業そっちのけでミニアとセラリーナは雑談に興じている。
ノートすらとってない。
まあ俺が全部覚えているのだけども。
講師が呪文を黒板に書き始めた。
『ニミカ・カラナソクゆモチキニソ・けモセよ・が・
ニミカ・ニレ・
ハラスゆニほワレニねモセホるモチキニソコナハトニツイレニれれよが・
ニハゆけゆモセホるモチキニソコナハれニよ・お・カラナソクろラミ・ぬほ・ワよが・
スイカナスミゆヌよレ・む・む・
スイカナスミゆワよレ・む』とある。
「えー、この呪文は古代魔道具を作る上で基本だと注釈が付いて石板に刻まれていました。『カラナソク』というのは魔道具を作る時に良く出てくる単語です。覚えておくように」
ふむ、解析するか。
イメージはこんなだ。
int touch(MAGIC *mp)
{
int i; /*カウンター*/
for(i=0;i<mp->magicbufsize;i++){ /*ボタンの面積だけ繰り返す*/
if(*(mp->magicbuf+i) & TOUCH_ON != 0){ /*ボタンに触ったか*/
return(1); /*触ったなら1を返す*/
}
}
return(0); /*触ってない。0を返す*/
}
これを改造すればスライドスイッチが作れるな。
確かに基本だ。
魔法定義の中身も多少分かった。
どの講義もこういう思いがけない発見があるのだろうか。
全部に出れないのが悩ましい。
講義が終わるとダッセンが外で待ち構えていた。
なんでこの講義に出ていると分かったんだ。
「やっぱりだ。この残り香はスライムの匂いだった」
匂いを辿ってここまで来たのか。
犬みたいな奴だな。
「この少し気持ち悪い男はミニアの知り合い? 付き合う人は選んだ方が良いよ」
「下僕のダッセン」
「ミニアは悪い女ね。男を下僕として使うなんて」
「ぐっ、気持ち悪いだと。酒場のスーララちゃんには素敵って言われたのに」
「何の用?」
「あの後クレームが来て減給になった。なんとかしてくれ。このままだとスーララちゃんに会えない」
「仕事が終わった後に家の仕事を一時間してくれれば、一ヶ月で金貨一枚だすよ」
「ミニア様、モチニミ様。感謝します」
「今日から来て」
今日も何事もなく終わったな。
魔道具開発タイムと行くか。
送風機とコンロだったな。
void main(void)
{
MAGIC *mp1,*mp2,*mp3; /*魔法の定義*/
int onoff;
long sleep;
mp1=button_make(2); /*大きめで風量ボタン生成*/
mp2=button_make(1); /*お休みタイマーボタン生成*/
onoff=0;
sleep=0;
while(1){
if(touch(mp1)==1){ /*風量ボタンに触った*/
switch(onoff){
case 0:
mp3=wind_make(1); /*魔力1で風生成*/
onoff++;
breack;
case 1:
magic_delete(mp3); /*風を消去*/
mp3=wind_make(2); /*魔力2で風生成*/
onoff++;
breack;
case 2:
magic_delete(mp3); /*風を消去*/
mp3=wind_make(3); /*魔力3で風生成*/
onoff++;
breack;
case 3:
magic_delete(mp3); /*風を消去*/
onoff=0;
breack;
}
}
if(touch(mp2)==1){ /*お休みタイマーボタンに触った*/
if(sleep==0){
sleep=60*60*100; /*お休みタイマーセット*/
}
else{
sleep=0; /*お休みタイマー取り消し*/
}
}
if(sleep!=0){ /*お休みタイマーがオン*/
sleep--; /*タイマーを一つ減らす*/
if(sleep==0 && onoff!=0){ /*タイマーがゼロなら風を消す*/
magic_delete(mp3); /*風を消去*/
onoff=0;
}
}
time_wait(1); /*0.01秒待つ*/
}
}
送風機はこんなもんでどうだ。
風量ボタンが三段階切り替え。
お休みタイマーは一時間の一つ。
後付け加えるとしたら、押したのが分かる様に音と光だな。
ただ魔石の中の魔力も無限じゃない。
それをやるとしたら、大きい魔石で高級品路線だ。
コンロは火力調整ボタンの形状を四角くて細長い形状にしないといけない。
こんな感じでどうだ。
int slide_touch(MAGIC *mp)
{
int i; /*カウンター*/
for(i=0;i<mp->magicbufsize;i++){ /*ボタンの面積だけ繰り返す*/
if(*(mp->magicbuf+i) & TOUCH_ON != 0){ /*ボタンに触ったか*/
return(i); /*触ったならその場所を返す*/
}
}
return(0); /*触ってない。0を返す*/
}
MAGIC *obj_make(long objsize,int image,int attri)
{
char *obj; /*火のデータ*/
MAGIC *mp; /*魔法定義*/
long i; /*カウンター*/
obj=(char*)malloc(objsize); /*ファイヤーボールの領域確保*/
if(obj == NULL) { /*確保失敗 この場合は魔力切れ*/
exit(EXIT_FAILURE); /*処理の終わり*/
}
mp=magic_make(obj,objsize,image); /*魔法を作る*/
for(i=0;i<objsize;i++){
*(&obj[i])=attri; /*領域を設定属性にする*/
}
magic_trans(mp); /*現象に変換*/
return(mp); /*魔法の情報を返す*/
}
void main(void)
{
MAGIC *mp1,*mp2; /*魔法の定義*/
int onoff,old;
mp1=obj_make(10,IMAGEBLOCK,HOLOGRAPHY); /*スライドボタン生成*/
onoff=0;
while(1){
old=onoff; /*前の状態を保管*/
onoff=slide_touch(mp1); /*スライドボタンに触った*/
if(old!=onoff){ /*前の状態と違う*/
if(old==0){ /*火が点いていない*/
mp2=obj_make(onoff*20,IMAGEBALL,FIRE); /*スライドの位置の火力で火を点ける*/
}
else{ /*火が点いてる*/
magic_delete(mp3); /*火を消去*/
if(onoff!=0) mp2=obj_make(onoff*20,IMAGEBALL,FIRE); /*スライドの位置の火力で火を点ける*/
}
}
time_wait(1); /*0.01秒待つ*/
}
}
ホログラフィの魔法語は訓練用のファイヤーボールを作る魔法から知った。
タルコットから貰った物の中にあった物だ。
タルコットのこういう所が関係を切れない所なんだよな。
魔道具が完成すれば、タルコットが大喜びするに違いない。
ミニアが建国すればこれらの魔道具は国民が金を稼ぐのに役に立つだろう。




