HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0216
こんとん実数型配列変数のエラー?3解決


こんとん

リンク

2015/2/16(Mon) 16:43:14|NO.67424

キャラクターをウィンドウ内で動かすプログラムを作成中であり、画面外に出ないようにする
以下のようなソースを組みました。
しかし、X座標の画面外に出ようとして指定した座標に固定した途端に「配列の要素が無効です」
というエラーが出ます。
また、同様にY座標の画面外に出ようとすると「異なる型を持つ配列変数に代入しました」

実数型配列変数ではなく、dimによる通常配列変数を利用した場合は上のエラーは出ませんでした。
キャラクターの座標をできれば細かくしたいので実数を利用したいのですが…


*game_start


ddim player_xy,2 ;プレイヤーの座標
ddim player_vel_xy,2 ;プレイヤーの速度

player_vel_xy(0)=4.0
player_vel_xy(1)=4.0

player_xy(0)=0.0 ;初期位置
player_xy(1)=5.0

repeat
redraw 0
color 255,255,255:boxf
color

getkey key1,37
getkey key2,38
getkey key3,39
getkey key4,40
if key1>0 : player_xy(0) - player_vel_xy(0)
if key2>0 : player_xy(1) - player_vel_xy(1)
if key3>0 : player_xy(0) + player_vel_xy(0)
if key4>0 : player_xy(1) + player_vel_xy(1)

if player_xy(0) < 0-1.0 : player_xy(0)=0-1.0
if player_xy(0) > ginfo_winx-5.0 : player_xy(0)=ginfo_winx-5.0

if player_xy(1) < 0-1.0 : player_xy(1)=0-1.0
if player_xy(1) > ginfo_winy-5.0 : player_xy(1)=ginfo_winy-5.0

color : pos player_xy(0),player_xy(1) :mes "●"


redraw 1
await 20
loop



この記事に返信する


kanahiron

リンク

2015/2/16(Mon) 17:03:48|NO.67425

 実数型変数 = 整数 - 実数
では実数型変数に整数を代入していることになりエラーが出ます
 実数型変数 = -実数 + 整数
と書くと足している整数は数式の左側の方にキャストされ実数型となりエラーは出ません

if player_xy(0) < -1.0 : player_xy(0)=-1.0 if player_xy(0) > -5.0+ginfo_winx : player_xy(0)=-5.0+ginfo_winx if player_xy(1) < -1.0 : player_xy(1)=-1.0 if player_xy(1) > -5.0+ginfo_winy : player_xy(1)=-5.0+ginfo_winy



kanahiron

リンク

2015/2/16(Mon) 17:19:06|NO.67427

エラーが出る原因は別でした すみません
これを実行してみてください

kata = "","ラベル型","文字列型","実数型","整数型","モジュール型","COMオブジェクト型" mes "ddim 実数,10" ddim 実数,10 mes " 変数の型は "+kata(vartype(実数)) mes " 配列の数は "+length(実数) mes "実数(0) = 1 と代入します" 実数(0) = 1 mes " 変数の型は "+kata(vartype(実数)) mes " 配列の数は "+length(実数) //実数型配列変数に整数を代入すると、整数型配列無しになる mes mes "ddim 実数,10" ddim 実数,10 mes " 変数の型は "+kata(vartype(実数)) mes " 配列の数は "+length(実数) mes "実数(0) = 1,2,3,4,5 と代入します" 実数(0) = 1,2,3,4,5 mes " 変数の型は "+kata(vartype(実数)) mes " 配列の数は "+length(実数) //カンマで区切って代入するとその要素の数の整数型配列変数になる
なので、

color : pos player_xy(0),player_xy(1) :mes "●"
の部分でplayer_xy(1)は存在しないのでエラーになります



こんとん

リンク

2015/2/16(Mon) 19:33:36|NO.67429

詳しい説明つきでご回答ありがとうございます。
実数型の配列変数を設定しても途中で整数型に戻ってしまったというわけですね。

整数を全て実数に変えてginfo_winxなどもdoubule命令で実数に変えることでエラーは出なくなりました。



ONION software Copyright 1997-2023(c) All rights reserved.