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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0820
pp7-rp7エラー吹きます5解決


pp7-rp7

リンク

2012/8/20(Mon) 09:18:01|NO.48697


mapsizex=20:mapsizey=20;マップサイズ maostir=1;マップスタイル(未) dim aitmx,mapsizex+1,100,100;[位置x,アイテムNo,チップ変数] dim aitmy,mapsizey+1,100,100;[位置y,アイテムNo,チップ変数] dim aitmsx,8+1,100,100;[詳細位置x,アイテムNo,チップ変数] dim aitmsy,8+1,100,100;[詳細位置y,アイテムNo,チップ変数] dim aitmreserve1,100,100,100,100;[予備変数1,予備変数2,アイテムNo,チップ変数] dim aitmreserve2,100,100,100,100;[予備変数3,予備変数4,アイテムNo,チップ変数] sdim aitmname,100,100;[アイテムNo,チップ変数](=ユニーク名) ;通路 dim passagex,mapsizex+1,100,100;[位置x,通路No,チップ変数] dim passagey,mapsizey+1,100,100;[位置y,通路No,チップ変数] dim passagesx,8+1,100,100;[詳細位置x,通路No,チップ変数] dim passagesy,8+1,100,100;[詳細位置y,通路No,チップ変数] dim passagereserve1,100,100,100,100;[予備変数1,予備変数2,通路No,チップ変数] dim passagereserve2,100,100,100,100;[予備変数3,予備変数4,通路No,チップ変数] sdim aitmname,100,100;[アイテムNo,チップ変数](=ユニーク名) ;ブロック dim blockx,mapsizex+1,100,100;[位置x,ブロックNo,チップ変数] dim blocky,mapsizey+1,100,100;[位置y,ブロックNo,チップ変数] dim blocksx,8+1,100,100;[詳細位置x,ブロックNo,チップ変数] dim blocksy,8+1,100,100;[詳細位置y,ブロックNo,チップ変数] dim blockreserve1,100,100,100,100;[予備変数1,予備変数2,敵No,チップ変数] dim blockreserve2,100,100,100,100;[予備変数3,予備変数4,敵No,チップ変数] sdim blockname,100,100;[敵No,チップ変数](=ユニーク名) ;敵 dim enemyx,mapsizex+1,100,100;[位置x,敵No,チップ変数] dim enemyy,mapsizey+1,100,100;[位置y,敵No,チップ変数] dim enemysx,8+1,100,100;[詳細位置x,敵No,チップ変数] dim enemysy,8+1,100,100;[詳細位置y,敵No,チップ変数] dim enemyangle,8+1,100,100;[角度,敵No,チップ変数] dim enemypower,500,2,100,100;[体力,敵No,モード(0=無敵,1=ストック制),チップ変数] dim enemylaser,200,10,100,100;[レーザー仕様数,レーザー仕様方(0=確立,1=間隔,2=),敵No,チップ変数] dim enemyreserve1,100,100,100,100;[予備変数1,予備変数2,敵No,チップ変数] dim enemyreserve2,100,100,100,100;[予備変数3,予備変数4,敵No,チップ変数] sdim enemyname,100,100;[敵No,チップ変数](=ユニーク名) ;主人公 dim herox,mapsizex+1,100;[位置x,主人公No] dim heroy,mapsizey+1,100;[位置y,主人公No] dim herosx,8+1,100;[詳細位置x,主人公No] dim herosy,8+1,100;[詳細位置y,主人公No] dim heroangle,8+1,100;[角度y,主人公No] dim heropower,100,100;[体力,主人公No] ;攻撃 dim attackx,mapsizex+1,100,100;[位置x,レーザーNo,チップ変数] dim attacky,mapsizex+1,100,100;[位置y,レーザーNo,チップ変数] dim attacksx,8+1,100,100;[詳細位置x,レーザーNo,チップ変数] dim attacksy,8+1,100,100;[詳細位置y,レーザーNo,チップ変数] dim attackangle,8+1,100,100;[角度,レーザーNo,チップ変数]
このコードを実行するとエラー吹きます。
どこがいけないのでしょうか。
レーザーとか気にしないでください。



この記事に返信する


ridanlue

リンク

2012/8/20(Mon) 10:00:36|NO.48700

メモリを使い過ぎです。
例としては、dim passagereserve1,100,100,100,100 が、100^4もの変数を確保しています。
ですから……

#define 通路最大数 100 #define 予備変数1 0 #define 予備変数2 1 #define アイテムNo 2 #define チップ変数 3 dim passagereserve1,通路最大数,4 for 番号,0,通路最大数,1 passagereserve1(番号, 予備変数1) = rnd(10000) passagereserve1(番号, 予備変数2) = rnd(10000) passagereserve1(番号, アイテムNo) = rnd(10000) passagereserve1(番号, チップ変数) = rnd(10000) next
実際はこんなところでしょうか。passagereserve1を確保して、全ての要素にランダムな値を入れるだけのサンプルです。



ヂオン

リンク

2012/8/21(Tue) 09:51:01|NO.48724

本当にこれほど多くのデータの確保が必要なのですか?
もしそうなら、もう少しデータを圧縮する方法を模索する必要があるかもしれません。

bit 演算または、peek wpeek lpeek 等の、メモリ操作命令を使用する事になると思います。



MillkeyWeler

リンク

2012/8/21(Tue) 11:03:31|NO.48725

スタック領域、恐ろしく使ってるなーっと・・・
とりあえず、dim data,100,100 だけ(管理番号,要素項目)でいいんじゃないかと。

(位置x,アイテムNo,チップ変数) = 3 要素つかってて、管理番号x要素項目が最低限必要であって。



dim aitmx,mapsizex+1,100,100;[位置x,アイテムNo,チップ変数] dim aitmy,mapsizey+1,100,100;[位置y,アイテムNo,チップ変数] dim aitmsx,8+1,100,100;[詳細位置x,アイテムNo,チップ変数] dim aitmsy,8+1,100,100;[詳細位置y,アイテムNo,チップ変数] dim aitmreserve1,100,100,100,100;[予備変数1,予備変数2,アイテムNo,チップ変数] dim aitmreserve2,100,100,100,100;[予備変数3,予備変数4,アイテムNo,チップ変数] sdim aitmname,100,100;[アイテムNo,チップ変数](=ユニーク名)

の場合、(100,[位置x,アイテムNo.,チップ変数,詳細位置x,アイテムNo,チップ変数・・・・])であって
dim 管理番号,項目要素 で管理することが可能になり、使用するメモリを劇的に減らすことは可能かと。

質問のソースから判断するに、全部を一緒にすると後々修正する際に改良が大変になると思うので、
敵・通路・主人公などの各ブロックを一まとめにしとけば楽かなーっと。

[詳細位置x]と[詳細位置y]の[通路No,チップ変数]は同じ内容なのかなー?
同じである場合、[x,y],通路No,チップ変数で、十分かと。

あとは、マップのサイズが固定されているなら、(マップ横サイズ) + (マップ縦サイズ x マップ横サイズ) = xy で管理ができる。
マップのサイズに合わせて、dim xy,要素項目数(通路No,チップ変数) など。



pp7-rp7

リンク

2012/8/29(Wed) 21:07:19|NO.48911

返信遅くなりました。

dim変数を使いすぎたようですね。



@key

リンク

2012/8/29(Wed) 22:54:27|NO.48913

dimの使いすぎじゃなくて何か勘違いをしているんでしょう
たとえば
dim aitmreserve1,100,100,100,100;[予備変数1,予備変数2,アイテムNo,チップ変数]
だとしたら普通は
dim aitmreserve1,100,4;[予備変数1,予備変数2,アイテムNo,チップ変数]
でいいはずです
その場合、
aitmreserve1(x,0)が予備変数1
aitmreserve1(x,1)が予備変数2
aitmreserve1(x,2)がアイテムNo
aitmreserve1(x,3)がチップ変数
になります

ちなみにdim aitmreserve1,100,100,100,100ひとつでも
100^4*4で400000000byte、400MBのメモリを使っています
圧迫されたPCならもうアウトです



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