Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1142 143 144 145 146 147 148 149 150 151 152 153 154
次のページ(過去)
返信[5]
親投稿
おちゃめ ochame_nako
IF ~ THEN GOTO ~ のようにTHEN以下にGOTOのみが書かれている場合のみ「THEN」もしくは「GOTO」が省略できます。 私のサイトでも書いていますが、プチコンでは省略できるものは多数あります。 IF B AND 16 THEN ~というのもすでに省略された状態ですが、このように無意識に省略形を使っている場合も多いですね。
1そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
私が自分のサイトのプチコン3号入門講座で詳しく書いていますが、プログラムを作れるようになるためには「何を作りたいのかを明確にする」「それを自分で作れる範囲まで簡略化する」「その処理をより細かく具体化していく」ということが必要です。 プチコンを始めとするコンピュータは人間が指示した通りに動作するためそれを指示する側が何をしたいのかが分からないと正しい動作をさせることはできません。したがって、やりたいことを具体化するというのは非常に重要です。 最初のうちは難しいかもしれませんが、1つずつ順番に覚えていけば誰でも作れるようになりますので頑張ってください。ある程度作れるようになると非常に楽しいですよ!
0そうだね
プレイ済み
返信[28]
親投稿
おちゃめ ochame_nako
けいさんへ プログラミングをゼロから始めた初心者や今後他の言語を習得する場合を考えると「かつ」は「&&」で覚えるのがベターですが、BASICでは古くからビット演算子「AND」を「かつ」の代わりに用いていてプチコンにおいてもmkIIまではそうでした。 それを考えると「&&」よりも「AND」を先に教えるのが初心者にとっては有用と私は考えています。 それに「AND」で正常に動作しているプログラムを「&&」に置き換えても正常に動作するのに対して「&&」で正常に動作しているプログラムを「AND」に置き換えたら正常に動作しない場合があるため初心者に教える場合は最初は比較演算を省略せずにANDを使用するというのを徹底させておいて後から「&&」を使うのがベターであるというのを教えたいと私は考えています。
0そうだね
プレイ済み
返信[25]
親投稿
おちゃめ ochame_nako
ヒロフミさんへ 私もトリッキーな書き方を多用していますが、それは初心者にはあまりオススメしません。 いろいろ試して仕組みを理解した上で使用するならば全く問題ないんですけどね。
0そうだね
プレイ済み
返信[24]
親投稿
おちゃめ ochame_nako
うくじーさんへ ビット演算と論理演算の違いは最初のうちは難しいかもしれませんが、それが分からなくてもIF文においては比較演算(「!=」や「==」など)を省略せずに書けば気にする必要は全くありません。 もやしもどきさんへ 「分からないうちは比較演算を省略しない」というのが初心者にとっては最も分かりやすいと思います。 「比較演算を省略しない場合の書き方」が今回の焦点となっている部分でBUTTON関数においては「(B AND 16)!=0」や「(B AND 16)>0」ではなく「(B AND 16)==16」が最も適切だと私は考えています。 初心者のうちからそうやって覚えておけば「このプログラムがなぜ正常に動作しないのか分からない」という心配は皆無になります。
0そうだね
プレイ済み
返信[23]
親投稿
おちゃめ ochame_nako
よっぱらいさんへ それはIF B AND 48 THEN ~と同等になりますが、それだとABボタンの同時押しの判定はできてないんですよね。 スーさんへ 自分で覚えるならば自分で分かりやすい覚え方をするのが一番ですが、講座などを書いたり他の初心者に教える場合はなかなかそういうわけにもいきません。 初心者が例えばIF A==1 AND B==2 THEN ~ みたいなIF文を見たときにANDが「かつ」ではないと認識したらどのように理解させるかが問題になってしまうのが難点ですね。
0そうだね
プレイ済み
返信[22]
親投稿
おちゃめ ochame_nako
けいさんへ(続き) Aボタンを押している場合はB AND 16の値は16になるため「!=0」よりは「==16」の方が自然だと私は思います。 比較演算を省略して誤動作する原因は無意識のうちに「!=0」を行っているためなのでそれを防止する役割もあります。 また公開されているプログラムの多くはIF 条件式 AND 条件式 THEN ~で記述されているため結局「&&」だけの説明ではなく条件式の結合としてANDの説明も必要になってしまいます。
0そうだね
プレイ済み
返信[21]
親投稿
おちゃめ ochame_nako
けいさんへ 初心者にとって分かりやすいかどうかはどのようなステップアップをとるかで決まると思います。 適切なステップアップとそれに至ることが可能な情報の有無が重要となるでしょう。 私のサイトのプチコン3号入門講座ではIF (B AND 48)==48 THEN ~ でABボタン同時押しの判定が可能になるまでが分かりやすく説明しています この方法ならばビット演算の仕組みも2進数も知らなくても10進数だけで対応が可能です。 しかも、基本形を覚えるだけですべてに対応できるため覚えることが少ないのもメリットです。
0そうだね
プレイ済み
返信[20]
親投稿
おちゃめ ochame_nako
コータさんへ その辺はここで書くと長くなるので私のサイトの入門講座で書いていく予定です。 もっとも今回入門講座で書いた基本的な使い方だけでもほぼすべての状況には対応できると思います。 かっちんさんへ ビット演算子ANDを使うのは他のボタンを押した状態でAボタンが押されているかを判定可能にするだけなのでAボタン以外を押さないことが前提ならばそれで問題はないです。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
コータさん、うくじーさんへ IF (B AND 16)==16 THEN ~ という基本形さえ覚えておけば同時押しだろうとどんなボタン判定だろうといとも簡単に記述できるので超オススメです。
1そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
うくじーさんへ なぜオススメできないかというとプログラムがちゃんと動かないという原因を招いてしまうからです。 例えばAボタンとBボタンの両方が押されたかどうかは IF (B AND 16) AND (B AND 32) THEN ~ という感じの記述になってしまいがちです。(ANDを&&で記述するというのもビット演算と論理演算の区別がつく人以外はオススメできない) これが、基本通りに書けば IF (B AND 16)==16 AND (B AND 32)==32 THEN ~ で正しく動作します。 また、この基本形の意味をちゃんと理解していれば IF (B AND 48)==48 THEN ~ とすることでABボタンの同時押しの判定も簡単に可能になります。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
コータさんへ Aボタンのように単独のボタンが押されているかを判定するのならばその考えで間違いないですが複数ボタンが押されているかを判定したい場合はそれだとまた問題が発生する場合があるんですよね。
0そうだね
プレイ済み
投稿
おちゃめ ochame_nako
Aボタンが押されているかどうかを判定するのに B=BUTTON() IF B AND 16 THEN ~ というような書き方をしている人は非常に多いと思いますが、これはあくまで省略形であり省略せずに書こうとすると IF (B AND 16)==16 THEN ~ となります。(IF (B AND 16)>0 THEN ~ も特定条件下でしか使えない) どういう場合に省略できるのかを理解して使うのであれば問題ありませんが、そうでない場合は省略形はあまりオススメできません。
7そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
個人的にはX、Yの移動量を別の変数に入れておくのがオススメです。 これならば省略形が使える条件を満たせるので4つのIF文で簡単に記述できます。 @LOOP B=BUTTON() VX=0:VY=0 IF B AND 1 THEN VY=-2 IF B AND 2 THEN VY=2 IF B AND 4 THEN VX=-2 IF B AND 8 THEN VX=2 A=(ABS(VX)+ABS(VY))/2 IF A THEN X=X+VX/A:Y=Y+VY/A SPOFS 0,X,Y VSYNC GOTO @LOOP
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
縦横移動時は2ドットずつ、斜め移動時は縦横1ドットずつ動かしたいならば B=BUTTON() IF (B AND 15)==1 THEN Y=Y-2 IF (B AND 15)==5 THEN X=X-1:Y=Y-1 (以下略) のように基本通りにANDを使っても8方向の判定を行えば記述できます。 IF B AND 1 THEN ~のような省略形はどんな場合に省略できるのかを正しく理解していないと使うべきではなく基本に忠実にIF (B AND 1)==1 THEN ~と書くのをオススメします。
1そうだね
プレイ済み
返信[17]
親投稿
おちゃめ ochame_nako
プログラムは「自分が作りたいものがある」「作りたいものを自分で実現可能なレベルまで簡略化できる」「簡略化したものの流れを母国語で具体的に説明できる」という条件さえ満たしていれば誰でも作れるようになります。 自分では実現が難しいものを作ろうとしたり、具体的に作りたいものをイメージできてないから何をどうやっていいのかが分からないということになってしまっているのだと思います。 その辺については私のサイトのプチコン3号入門で詳しく書いているのでぜひそれを読んでもらうのが一番ですね。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
グラフィックはGCOPY命令を使えばスクロールが可能です。 画面全体コピーをすればそのまま表示されるだけですが、スクロールさせたい量だけずらしてGCOPYすればスクロールしているように見えるという単純な原理です。 詳しくは私のサイトの「プチコン3号入門講座 グラフィック表示をしよう」で書いています。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
ANDやORは論理演算子ではなくビット演算子なのでIF文で使う際には論理演算子とは結果が変わります。 IF BUTTON() AND 16 THEN BEEP IF BUTTON() && 16 THEN BEEP 前者はAボタンを押した時にBEEPが鳴りますが後者はどのボタンを押してもBEEPが鳴ります。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
いきなり理想的なゲームを作るというのは難しいためまずは簡単なものから少しずつ作っていきましょう。 コース表示を最初に行い、それから道路を動かしてただ運転するだけのゲームにしましょう。 タイムアタックオンリーならばこれで十分遊べます。 敵を出すのはそれからです。 まずは、コースの表示ですがこれは例に挙げられているような擬似3Dのレースゲームの場合は三角関数などは不要です。 最初にまっすぐなコースを用意します。 それを横方向に切り刻んでカーブの大きさに応じて少しずつずらしていけばカーブの表示の完成です。 擬似3Dレースゲームの場合はそれっぽく見えていればOKなのでずらす量は自分で適量と思う大きさで良いです。 長くなるためプチコンmkII用の擬似3Dレースゲームの初心者講座ならば私のサイトにある「プチコン講座 3Dレースゲーム」で検索してそれを参考にしてみてください。
0そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
これはプチコン3号では整数同士の計算は整数型として処理されるためです。 2147483647+1の計算結果を見れば一目瞭然です。 これを回避するには.0を付けるという方法以外にも最後に#を付けて浮動小数点演算であることを明確にしてやればよいです。 ちなみに整数型で処理されるのはEDITモードでも同様なので高速化目的で整数型の変数を使用してもほとんど速度が速くならないんですよね。
0そうだね
プレイ済み