HSPdish アプリが起動できない
やまぎ 2013/7/22(Mon) 16:02:20|NO.55820
#include "hsp3dish.as"
randomize
#const global CHIP_SIZE 80
#const global WIN_W CHIP_SIZE*4
#const global WIN_H CHIP_SIZE*4
/**/
title "15peace"
/**/
flag=0
t=0
hazime_flg=0
objsize 320,55
pos 0,320
button "end",*ends
button gosub "shuffle",*syahhuru
dim map,6,6
repeat 6
cny=cnt
repeat 6
if (cny=0)||(cny=5) : map.cny.cnt=50 : continue
if (cnt=0)||(cnt=5) : map.cny.cnt=50 : continue
map.cny.cnt=(cnt-1)+(cny-1)*4
loop
loop
celload "gazou.png",2//画像のおおきさ320*320
/**/
#module
#deffunc draw_g array map
color 0,0,0:boxf
gmode 0,CHIP_SIZE,CHIP_SIZE
flag=0
repeat 4,1
cny=cnt
repeat 4,1
if map.cny.cnt=50 : continue
if map.cny.cnt=99 : continue
x=map.cny.cnt\4
y=map.cny.cnt/4
pos (cnt - 1)*CHIP_SIZE,(cny - 1)*CHIP_SIZE
gcopy 2,x*CHIP_SIZE,y*CHIP_SIZE
if map.cny.cnt=(cnt - 1)+(cny - 1)*4 : flg++
loop
loop
if flag=16 : return
repeat 4,1
color 0,0,0
line CHIP_SIZE*cnt-1,0,CHIP_SIZE*cnt-1,CHIP_SIZE*4
line 0,CHIP_SIZE*cnt - 1,CHIP_SIZE*4,CHIP_SIZE*cnt - 1
loop
repeat 4
color 255,255,255
line CHIP_SIZE*cnt,0,CHIP_SIZE*cnt,CHIP_SIZE*4
line 0,CHIP_SIZE*cnt,CHIP_SIZE*4,CHIP_SIZE*cnt
loop
pset 0,0
return
#global
#module
#defcfunc move_p array map, int x, int y, int x2, int y2
t=map.y.x
map.y.x=map.y2.x2
map.y2.x2=t
return map
#global
#module
#defcfunc click_p array map, int x,int y
if map.y.(x + 1)=99 : map=move_p(map,x,y,x + 1,y) : return map
if map.y.(x - 1)=99 : map=move_p(map,x,y,x - 1,y) : return map
if map.(y + 1).x=99 : map=move_p(map,x,y,x,y + 1) : return map
if map.(y - 1).x=99 : map=move_p(map,x,y,x,y - 1) : return map
return map
#global
#module
#defcfunc random array map
repeat 4,1
cny=cnt
repeat 4,1
if map.cny.cnt=15 : map.cny.cnt=99
x=cnt
y=cny
loop
loop
repeat 10000
map=click_p(map,rnd(4)+1,rnd(4)+1)
loop
return map
#global
repeat
redraw 0
gosub *check_key
gosub *check_clear
if flag=16 : break
draw_g map
pos 80,447
mes "arranged number :"+flag+""
redraw 1
await 16
loop
goto *clear
*check_key
x=mousex/CHIP_SIZE + 1
y=mousey/CHIP_SIZE + 1
stick t
if mousey<=320 & t = 256 : map=click_p(map,x,y)
if hazime_flg=0 : map=random(map) : hazime_flg=1
return
*check_clear
flag=0
repeat 4,1
cny=cnt
repeat 4,1
if map.cny.cnt=(cnt - 1) + (cny - 1)*4 : flag++
loop
loop
if flag=15 : map.4.4=15
return
*syahhuru
hazime_flg=0
return
*ends
end
stop
*clear
redraw 0
cls 4
color : boxf:color 255,255,255
gcopy 2,0,0,320,320
pos 120,340
mes "all complete"
redraw 1
button "end",*clear
dialog "finish!" : end
15ピースのプログラムなんですけどPCではちゃんと
起動するのですがスマホの方に移して起動すると
一瞬ついて消えるのですがどうすればよいでしょうか?
このプログラムの中に何か使えないものがあるのでしょうか
DPMファイルはちゃんと作成されています
FunnyMaker 2013/7/22(Mon) 18:38:48|NO.55822
アドバイスではありませんが...、
結構そういうことってあるんですよね。
Windows版dishでは動くのにAndroid版とかに移すと落ちるということが。
ちゃんと対応命令しか使わずに、スマホ版のことを考えて組んでも。
私もそんな経験がたくさんあります。
経験で言いますが、repeat〜loop をハードに使ったり、計算式を複雑にすると落ちやすいようです。
たとえば、
Q = sqrt(powf(r+sin(α),2)+powf(r*cos(α),2))
という式で落ちる場合、
k1 = r*sin(α) : k2 = k1*k1
k3 = r*cos(α) : k4 = k3*k3
k5 = k2 + k4
Q = sqrt(k5)
とすると落ちなくなったりします。
(あくまで一例で、この式で確実に落ちるというわけではありません。他の要素も絡んでいる
可能性が十分に考えられます。)
ただ、こんなことをしようと思うと、大変な労力になるのは確かです。(特にWindows向けに作っていた
もの(それも結構コード量のあるもの)を移植する場合はツラいです...。)
"gazou.png"がこちらに無いので、提示されたスクリプトを試してはいませんが、
「ここが匂うな...」と思ったところにstopでも入れてみて、どこで落ちるか地道に探ると何か
分かるのかもしれません。
(どうやらスマホ版でもデバッグ結果が見れるらしいですが、私は自信が無いので助言できません。)
参考になることを願います。
FunnyMaker 2013/7/22(Mon) 18:40:22|NO.55823
すみません、
Q = sqrt(powf(r+sin(α),2)+powf(r*cos(α),2))
↑ミスってました。
Q = sqrt(powf(r*sin(α),2)+powf(r*cos(α),2))
です。
やまぎ 2013/7/22(Mon) 18:46:51|NO.55824
>>FunnyMaker
ありがとうございます
参考にさせていただきます
それともう一つ質問なんですがスマホ版(HSPdish)ではモジュールが使えないのですか?
FunnyMaker 2013/7/22(Mon) 19:25:36|NO.55826
いえ、使えます。
付属ドキュメントに書いてありました。
ZAP 2013/7/22(Mon) 20:07:59|NO.55828
モジュールは使えますが、
外部DLLを使用するタイプのプラグインは使えません。
DLLはあくまでWindowsのプログラムなので。
やまぎ 2013/7/22(Mon) 20:55:17|NO.55829
>>FunnyMaker
>>ZAP
二人とも回答ありがとうございました。
参考にして頑張って完成させたいと思います。