Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
152 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72154
次のページ(過去)
返信[13]
親投稿
おちゃめ ochame_nako
この簡易関数電卓QSPで分数計算を可能にする拡張関数FRACです。 詳しい使い方や動作原理等はこちらのリンク先を読んでください。 https://miiverse.nintendo.net/replies/AYMHAAADAAB2V0fZhCPUUw ちなみに簡易関数電卓QSPのフルバージョンではこのFRAC関数を同梱しています。 フルバージョンは現時点ではver.1.0は公開していますが、ver.2.0は依然として未公開です。(マニュアルが出来てないため)
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
RVAL関数に関してはこちらを参照 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fZKWc_BQ 原理はプログラムを見てのように小数値を元にして一定範囲の誤差に収まる分数を力任せで求めているだけです。(ここで小数値を計算するのにRVAL関数が力を発揮している) そのため分母が大きい値はNew3DSでないと少し時間がかかります。 なお、分母の最大値は100000、分子の最大値は2147483647です。この範囲で表記できない分数は分数表記はキャンセルされて小数値を返すため注意が必要です。(分母の最大値は10万ではなく100万でも1000万でも可能だけどNew3DSでも時間がかかるため上限を10万とした) ちなみにこのFRAC関数の元になったのは昔作ったポケコンプログラムです。(ポケコンだと速度が遅すぎるため上限を999にした)
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
COMMON DEF FRAC(A$) ←AをA$に変更  A=RVAL(A$) ← この行を追加  VAR B,C,D%,I  WHILE !C && I<1E5  I=I+1  B=ROUND(I*A)  C=B*(ABS((B/I-A))<1E-12  WEND  IF C && B<POW(2,31) THEN D%=B:R$=STR$(D%)+("/"+STR$(I))*(I>1) RETURN R$*!!D%+STR$(A)*!D% ← 戻り値部分をAからR$*!!D%+STR$(A)*!D%に変更 END このFRAC関数を簡易関数電卓QSP上ではなく単体で使用する場合は FRAC("3/4+5/6-7/8") や FRAC("0.12+7/25") のようにして””で式を囲ってください。
1そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
この自作関数FRACは私が作った簡易関数電卓QSPの拡張関数となっています。(ver.2.0専用) https://miiverse.nintendo.net/posts/AYMHAAACAAADVHkyf3cD3A したがって、簡易関数電卓QSPを使えば非常に簡単に計算ができますが、次のように変更してRVAL関数を使用することで簡易関数電卓QSPを使用しなくてもこのFRAC関数を単体で使用することが可能になります。(このFRAC関数は皆さんの自作プログラム内で自由に使用してOK)
1そうだね
プレイ済み
プレイ日記
おちゃめ ochame_nako
このFRAC関数は分数計算を行える自作関数です。 例えば FRAC(3/4+5/6-7/8) で 17/24 、FRAC(0.12+7/25) で 2/5 と計算してくれます。 このように小数と分数が混じった計算でも約分された分数の形で結果を出してくれます。
7そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
「努力」というよりも作りたいものがあるか否か、自分で作ることに楽しみを感じられるか否かが重要だと思います。 それがあれば、特に努力とかを意識しなくても自然に覚えられると思います。 ただし、覚えるためにはそれなりに時間はかかります。 一度にあれもこれも覚えるとなると嫌になってしまうかもしれないですが、自分がやりたいことを決めてそれに向けて1つずつ覚えていけば良いです。 学校のテストと違ってプログラミングには決まった正解はありません。 自分が思っているように動けばすべて正解と言えます。 試行錯誤を繰り返して自分のプログラムを見直していけばいつか正解にたどり着きます。 それでも分からない部分はここ(Miiverse)で質問すればいいだけのことです。 分からないことは恥ずかしいことではありません。 「分からないことが(具体的に)分かること」が上達への第一歩ですよ。
4そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
使って頂きどうもです。 数cmくらいの大きさで直線的ではない物体では簡易ものさしQSPが役に立つかもしれませんね。 普通のものさしより精度は1桁上だと思います。 1つ上の私のコメントですが半径11.3ではなく直径11.3ですね。 これで35.5÷11.3を行い355/113が円周率の近似値として非常に有効なことが身をもって体験できました。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
画面にエラーが出てもプチコン3号自体が壊れることはありません。試行錯誤を繰り返して覚えてみましょう。 電卓という作りたいものが具体的に決まっているならば目指す方向性も分かりやすいと思います。 すでに☆Tatsukin★さんも電卓についてコメントしていますが、プログラムというのは同じものを作る場合でも作り方は1通りではなく無数にあります。 どれが正解とか決まっているわけではないので自分が考えた通りに動くものが作れるように頑張ってください。
1そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
足し算以外もできるように数1と数2の間に記号を入力するようにしてみましょう。 WHILE 1  INPUT "かず1=";A  INPUT "きごう=";K$  INPUT "かず2=";B  IF K$=="+" THEN C=A+B  IF K$=="-" THEN C=A-B  PRINT "こたえ";A+B WEND IF K$=="+" THEN C=A+B は変数K$の内容が"+"ならば変数CにA+Bの値を代入するというものです。 要するに+を入力した場合には答えを示す変数Cの値はA+Bになるわけです。 現時点では+と-しか計算できませんが、これはいくらでも増やすことができます。 あとは自力でやってみましょう。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
一度実行するごとにRUNをするのが面倒ならば WHILE 1  INPUT A  INPUT B  PRINT A+B WEND のようにWHILE 1とWENDで囲めば停止ボタンを押すまでずっと実行できます。 繰り返して実行時には下記のように何を入力しているのかを表示していると分かりやすいですね。 WHILE 1  INPUT "かず1=";A  INPUT "かず2=";B  PRINT "こたえ";A+B WEND
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
3+4という文字を解析して3、+、4のように分解すればあとはプログラム上で処理が可能ですが、それは初心者がいきなりやるのは難しいため入力の時点で3、+、4と区切ってから3回に分けて入力するのが良いでしょう。 数値の処理には数値が入る変数、文字の処理には文字が入る変数があります。 文字列変数はA$のように末尾に$という記号をつけ、数値変数はそれをつけません。(変数の名前はアルファベットで自由に決められます) 足し算専用電卓であれば INPUT A INPUT B PRINT A+B のように2つの数字を入力してその前後の値を入れることで作ることができます。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
プログラムというのはプチコン3号に対して「どのように動きなさい」という指示を記述したものです。 したがって、電卓がどのようなものでどういう動きをすれば電卓になるのかをプチコン3号に理解してもらえるように具体的に記述する必要があるわけです。 A=3+4 ?A というプログラムは計算するたびにEDITモードとDIRECTモードを切り替えなくてはならないので面倒ですね。 プログラムというのは「(人間にとって面倒な部分をコンピュータ任せにして)人間が楽をするために作る」ものだと私は思います。 どうすれば楽ができるかというと3+4という式を入力したら自動的に足し算と認識して7を表示するというものです。 入力はINPUTという命令で出来ますが、プログラムで自動的に足し算かどうかを認識させるにはA=3+4のように直接プログラム上で書かない限りは無理です。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
電卓ならばDIRECTモードにして3+4を計算する場合は、PRINT 3+4(もしくは ?3+4 )としてみてください。 ENTERキーもしくはAボタンを押すと答えである7が画面に表示されます。 PRINTというのは画面に表示する命令で3+4という計算結果を画面に表示しているわけです。(?はPRINTと同等に使える) プログラムを作りたいというのであればEDITモードに切り替えて A=3+4 ?A と入力してみてください。 DIRECTモードに切り替えてRUNもしくはSTARTボタンで実行され画面に7が表示されます。 これがプログラムで変数Aに3+4の結果を導入してそれを?で表示しているわけです。
0そうだね
プレイ済み
返信[19]
親投稿
おちゃめ ochame_nako
プログラムというのは基本的に先頭から順に実行して最後の行を実行したら終了するため繰り返し処理を入れないと一瞬で処理が終了してしまうので注意が必要です。 何を作りたいかによって覚える命令は変わってきます。 マニュアルに多くの命令が記載されているからといってすべて覚えなくてはならないということはありません。 必要に応じて1つずつ覚えればいいのです。 と最初は覚えることが多いので大変ですが、それさえ乗り切れば自分が思ったゲームやツールを作ることが可能になるためプログラミングは大変楽しいですよ。
0そうだね
プレイ済み
返信[18]
親投稿
おちゃめ ochame_nako
ACLSで画面の初期化を行います。 XSCREEN 2で上下画面が使えるようになります。 DISPLAY 1で表示画面を下画面に切り替えます。 U=Xは変数Xの値を変数Uに代入、V=Yは変数Yの値を変数Vに代入します。 このようにすることで1フレーム(1/60秒)前のタッチした座標を保持することが可能になります。 TOUCH OUTでタッチしている時間と座標を取得できます。 IF T>1 THEN ~は(変数Tにタッチしている時間が入っているので)タッチ時間が1より大きいならばTHEN以下を実行します。 GLINE U,V,X,Yは1フレーム前のタッチ座標と現在の座標を線で結びます。 VSYNCは表示と入力のタイミングを取ります。(誤動作防止のため基本的に入れてください) WHILE 1とWENDの間を繰り返します。
0そうだね
プレイ済み
返信[17]
親投稿
おちゃめ ochame_nako
プログラムはプチコン3号にどのような動作をして欲しいかをプチコン3号に分かる形で記述したものです。 人間とは異なり、プチコン3号は指示された通りしか動けないため具体的に記述する必要があります。 簡単なサンプルプログラムを用意しました。 ACLS XSCREEN 2 DISPLAY 1 WHILE 1  U=X:V=Y  TOUCH OUT T,X,Y  IF T>1 THEN GLINE U,V,X,Y  VSYNC WEND これで下画面にお絵かきができます。
0そうだね
プレイ済み
返信[10]
親投稿
おちゃめ ochame_nako
すでにレースゲームを作った経験があるならばステップアップとして擬似3Dはオススメできますが、レースゲームの制作未経験ならば真上からの見下ろしゲームを作ってからの方が良いかもしれません。 見下ろし型レースゲームなら簡単に作れるというのでしたら擬似3Dのコースの表示をするところから始めると良いかも知れませんね。 コース表示の方法は無数にあります。私が作った2軸回転プログラムを使っても構いません。
2そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
どちらにせよよくありがちな擬似3Dレースゲーム(ファミコンのレースゲームみたいなやつ)と比べると難易度は高めになっていますね。 進行方向が1方ならば三角関数を使わなくても十分作れますが、このイメージ絵のようなゲームならば回転処理が必要なのでそれ相応の知識も必要になります。 ちなみによくありがちな擬似3Dレースゲームだと奥に行くに従い左右にずらすとカーブが表現でき上下にずらすと下りや上りの坂道が表現できます。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
私も小学の頃に図って円周35.5cm、半径11.3cmを元に計算したら感動したのを思い出しました。
2そうだね
プレイ済み
返信[24]
親投稿
おちゃめ ochame_nako
だにえるさんのプログラムから余分な改行を省略すれば私が速攻で作ったプログラムを超えて現時点でトップになりますね。 「早い者勝ちルール」が撤廃されてしまったので私がそれを公開したら私の1位になってしまう(自分で試行錯誤をしてたまたま同じになったのならば別ですが、他の人のを見たあとで思いついたもので1位になるのは不本意である)ためあえてそれは投稿しません。
0そうだね
プレイ済み