Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
170 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90154
次のページ(過去)
プレイ日記
おちゃめ ochame_nako
今回は私がQSP(WIDTH 16使用時の1画面プログラム)などを作る際に考えていることについて書いていきます。 QSPに興味がある人はぜひご覧になってください。 ちなみにこのスクリーンショットはカラー対応のお絵かきソフト「SIMPLE PAINT QSP」です。(使い方や公開キーは私の過去のプレイ日記を参照)
15そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
プチコン3号は比較的メモリが多く、BASICの割には高速であり「やる気」と「時間」と「技術」さえあればスーファミやGBAクラスの市販ゲーム並のものが作れてしまいます。 そこまでのものを作るのは個人では困難ですが、あれこれやりたいことは思いつくけど結局やりたいことが多すぎて完成しないという人も少なくないのではないかと思います。 私自身も1つの作品に集中できるのはせいぜい1ヶ月くらいなので大作は途中で飽きてしまうことが多いです。 そういう飽きっぽい人にオススメなのが、OSP(EDITモードのI画面に収まるプログラム)やQSP(WIDTH 16で文字拡大時にEDITモードの1画面に収まるプログラム)です。 改行コードを画面にすべて含めた場合にOSPならば最大1333文字、QSPならば最大293文字記述可能です。
0そうだね
プレイ済み
返信[28]
親投稿
おちゃめ ochame_nako
ポケコンだとRADIAN命令、DEGREE命令ですべてラジアン、度で計算が可能になったりするので、プチコン3号でもOPTION DEGREE、OPTION RADIANで同じようなことができるようになると初心者でも分かりやすくなって良いかもしれませんね。
1そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
この「あひる型の何か」を実際に装着することは可能なのでしょうか?
0そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
作った私でさえ作ってから数ヶ月もすれば「限界のQSP」であっても無駄な部分がたくさん見つかってしまいます。(作っている最中はなかなか気づかなかったり、新しいリスト短縮方法を見つけたりするため) 無駄な部分を短縮したバージョンを発表すること自体は容易なのですが、私はQSPというのはQSPという制限でどれだけのことができるかに価値を置いているため短縮するだけでは無意味で短縮したことで何ができるかを重視しています。(短くするのは「できること」を増やすために他ならない) とはいえ、SIMPLE PAINT QSPは作ってから半年以上経ちますが依然として無駄な部分が見つからないのは限界まで完成しつくされているのか、自分が成長できてないだけなのか悩んでいます。
1そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
nobuさんへ やっていることは画面に鍵盤を表示して鍵盤をタッチしたらタッチしている鍵盤に応じた音を出す、鍵盤をタッチしてない場合は音を消す、ボタン操作で音色を変更するというだけのことなので難しいことは一切していません。 とはいえ、これをQSPにすべて導入するのは簡単ではないですが、 普通に作れば鍵盤表示だけでもQSPに収まらないと思います。
1そうだね
プレイ済み
返信[17]
親投稿
おちゃめ ochame_nako
素早さなどのパラメーターを導入の際はドラクエのように攻撃の順番に影響を与えるだけでなく相手よりもたくさんの回数攻撃できたりとか素早い敵には攻撃が直撃しにくく(乱数の幅が大きい)遅い敵には攻撃が直撃しやすい(乱数の幅が小さい)とか様々なやり方があるので自分が作りたいRPGに適したものを考えるのも楽しいですよ。
3そうだね
プレイ済み
返信[16]
親投稿
おちゃめ ochame_nako
以前、ドラクエ方式をベースにしたDAMAGE関数を作ったのでよかったら参考にしてみて下さい。 https://miiverse.nintendo.net/posts/AYIHAAAEAAAFVHwqYIXAtQ
3そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
-がいくつでも重ねられるのに対して(数値の前に付いている)+は1つでもエラー ?+1 Syntax error OK
2そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
まずは、ほしけんさんの検索ワードの講座を読むのがオススメですが、プチコン3号を使っていて分からない部分があれば「プチコン3号 入門講座」と検索すれば詳しく書いてある講座が見つかります。
2そうだね
プレイ済み
返信[29]
親投稿
おちゃめ ochame_nako
「比較演算を省略しない」というのはIF B AND #A THEN ~とするのではなくIF (B AND #A)==#A THEN ~とするということです。 後者の方法だとANDやORを「かつ」、「または」の代わりとして使っても正しく動作するし複数ボタンの入力判定も簡単に行うことが可能です。
2そうだね
プレイ済み
返信[28]
親投稿
おちゃめ ochame_nako
Z=0、1、2、・・・の時に値に応じてジャンプさせたい場合はIFではなくON Z GOTO @EXE1,@EXE2,@EXE3,@EXE4,@EXE5のようにすると便利だし、分かりやすいと思います。 ちなみにIFで条件式を記述するときは比較演算子(==、!=、>、<などの記号)を省略せずに書いておけば「&&とANDの違い」「||とORの違い」を気にする必要はなくなります。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
ちなみにANDを使ってボタン入力判定を行う場合はB AND #Aと(B AND #A)では結果が変わる場合があるため()を付けるのを忘れないようにしましょう。 A、B、X、Yボタンのうちどれかが押されたらBEEPが鳴るようにするにはIF (B AND #A+#B+#X+#Y)>0 THEN BREAKで実行可能です。この場合の>0は省略が可能ですが、なぜ省略できるかの理由が分かるまでは省略しないことをオススメします。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
Aボタンは16、Bボタンは32というボタンコードが割り振られていますが、これを覚えられないという人のためにプチコン3号では定数リテラルというものが用意されています。#Aは16、#Bは32となります。 WHILE 1  B=BUTTON()  IF B==#A THEN BREAK WEND BEEP 50 これでAボタンが押された場合を判定できます。 複数ボタンを判定したい場合は(B AND 調べたいボタンコード)==判定したいボタンコード で可能です。 上記のIF文のところをIF (B AND #A+#B+#X+#Y)==#A+#B THEN BREAK とすればA、B、X、Yボタンを調べA、Bボタンが両方押されている(X、Yは押されてない)場合にBEEP 50が鳴ります。 これを覚えておけばいかなるボタン入力においても簡単に判定が可能です。
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
プログラムはコンピュータに対する様々な指示を羅列したものです。そして、コンピュータは指示された通りに動くため正しく指示を与えないと正しく動作はしません。 1つ前のコメントのツララさんのかくれんぼのルールで考えると「プレイヤー」「鬼」などの言葉が分からない人にも分かるように伝える感じで書きます。プチコン3号が理解できるのは用意された命令や計算式なのでそれを組み合わせてプチコン3号が分かる形で説明していくわけです。 「鬼に見つかる」とはどういう状態を指すのか、「隠れる」とはどのようにして行うのかをすべて考える必要があります。難しそうですが、逆に言えば誰も知らない貴方が考えたオリジナルのゲームも自由自在に作ることが可能になるということです。 プログラムがある程度作れるようになると非常に楽しいものになるのでぜひ頑張ってください。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
私がたまたま見つけたTips プチコン3号において文字列と数値の評価を行うと3を返す。 本来ならばType mismatchになりそうですが、これが3を返すことを利用することでプログラム上で型を取得することが可能になります。これによって変数に入っている「文字列の場合」「数値の場合」で異なる処理をさせることが可能になります。
2そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
プチコン3号において実数型よりも整数型の方が高速ですが、常にそうとは限りません。 例えば私が実際にver.3.3.1(New3DS使用)で計測してみたところA=A+1は平均293ナノ秒だったのに対してA%=A%+1は平均323ナノ秒でした。 これは実数型と整数型が混在するプログラムにおいてプチコン3号のコンパイラにおいて最適化処理が行われる際に型変換のオーバーヘッドが発生してしまっているためと推測されます。 ちなみにOPTION DEFINTを実行しループ外でB=1としておいてA=A+Bと記述すれば323ナノ秒→274ナノ秒に高速化可能です。 こんなコンパイラの処理を考えたピンポイントの高速化よりもアルゴリズムの改善を行う方が高速化の面で有利だと思いますが。
2そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
基本的にプチコン3号においてNEXTのように命令の後に変数名が省略できるもの引数が省略できる命令において省略をした場合はコロンが省略できません。 これは、MIKIさんが書かれているように変数名を見るためだと思います。 プチコン3号では意図的にコロンを可能な限り省略可能にする仕様にしています。
1そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
うえこうさんへ NEXTの後のコロン(:)が無かったらラベルとして認識されないため必要です。(NEXTの後はコロンが省略できない)
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
プチコン3号では初期のバージョンでは四則演算でさえ整数型は整数型として処理されていました。 例えば、65536*65536=0となっていました。 しかし、現行バージョンでは演算結果が整数型の範囲を超える値の場合は自動的に実数型として処理するようになっています。 以上のことから推測して実数型と整数型で挙動が異なるのは仕様と考えられるし、ABS(&H1000000)が負数になるのはこの場合のみ整数型の範囲を超える演算結果になるという例外処理が行われてないため不具合と考えられます。
1そうだね
プレイ済み