Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147154
次のページ(過去)
返信[6]
親投稿
おちゃめ ochame_nako
ヨッシーさんへ 型の判別は型ごとの演算結果の違いを元に行っています。 したがって、配列変数とそうでない変数との演算結果が異なる場合がない限りは判別は不可能です。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
ただの24面体なので問題ないでしょう(笑) 60fpsというのは私がmkIIで作ったものとほぼ同じ速度ですね。 もっとも、私のはただ表示してタッチで回転させるだけのプログラムですが。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
Xが0、1以外の値を取る可能性を考慮すると A=0:B=0 IF X==1 THEN A=X+Y IF X==0 THEN B=X*Y としなくてはダメですね。理由はすでに書かれている通りです。
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
IF X==1 THEN A=X+Y:B=0 IF X==0 THEN B=X*Y:A=0 これで大丈夫です。
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
ここで「64」がどこから出てきた数字かが気になるかもしれません。 1/64より1/100の方がキリが良いと感じるでしょう。 しかし、プチコン3号は内部では2進数で処理しているため100で割るとどんどん誤差が出てきてしまいます。 そのため(SPD>0)で下限を0に設定しても誤差によってマイナスになってしまいます。 IF文で0未満になってないかどうかを判定すれば問題ないですが。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
ちなみにそのプログラムの原型となった私が作ったものについてアクセル処理とエンジンブレーキ処理だけ説明をしておきます。 アクセル処理はIF B AND 16 THENでB AND 16がtrue(=0以外)の時に実行されます。 SPDがスピードでSPD=SPD+(SPD<4)/64のようにSPDが4より小さいとき1/64ずつ加算されるためスピードの上限が4になります。 上記IFでB AND 16がfalse(=0)の時にエンジンブレーキ処理をしています。 SPD=SPD-(SPD>0)/64のようにSPDが4より小さいとき1/64ずつ減算されるためスピードの下限が0になります。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
教えてもらうというのは決して悪いことではないのですが、1つずつ順番に理解できた状態で先に進まないと単なるクレクレ君と何ら変わりが無くなってしまいます。 すでに教えてもらった部分で分からないことがあるならばその都度尋ねると良いでしょう。
1そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
もやしもどきさんへ 比較演算が3になるというのはたまたま見つけたのですが、それがあったからこそこんなに簡単に文字列と数値の判別ができました。 そうでなかったらinfとnanを駆使しないといけないですね。 IF V==V*1.5 THEN A=V*0!=V*0で0(もしくはnull)以外の数値と文字列の判別が可能ですが、この場合でも整数型の1と文字列の判別ができないため頭を悩ませていました。 らいむ(みずたまさんへ そうですよ。 ちなみに本日、最近作った自作関数や命令で使用している技術解説も書いてみました。
1そうだね
プレイ済み
返信[23]
親投稿
おちゃめ ochame_nako
けいさんへ 引き分けが多いというのはある程度コンピュータの出す手を予想できているためです。このプログラムではコンピュータに勝てる手を予想するのはかなり難しいと思います。 ただしある程度データが蓄積されるまでは単純な乱数に近いので最初の10手くらいは運が良ければ勝率8割とかも可能です。 きのっこさんへ 配列を使ったテーブル処理も定番的なものですね。 じゃんけんのような決まったパターンの場合は剰余を使った方が短くできるというだけです。 ちなみにBボタンを押せば0、Yボタンを押せば1、Xボタンを押せば2、それ以外は-1となるようにするには私のプログラムリストを見ての通り 630MOD(BUTTON(2)+5)MOD 6-1 でできますが可読性が非常に落ちてしまいます(笑)
2そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
Rwiiugさん、Godotさんへ プチコンは初代~3号までBEEPは最大8音同時に鳴らすことができます。 これは逆にいえばすでに鳴っている状態で8音鳴らせば最初に鳴らした音は消えてしまうということです。 これを使って無音BEEPを8回鳴らせばBEEPを強制停止できます。 MML演奏機能が無かった初代プチコンではBEEPによる自前のMML演奏プログラムを各自で作っていたのですが私はこれを使ってスタッカート機能を実装しました。 コータさんへ プチコン3号ではBEEPで使用されている音色をBGMPLAYで使えるため音長やQコマンドを使えばBEEPOFF命令を使わずとも同じようなことはできてしまいますね、 Lejenne いろいろな言葉作りを楽しむのもありですね。 たまろんさんへ WAIT30だと強制停止になってないような気もします。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
バグ修正。 VARCOLORのDEF内のSPOFSのZ座標が256ではなく255になっていました。
1そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
SUFFIX関数は実数型の時に1、整数型の時-1、文字列の時0を返します。つまり、0以外の値ならば数値変数というわけです。(変数だけではなくリテラルも判断可能) BTWAIT命令はSUFFIX関数を使って文字列か数値かを自動判断しているため例えばAボタン入力待ちはBTWAIT 16でもBTWAIT "A"でも受け付けてくれます。(拡張スライドパッドのZRとZLのみ数値だけに対応) 動作サンプルのように BTWAIT "→LR" みたいに複数ボタンを同時押しするまで待つという指定も可能です。
1そうだね
プレイ済み
投稿
おちゃめ ochame_nako
DEFで変数の型(実数型、整数型、文字列)を取得できるSUFFIX関数と任意のボタンの入力待ちができるBTWAIT命令を作りました。ぜひ、使ってみてください。
7そうだね
プレイ済み
返信[19]
親投稿
おちゃめ ochame_nako
めのういしさんへ 参加ありがとうございます。 要するにプレイヤーが2回連続同じ手を出したらそれに勝てる手か、それと同じ手を出すということですか? 2回連続同じ手を出さない場合はどうするのかで強さが変わりそうですが、RND(3)よりはゲーム的に良いものになりそうですね。 けいさんへ 参加ありがとうございます。 1日足らずという短い期間でしたがちゃんとしたゲームになっていますね。 とりあえずノーヒントでプレイしてみましたが、3回プレイしての平均勝率は45%でした。(3回目のみ50%越え) 私とはまた異なるやり方でプレイヤーの手を分析しているので参考になりました。 プログラムリストの方はまだ見てないのですが、後からじっくり見させてもらいます。 それでは、みなさんありがとうございました!
0そうだね
プレイ済み
返信[18]
親投稿
おちゃめ ochame_nako
ゆうたんさんへ ゲームとして考えるならば後出しでやってもいいですね。 プチコンのようにプログラムリストが目に見えてしまうとイカサマしていると分かった途端に萎えてしまう可能性もありますが。 きのっこさんへ 相手と自分との差分をとって剰余を計算するというのは私のプログラムでも使用していますが、その原型は30年前にポケコンで野球拳ゲームを作っていて自力で思いつきました。 雑誌掲載のプログラムでさえ大抵はIFを9個とか7個とか使っているためこの短縮化には感動しました(笑) ちなみに今回作った思考ルーチンの原型も30年前に自力で思いついたものです。 こうやまさんへ やっぱりじゃんけんと言えば野球拳ですか(笑)
1そうだね
プレイ済み
返信[17]
親投稿
おちゃめ ochame_nako
この思考ルーチンはあくまで一例ですが、じゃんけんもただの運ゲーではなく戦略性のあるゲームにすることが可能であることが分かると思います。 じゃんけんは定番的な思考ルーチン、正解となる思考ルーチンというものがないため自由な発想で作ることができます。 そういう意味では初心者から中級者まで幅広くプログラミングの練習素材として有効であると言えるでしょう。 今回はただのシンプルなじゃんけんでしたがパーで勝ったら3ポイント、チョキなら2ポイント、グーなら1ポイントというポイント制にしたり、別のゲーム性を加えるとまた思考ルーチンが異なるものになってきます。 思考ルーチンというのは自分だったらこの場合はどうするのかをプログラムとして記述するだけでいいのでぜひ皆さんさまざまなゲームの思考ルーチンにチャレンジしてみてください。
1そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
このゲームの思考ルーチンを簡単に説明するとプレイヤーの出した手のパターンを分析して次にプレイヤーが出す手を予想してそれに勝てる手を出しています。(イカサマは全く無し) パターン分析はグーの後、チョキの後、パーの後にグー、チョキ、パーのいずれの手を出しているかという9通りのパターンnの累積を見ています。 ただし、9パターンの各回数を単純にカウントするだけではパターンの変化に追従できないため一手古くなるごとに重みを半減しています。 こうすることでコンピュータの手を予想してパターンを変えてきたらその変えてきたパターンに対応できるようになります。 100回プレイで普通にやったら勝率は30~40%くらいになると思います。(50%を越えたらすごい)
0そうだね
プレイ済み
返信[15]
親投稿
おちゃめ ochame_nako
これは以前mkIIで作った1画面プログラムをほぼそのまま移植したものなのでけいさんが作ったものと比べると画面はしょぼいです。 ちなみにBボタンがグー、Yボタンがチョキ、Xボタンががバーです。 これは、B、Y、Xの文字の形で簡単に類推できる、かつ、下から順番にグー、チョキ、パーの配置になっているのでじゃんけんゲームではおすすめのボタン配置です。
0そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
私が作ったじゃんけんゲームを公開します。公開キー【K53ENVQE】
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
私もPC-1245以来ずっとシャープのポケコンを使い続けてきただけにその歴史が終演するのは非常に残念です。 PC-1245はメモリが1486バイトと少なくFOR~NEXTの1000回ループが42秒という激遅だったけどそれでもそれがあったからこそ短いプログラムを作ったり速いプログラムを作る技術が身に付きました。 お陰でPC-E500を手に入れた時にはメモリがすごく多く超高速という思いをしました(笑) PC-E500はオールBASICでもOPASを使えばドット単位スクロールが可能でしたし。
1そうだね
プレイ済み