Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153154
次のページ(過去)
返信[20]
親投稿
おちゃめ ochame_nako
けいさんへ 「手計算で合っていることが正解の条件」ですが、これはループ回数と終了時のIの値を回答する場合の表記に関する部分だけです。 思いついた条件はすべて書いてみてください。 普通の問題ならばけいさんが書いた(4)と(5)だけで正解ですが、今回は普通の問題ではないので(だから、難問扱いになっている)
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
VSYNCはタイミングを取る命令です。 プチコンは表示更新、ボタンやタッチの入力状態の更新は1/60秒ごとに行われているためVSYNCを外さなければならない特別な理由がない限りは入れておいた方がいいです。 特にBUTTON(1)、BUTTON(2)、BUTTON(3)ではVSYNC 1を入れておかないと正常な動作が行えません。(60fpsちょうどで動作させることが前提) あとBUTTON()のような引数を省略した場合はBUTTON(0)と同等になります。 これはヘルプにも省略形や使用例として掲載されているので問題なく使ってください。 VSYNCやBUTTON関数についてもっと詳しく知りたいならば「プチコン3号 VSYNC BUTTON関数」のようなキーワードでネット検索すれば非常に詳しく解説しているサイトが見つかります。
0そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
回答でFLOOR関数を用いている人も居ますが、プチコン3号では誤差で正しい結果が出なくても手計算で合っていれば正解とします。 むしろ、手計算で合っていることが正解の条件です。 これはかなり大きなヒントですね! ちなみに締め切りまでは何度でも回答はOKなのでこれを見てやりなおしたい人は再チャレンジしてみてください。 現時点では正解者はまだ居ませんが明日までには正解者が現れそうな雰囲気です(笑) けいさんへ この問題は問題文のみで考えれば良いのでデフォの実数型で回答してもらって結構ですが、OPTION DEFINTが実行された状態を考慮してもらってもOKですよ。 ただし、現状よりさらに条件分岐が増えるとコメント1つには回答が収まらなくなりそうです(笑)
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
Newあっキーさんへ 私はスプライトオンリーでの立体視を考えていましたが、その手がありましたね! 上記プログラムの約2倍速改造版(デフォ解像度で30fps動作)を立体視対応にしてみたところスプライト240個使ってデフォ解像度で28fps出ました。 落ちたのはたったの2fpsです。 プチコン3号すごい! 即興で試しただけなので奥行き計算は手抜きですが、ちゃんとやっても速度が大きく落ちることはないでしょう。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
自分で書いておいて何だけどこの問題は難易度が高すぎて誰も正解者が出ないかも・・・(笑) 以前のボタン入力判定の問題よりも格段に難しいです。
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
回答例(あくまで書き方の例であり、正解例ではない) (例)A<Bの時、ループ実行回数はB-A+1、終了値はB このような感じで条件と実行回数と終了値はA、Bを使った式で表してください。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
プチコン3号の中~上級者向けの問題です。 FOR I=A TO B NEXT このFOR~NEXTにおいてA、Bの値によって変わるループ実行回数と終了時のIの値をすべて書いてください。(1つでも抜けていたら不正解扱いにします) 締め切りは3月3日23時、正解者には締め切り後に「そうだね」を付けます。 回答時にはネタバレチェックをお忘れなく!
2そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
けいさんへ 確かにFOR~NEXTってすごく奥が深いですからね。 FOR I=A TO B NEXT というFOR~NEXTがあるときAやBの値によってどのような動作をするのかを完全に説明するのは中級者でも難しいと思います。 WHILEも論理式についての理解がないと厳しいですね。
1そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
私のサイトのプチコン講座でも最初は初心者にありがちなエラーをわざと残しておくことでその後の展開をスムーズに行うのは常套手段として使っているのでASAさんの意図はすぐにわかりましたが、そういう講座などを書いた経験がない人にはなかなかその意図が伝わらないというのがこの皆さんのレスでよく分かりました。 プログラミングに限らず、「うまく行かない→うまく行くためにはどのようにすればよいのか?」というのは教育の現場でもよく使われている手法です。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
このプログラムが初心者向けの講座の一部であるか、サンプルとはいえ完成された作品であるかでどのようにするかが変わってくるでしょうね。 後者ならばエラーの出ない(正常に動作する)状態で公開すべきですが、前者ならば(その後の解説ありを前提として)エラーが出る(正常に動作しない)ことはむしろプラスになります。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
3Dというのが立体視という意味ならばGRP面に描画している関係上無理ですね。 スプライトで描画すれば立体視が可能ですが、現時点のプチコン3号の仕様では無理です。 かなり表示を簡略化すれば可能ですがほとんど別物のプログラムになります。 まぁ平行法や交差法による立体視ならばいくらでも可能ですが(笑)
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
これはIF文による条件判断を行えばエラーを回避できるという次のステップに進むためのプログラムだと思います。 このプログラムのさらに前のステップとしては2~3行のキャラ消去や10行のVSYNC 6がない状態を提示するというのが考えられます。 最初から完全なものを提示するよりは何か足りないものを提示した方が学習効果は高くなります。
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
WHILEよりもGOTOの方が初心者にとってのハードルが低いため私も自サイトのプチコン3号入門講座ではGOTOによるループを多用しています。 「キャラを動かす」というのはキャラを消して新しい場所にキャラを描くというのが分かる良いサンプルプログラムだと思います。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
疑似乱数生成の最初の一歩達成ですね! 乱数っぽいものを作るには下記の3つの方法があります。  (1)タイマー値を使う  (2)テーブル参照を行う  (3)数式を計算して作る 今回は(1)をベースにしていますがそれでも工夫次第では十分に使えるレベルになると思います。(連続してたくさん発生させる必要のある用途には向かないけど) ゲームの面白さは乱数で変わるといっても過言ではないのでぜひ頑張ってください。 「プチコン 乱数 プログラム」などのキーワードでネット検索すると他の人が作ったものを参考にすることができると思います。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
おかっぺさんへ IF B AND 16 THEN ~というIF文はIF (B AND 16)==16 THEN ~というIF文から比較演算となる「==16」を省略したものと考えると分かりやすいです。 あくまでANDはビット演算であり「かつ」という意味はありません。(比較演算を省略しない場合に限り「かつ」と同等の動作をするというだけ) そうすればAボタンとBボタンを両方押しているかどうかを判定するのはIF (B AND 48)==48 THEN ~で良いことがすぐに分かります。(この場合は「==48」を省略すると正しい判定はできない)
2そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
比較演算を省略している場合が分かりにくいのであれば省略する前の形に戻してやるのが一番です。 WHILE AというのはWHILE A!=0から「!=0」を省略したものです。 それが分かればAの値でループさせたり、ループを抜けたりできるのは一目瞭然だと思います。 慣れないうちは「比較演算は省略をしない」という選択肢もあります。(IFでは省略することで判定が変わる場合もある)
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
というわけで、初心者向けのメモ ◎スライドパッドで8方向(0~7)を取得する方法 FLOOR((DEG(ATAN(SY,SX))+382.5)MOD 360/45) ◎スライドパッドで4方向(0~3)を取得する方法 FLOOR((DEG(ATAN(SY,SX))+405)MOD 360/90) ※SX、SYにSTICK OUTで取得したX、Y方向の値が入っている場合  値は0が右方向で反時計回りに1、2、3、・・・となっている。
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
でんぺんさんへ このようなプログラムは作り慣れていれば即興で簡単に書けるレベルなのですが、初心者だと難しいかもしれませんね。 仮に角度はATANで計算できるというのが分かっても8方向の場合だと基準方向に対して±22.5度の範囲で数値を丸めないと不自然になるし4方向だと±45度の範囲で行う必要があります。この丸め方は慣れないとどうやっていいのかなかなか分からないと思います。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
でんぺんさんへ 十字ボタンの置き換えでなくてもスライドパッドで8方向移動するならば今回作ったプログラムを元に簡単に作れますね。
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
シード値を決める方法としてはキャラコードに重みを付けて加算していくのが良いでしょう。 そして、最大値が1未満になるように割ってやればそれがシード値になります。 このプログラムは能力値の高いキャラを逆算によって見つけ出すということが不可能というのもメリットだと思います。 ちなみにADAMはAuto DAta Makerの略です。
0そうだね
プレイ済み