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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
1231
赤松配列変数を使うと予想と違う動きをする6解決


赤松

リンク

2016/12/31(Sat) 11:51:35|NO.77774

配列変数の仕様(?)のことで質問があります。
最近hspでもゲームのようなものが作ってみたくて配列変数を上手く使おうと学んでいるのですが
予想と違う動作をして原因がわからないので教えていただきたいです。

ゲームの画面をfieldという変数に入れるつもりです。
サイズは18*18です。
画面を描画する部分

repeat 18 rcnt=cnt mrcnt=cnt+1 repeat 18 mcnt=cnt+1 color 0,0,0//背景 1 if field.rcnt.cnt=1:boxf rcnt*10,cnt*10,mrcnt*10,mcnt*10 color 255,0,0//敵 2 if field.rcnt.cnt=2:boxf rcnt*10,cnt*10,mrcnt*10,mcnt*10 color 0,255,255//自機 3 if field.rcnt.cnt=3:boxf rcnt*10,cnt*10,mrcnt*10,mcnt*10 loop loop
のテストのために

dim field,19,19 repeat 18 rcnt=cnt repeat 18 field.rcnt.cnt=1 loop loop field.3.3=2
というのをメインのループの前に入れて試してみました。
fieldの中身が
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
となると思ったのですが実際に実行してみると背景の部分が左一列しか表示されなかったので

pos rcnt*20,cnt*20 mes ""+field.rcnt.cnt
とするとfieldの中身が
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
となっていました。
なぜでしょうか?
また、他のパソコンで試した(下記スクリプト)ところ正常に表示されたものもありました。
どれも同じスクリプトと同じhspバージョン(3.4)を使いました。
これはwindowsとかhspの仕様なのでしょうか?
正常:
Windows7(ノート)
Windows7(デスクトップ)

バグってるような状態:
Windows7(デスクトップ)←これで今作っています
Windows10(ノート)
Windows8.1(タブレット)

作る分には正常に動作するパソコンで作れば済みますがもし他の人に遊んで欲しいときに動作しないと
残念なので、解決方法や原因を教えていただきたいです。

※他のパソコンで試したスクリプト

dim field,19,19 repeat 18 rcnt=cnt repeat 18 field.rcnt.cnt=1 loop loop field.3.3=2 field.4.4=2 repeat 18 rcnt=cnt mrcnt=cnt-1 repeat 18 mcnt=cnt-1 color 0,0,0//背景 1 if field.rcnt.cnt=1:boxf mrcnt*10,mcnt*10,rcnt*10,cnt*10 color 255,0,0//敵 2 if field.rcnt.cnt=2:boxf mrcnt*10,mcnt*10,rcnt*10,cnt*10 color 0,255,255//自機 3 if field.rcnt.cnt=3:boxf mrcnt*10,mcnt*10,rcnt*10,cnt*10 loop loop



この記事に返信する


スペース

リンク

2016/12/31(Sat) 12:43:37|NO.77776

もしファイルそのものを送り、変更を一切加えずに実行しているならあり得ませんが、PC毎に実行したスクリプトが違う可能性はありませんか?
例えば「簡単なプログラムだし、SDカードにファイルいれて送るより手動で入力しちゃおう」等で誤字っている可能性。

ちなみに私のPCでは正常に実行されました。
win10 64bit Homeです。



MillkeySoftware

リンク

2016/12/31(Sat) 12:55:31|NO.77777

こちらの環境では、すべて正常な動作が確認できました。
HSP 3.4 β3
Windows 10 Insider Preview 14986.1000



赤松

リンク

2016/12/31(Sat) 13:07:01|NO.77778

スペース様、MillkeySoftware様いつもお世話になります。
他のパソコンで試した方法ですが

Source.hsp (先ほど一番下に書いたスクリプト)
hsptmp.exe
の2つをUSB接続のHDD経由で送り、

1.exeを起動
2.hsp34でSource.hspをコンパイル実行

の方法で行いました。
指摘していただいた誤字の可能性ですが手打ちで無い上、最初にこのパソコンで実行した際に起動せず
他のパソコンで実行したら起動したという流れなので有り得ないと思います。

体感ですが長く使っているパソコンではちゃんと動作する気がします。
かなり前から使っていたwindows7の2つはちゃんと動作していて
動作しなかった3つは最近購入したりOSのクリーンインストールをしたものです。
関係ありますでしょうか?



掘木

リンク

2016/12/31(Sat) 14:58:50|NO.77779

・実際の描画ルーチンのコード、
・テスト用データの作成コード
の二つと
・他PCでの動作確認コード
がそもそも不一致なのですが…?


もう一度試してみたらどうですかね。



スペース

リンク

2016/12/31(Sat) 15:51:14|NO.77781

うぅ〜ん。非常に簡単なプログラムで、同じwindowsOSで結果が変わるというのは考えづらいですね・・・
何処かに見落としがあるのではないでしょうか。
検証した端末は5台ですよね。その5台、全てで本当に同じhsptmp.exeを実行していますか?
ファイルサイズやmd5ハッシュが完全に同じか確認してみては?

もしくはこういうときの手っ取り早い解決策として、一旦全ての記録媒体から今回のソースコードやexeを削除し、
ゼロから作り直してみるとかですかね。



赤松

リンク

2016/12/31(Sat) 19:42:16|NO.77784

>>スペース様
アドバイスありがとうございます、今作ったスクリプトを消して
最初から作ってみたところちゃんと動作しました。
原因は結局よく分かりませんでしたが解決することができました。

>>堀木様
テスト用スクリプトを他PCで試した後ミスで9pixズレてしまうようになっていたことに気づいたため
修正していたのですが、他PCで試したスクリプトをそのまま載せたほうがいいかと思いこちらを載せました。
誤解させて申し訳ありませんでした。

回答してくださった皆様ありがとうございました。



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