« 脈絡無く東方の事 | メイン | すごろく - 似非完成 - »
2005年01月09日
すごろく
プレイヤーメイン関数 {
static int プレイヤーの現在位置
コマンド入力();
}
コマンド入力 {
コマンド受付;
コマンド処理();
}
コマンド処理 {
switch(コマンド){
case 0: サイコロを振る();
コマを進める();
}
}
サイコロを振る {
ランダムな数;
return ランダムな数;
}
コマを進める {
プレイヤーの現在位置+ランダムな数
}
・・・って、プレイヤーのメイン関数から呼び出すならともかく、こんな奥の方までアドレスを教えるのは汚すぎるし、ややこしい。
解決するには、この関数をプレイヤーのメイン関数から呼び出してアドレスとランダムな数を引数に呼び出す事ですが、
それをしてしまうとなあ・・・
他に、全関数をプレイヤーのメイン関数に統合して、switchとGOTOで処理する方法が。
もしくは、プレイヤーの現在位置をグローバル変数にするとか。
あーもーめちゃくちゃだー
で、switchとGOTOの方法を、GOTOが禁じ手だとあちこちで書かれているのを知りながら使おうと思ったんですけど、
やってみるとこれがまた確かに多用すると見難い事この上無いので、
もう、ほんとに、グローバル変数にしちゃいました(笑)
グローバル変数も、あんまり使うのはよくないらしいんですけどね。
しかも、当初のポリシーから逸脱しすぎなんですけどね。
あーあ・・・・・・やっちゃった
で、よく考えたら外部から直接メソッド(と勝手に名付けた物)を操作できる時点で・・・・・・。
なんとかする方法とすると、意識的にそのオブジェクト(と勝手に名付けた物)のメイン関数(とか書いてる時点で間違っているのだけれども)経由で操作するようにするしか。
しかし、それをやるとコードがより見難くなり本末転倒
で、結局苦肉の策のような感じで。
作りました。
なんといいましょうか、とても無駄が多いコードですね。
何しろプレイヤーとコンピュータで全く同じコードが二重にあるし、
しかもそれが上手く機能していない。メリット無しです。
例えば「関数->子関数」みたいな感じにできて、関数で使用している変数は子関数でも(アドレスの受け渡し無しに)普通に使えたりすれば話は違うんですが。
できる?のかもしれませんが、知りません。
なんか意気消沈なので後は ■□プ□コ□□□□■ としたら終了します。
切腹
投稿者 miff : 2005年01月09日 23:49