HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0724
木口小平C言語のように関数とローカル変数を使いたいのですが。2解決


木口小平

リンク

2018/7/24(Tue) 20:52:26|NO.84859

囲碁・将棋・オセロ系のボードゲーム『チェッカー』をHSPで作りたいのですが、HSPでは
変数は全てグローバルなのでしょうか?『相手の駒を取る手が複数あるときには乱数で指し手を
決める』ということを『再帰アルゴリズム』で実現したいのですが、C言語のように関数とロー
カル変数のようなものがないでしょうか。


『マイコンベーシックマガジン』2002年4月号にBASIC(変数は全てグローバルのみ)
で作ったものが掲載されたことがあるのですが、なにぶん16年も前のものなのですっかり忘れ
てしまいました。



この記事に返信する


あらや

リンク

2018/7/24(Tue) 21:49:09|NO.84860

一応再帰処理も出来ます。
ローカル変数は使っていませんが単純な処理としてこんな感じです。

#module // 1から自然数p1までの合計値を返す #defcfunc sum int p1 if( p1 < 0 ) { // p1がマイナスの時は-1を返す return -1; } else:if( p1 == 0 ) { // p1が0ならばそのまま返す return 0; } else { // p1が自然数のときは再帰処理 return p1 + sum(p1 - 1); } #global // 1から36までの合計値(悪魔?の数字が表示されるはず) mes sum(36); stop;




ローカル変数を使う場合は

#module #defcfunc kansuu int p1, local p2 // 処理の内容は省略 #global a = kansuu(10); // 使用時にlocal変数は必要なし
こんな感じです。

ただ、再帰する回数に限度があるので(たしか256回くらいだったかと思います)
無制限に再帰できるわけではありません。



木口小平

リンク

2018/7/25(Wed) 01:53:32|NO.84861

なるほど、ありがとうございました。
HSPの本は3冊持っているのですが、こんなことは書いてなかったなあ。



ONION software Copyright 1997-2023(c) All rights reserved.