Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
192 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112154
次のページ(過去)
返信[5]
親投稿
おちゃめ ochame_nako
うえこうさんへ プログラムの動作中に別スロットでプログラム実行するというのは様々なプログラムに応用できると思います。 VAR("1:A")でプログラムスロット1の変数Aが取得可能になるのですが、事前にUSE 1を実行してさらにGOSUBで実行してグローバル変数を有効化(実体化)させる必要があります。
1そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
原理はすごく単純で入力した式を別のプログラムスロットで実行してその値を戻しているだけです。 そのためプチコン3号で実際に実行できるすべての式が構文解析不要でその値を取得できます。 このRVAL ver.2.0がver.1.0と比べて改善されたのは次の4点です。 (1)プログラムリストの大幅な短縮 (2)占有プログラムスロットを2つから1つへと減らした (3)STR$の都合で有効桁数が6桁しか無かったのが15~16桁(プチコン3号の実数型の仕様)になった。 ただし、全桁表示するにはFORMAT$を上手く使うか、簡単に行いたいならば私の自作関数のPSTR$を使用する必要がある。。 (4)プチコン3号で実行できない式の値を求めようとしてエラーが出た際に次に実行するためにプログラムスロット1の内容を削除しなければならないのだけどその処理を自動で行うようにした。
1そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
なお、プログラムスロット1は実行用に使用しているためこのRVAL関数はプログラムスロット1以外で実行してください。 公開キー【 D4E1E73 】、ファイル名「RVAL」です。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
RVAL関数を使えばこのようにたったの1行で超簡易関数電卓を作れます。  @L:LINPUT A$:?RVAL(A$):GOTO@L 8*8*PI()と入力すれば半径8の円の面積を求められます。 ちなみにRVAL関数と合わせても余裕でQSPに収まるコンパクトサイズです。(RVAL関数を内包している「簡易関数電卓QSP」もコア部分をこのver.2.0にすることで大幅なリスト短縮が可能)
1そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
例えばA=RVAL("2+3*4")でAには2+3*4を計算した14という値が入ります。 A=RVAL("SIN(RAD(30))")でAには0.5という値が入ります。 もちろん、関数には自作関数も使用可能なので便利な関数を作れば計算がすごく楽になります。 私が以前作った「簡易関数電卓QSP」用の拡張関数ライブラリも戻り値があるもの(RETURN 0になってないもの)はそのままで使用可能です。
1そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
文字列で表記された式の値を求めるRVAL関数のver.2.0ができました。 RVAL(”2+3*4”)とすれば演算優先順位通りに計算してその結果を得ることができます。 なお、プチコン3号のすべての演算子、関数が使用可能です。(公開キーと解説はコメントにて)
6そうだね
プレイ済み
返信[36]
親投稿
おちゃめ ochame_nako
欲しい命令等は速度さえ気にしなければ大抵の場合は自作関数でカバーできる(HARDWARE、FADE、CLASSIFY、GTRI相当の命令も事前に作っていました)ので個人的には公式初心者講座の完成を待っています。 あとダウンロードされた数がアップロード者本人のみ見える状態にするというのならばそれほど難しくは無さそうだし「(共感やコメントがなくても)自分の作品を見てくれている人が居る」というのが初心者の励みになると思います。(本音を言えば私自身が知りたい)
7そうだね
プレイ済み
返信[35]
親投稿
おちゃめ ochame_nako
整数同士の演算の解は基本的に整数型になりますが整数型で表せる範囲外は自動的に実数型になります。 しかし、例外もあるため注意してください。 例 65536*32767→整数型   65536*32768→実数型   (※A%の値は65536の時)   A%*32768→整数型(演算結果-2147483648)   65536/2→整数型   A%/2→実数型    VAL関数は100桁以上の時は0を返します 例 VAL("1"*100)の値は0
1そうだね
プレイ済み
返信[34]
親投稿
おちゃめ ochame_nako
配列変数ではない文字列変数A$においてA$[N]でN+1番目の文字を読み出しが可能なのでMID$を使わなくても任意の1文字を取り出す処理が超簡単になります。 A$="ABC"のときA$[1]="DE"と記述すればA$="ADEC"となりSUBST$も不要になります。(置き換える文字数は0文字でも2文字以上でも良く0文字にすればその文字のみ削除できる) これは変数に限った話ではなく"ABC"[N]のような書き方も可能でこれを使えばテーブル処理も超簡単になります。 テーブル処理の実際の活用例はスライドパッドで快適な8方向移動を可能にするDSTICK関数を参照してください。 https://miiverse.nintendo.net/posts/AYIHAAAEAADHVHhveJfmfA
1そうだね
プレイ済み
返信[33]
親投稿
おちゃめ ochame_nako
プレイ中に頻繁にセーブする時にダイアログが出るのが嫌な場合は別のプログラムスロットに一時セーブをすれば最初の1回と最後の1回しか出なくなります。(最後にその内容を普通にセーブするのを忘れずに!) 1回もダイアログが出ないようにしたければファンクションキーに書き込めばOKです。 1つのファンクションキーには最大256文字書き込むことが可能でKEY 1 OUT A$もしくはA$=KEY(1)で読み出せます。 ただし、ファンクションキーで入力可能な文字は最大128文字となります。(256文字中のラスト128文字) 数値を文字列化する場合は私の自作関数PSTR$が便利です。 https://miiverse.nintendo.net/posts/AYIHAAAEAABEVRTp-ZVMIg
1そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
1コメに収まらなかったので追記しますが、まずはプログラムを作ることを楽しんでください。 そのためには作りたいものを作ることが必要になるでしょう。 ただし、ほしけんさんも書いておられるようにいきなりRPGを作るのは難しいのも事実です。 自キャラのスプライトをBG画面上で動かすアクションゲームというのは一見するとRPGから離れているみたいですが、ボタン操作で背景の上をキャラが動くというのはRPGのフィールド動作の基本となります。 つまり、これができることでRPG作りが一歩前進するわけです。 簡単なものでも完成させていくことが初心者にとっては重要になってきます。 楽しみながら簡単なゲームから完成させていきましょう。
2そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
文字列と数値の比較演算が3になったのはver.3.1.0からですが、これによって私も文字列型、整数型、実数型の型判別を行えるSUFFIX関数を短いリストで作ることが可能になりました。 https://miiverse.nintendo.net/posts/AYIHAAAEAADHVHhy7aqJ6A
0そうだね
プレイ済み
返信[25]
親投稿
おちゃめ ochame_nako
infを出す最短は1E308*2ですね。 指数表記はリスト短縮で非常に有用で-3E5でオレンジ、-7E5でピンク、-8E4で肌色などが選択可能です。 黄色は-#Lで選択できます。 使用例 GCLS-#L リスト短縮に関する事柄ならばいくらでも書けますが、使う人はほとんど居ないと思うのでこれくらいにしておきます。
2そうだね
プレイ済み
返信[38]
親投稿
おちゃめ ochame_nako
確かに私は昔は1KB程度しかメモリを搭載していない機種を使っていたためリスト短縮は必須テクニックでしたが、比較的メモリが潤沢なプチコン3号ならばOSP(1画面プログラム)やQSP(WIDTH 16の1画面プログラム)のように文字数に制限があるプログラムを作らない限りはほとんど不要なテクニックだと思います。 処理の高速化においてもWHILE~WENDとREPEAT~UNTILの速度差なんて微々たるものです。 速度に不満を感じた際はアルゴリズムの改良などで高速化をすべきでしょう。 文字数制限のあるプログラムは作らず、速度面で不満があるプログラムも作らないというのであれば自分が作りやすいように作ればいいと私は思います。 趣味で作るプログラムならば書きやすさ優先で何ら問題はありません。 「自分が作っていて楽しい」のが一番優先されるべきですからね。
3そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
RPGと一言で言ってもすごく大きな分類では「フィールドの移動」「敵との戦闘」「各種イベント」があります。 いきなりすべてを作るというのは初心者には難しいのでこの中からまずはどれかを選択してみるのが良いです。 戦闘シーンを作る場合はコマンド選択によって攻撃、魔法、アイテム使用とかが可能ですが、さらにシンプルにして1対1で攻撃だけの戦闘シーンをまず作ってみましょう。 それだけでもダメージ計算だけではなく攻撃が命中したかの判定や敵をやっつけたかどうか、自分がやられたかどうかの判定などが必要になります。 このように最もシンプルな形を考えてそれを作り徐々に肉付けしていけばRPGであろうと作ることができます。 プログラミングはプチコン3号にどのように動作して欲しいのかを指示していく作業です。 アバウトな指示だと理解できないので細かく具体的に指示していく必要があります。
4そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
負数を含めた10進数を2進数に変換する方法ですが、私のBIN$関数もしくは簡易関数電卓のBIN()関数を使用すれば簡単に求めることが出来ます。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
InDoorさんの方法が一番オススメですが、単に短くしたいのであればIF-65AND BUTTON(2)THEN ~とすれば良いでしょう。 プチコン3号の整数型は32bitですが、便宜上16bitで表記してみます。 負数は補数で表記されるためー65を2進数で表記すると1111111110111111になります。 1111111110111111 =-65 0000000001000000 = 64(Xボタン) これを見るとXボタンを押したとき BUTTON()とー65のANDは0になり、それ以外のボタンでは0以外の数になるためXボタン以外のボタンを押したかどうかが判定可能になるのが分かると思います。
0そうだね
プレイ済み
返信[15]
親投稿
おちゃめ ochame_nako
あまさとしおんさんへ 整数をメインで使うならばそれがベターな方法ですね。 よっぱらいさんへ プチコン3号では定数1を「1」と記述したら整数型、「1.0」と記述したら実数型になるのですが、実数型の1.0という定数は循環小数ではなく正しく1を示しています。 したがって、1.0*10で10.0(実数型の10)という値を得られます。
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
「ダメージを表示する」というピンポイントな命令はありません。 RPGで敵に与えるダメージや敵から受けるダメージを計算したいというのであれば攻撃力や防御力などを元に考えると良いでしょう。 ドラクエならば 攻撃力÷2-防御力÷4 という式がベースになっています。 ドラクエ方式で良ければこちらも参考にしてみてください。 https://miiverse.nintendo.net/posts/AYIHAAAEAAAFVHwqYIXAtQ
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
プログラミングのスキル向上の最も基本的な部分はリストを入力することです。 そして、入力したものを実行したり、改造したりすることで自分で分からない部分を明確にできます。 これはプログラミングのスキル向上には欠かすことができません。 ZEXさんが紹介しているサイトは一人で学習できるように詳しい解説を付けています。 確かにここで聞けば大抵の場合は何らかの回答は得られると思います。しかし、「何が分からないのか分からない状態」だとその回答の意味さえ分からないという可能性も高いです。
2そうだね
プレイ済み