プチコン3号 SmileBASIC コミュニティトピックNeG TEAMNEG2016/07/02 00:01:46質問整数と実数の乗算についてこんにちは。初めて質問します。 現在シューティングゲームを作成しています。 方向弾を作成する関数を実装しようとしているのですが、cos関数で取得した実数に引数である整数を乗算したところ、小数点以下が切り捨てられます。(sin関数も同様) 原因として考えられるのは、内部で整数と整数の乗算として扱われているからだと思うのですが、プチコンに明示的な型変換の方法はありますか? それとも大人しく整数ではなく、実数を渡した方がいいのでしょうか?3そうだね 10返信プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿Godot orz_1272016/7/2 0:40他言語でも割りと「実数で」が常套手段だったり。2そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿みむ*mim hidemimtp2016/7/2 1:22勘違いだったらすみません。 ?COS(1) ?COS(1)*2 ?POW(COS(1),2) はすべて整数にはならないですが、具体的にどういう式でしょうか?1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿ほしけん Hosiken2016/7/2 1:31こちらではそうならないです。 (DEFINTかと思ったけど関係無かった) コードを見せていただくことはできますか?1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿NeG TEAMNEG2016/7/2 2:36スクショはネット環境ないのでごめんなさい スマホで書き込んでます 具体的には ※わかりやすいように関数と変数の名前を同じにしてます。そのままでは動きません atan = ATAN(y,x) `ラジアン値を取得 cos = COS(atan) `コサイン値を取得 この時点でcosには[-1~1]の実数が入ります このcosの値をx軸の移動に使用したい 複数に渡ります1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿NeG TEAMNEG2016/7/2 2:37次に整数を乗算します 例:value = 2 × cos 例ではcos が 0.5未満の時 valueには1未満が入りますが 小数点以下が切り捨てられて 結果valueの値は0になり 横方向の移動ができなくなります 実際には関数の引数を使用しているので 渡すときに内部で実数になって 2 = 2.0 だと思っていたのですが・・・1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿NeG TEAMNEG2016/7/2 2:38追記 期待しているのは 最終的に実数を取得したい1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿ほしけん Hosiken2016/7/2 3:15説明通りのコードですが実数が返りました。 OPTION DEFINTは使ってないですよね? 関連する変数に#をつけて実数型にするとどうなりますか。1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿ネタバレコータ[quota] W.D.WE2016/7/2 6:21プチコンの場合、引き数の型は、実行時に呼び出し元の引き数の型が引き継がれます。戻りの型は、呼び元に戻って戻り変数に代入するときに型変換が行われるようです。 DEF FN A,X OUT B,Y B=A*2 Y=X*1.5 PRINT "A=";A PRINT "B=";B PRINT "X=";X PRINT "Y=";Y END A#=1.9 X%=3 PRINT "A#=";A# PRINT "X%=";X% FN A#,X% OUT B%,Y% PRINT "B%=";B% PRINT "Y%=";Y%1そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿NeG TEAMNEG2016/7/2 7:49原因がわかりました。 引数の扱いに原因があったみたいです。 CALL "DEBUG",18,180,3 out j DEF DEBUG x,y,ac OUT j VAR i i = ATAN(y,x) ac = i × ac j = ac END 上記の様に 引数のacを計算式の結果を格納する変数としても利用していた結果、渡された3(整数)の値に引きずられて整数として扱われていたと思われます。2そうだね プレイ済み2017/11/03 18:03:57に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿NeG TEAMNEG2016/7/2 7:49回答された皆さんありがとうございました。 ほしけんさん何度もありがとうございました。 コータさん的確な指摘ありがとうございました。2そうだね プレイ済み2017/11/03 18:03:57に取得