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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0401
ぽっけhspDishでゲームを作ろうかと思っているのですが、何度も落ちてしまい困っています。4解決


ぽっけ

リンク

2014/4/1(Tue) 19:20:42|NO.61187

dishでゲームを作りたいのですが、どうしても起動時に落ちてしまいます(>_<)
おかしな書き方をしているのかなぁと思ってはいるのですが、どこがおかしいのか検討もつかず困っています。

自分の未熟なソースを添付するのは少し恥ずかしいのですが、お時間の都合の良い方がいらっしゃれば、ご教授をお願いできないでしょうか。

内容はニンジンの画像を表示して、その画像一つの4つに分けられた範囲の何番目をタップしているかを表示するだけのものです(・_・;)
至らない内容は追記したいと思います。
よろしくお願いしますm(_ _)m


(exe)
https://drive.google.com/file/d/0B5krbYD9_wBFSVJlVFJyVTBOY2c/edit?usp=sharing

(apk)
https://drive.google.com/file/d/0B5krbYD9_wBFbEJPMHdObHkzQUE/edit?usp=sharing

(ソース.zip)
https://drive.google.com/file/d/0B5krbYD9_wBFUU5OeWxYUFJYT3M/edit?usp=sharing




以下が(ソース.zip)の中に入っているソースです。

////////////////////////////////////////////////////////////////////////////////
//mainのソースで provisional を定義してください。
#ifndef provisional

#pack "Vegetables_00.png"

#include "hsp3dish.as"
#include "mod_smart.as"

smart_init

val = Game_Vegetables()

#endif
//
////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////
//ゲームのソースを関数として管理します。
//通常は1が返るようにします。
#module GameParts_Vegetables


////////////////////////////////////////////////////////////////////////////////
//メインの関数になります。
//通常は1が返るようにします。
#defcfunc Game_Vegetables

val = Game_Vegetables_Preparation() //ゲームを実行するための各種準備を行います。

repeat
redraw 0

switch number
case 0
repeat remaining
i(0) = remaining_xy(cnt,0) //x座標
i(1) = remaining_xy(cnt,1) //y座標
i(2) = cnt //描写対象の番号

val = Carrot(i(0) ,i(1)) //描写
val = cut(i(0) ,i(1) ,i(2)) //切断対象の識別
loop
swbreak
default
swbreak
swend

getkey key, 1
cutstart = 0 //切り始めを戻します。

redraw 1
wait 16
loop

return 1
//
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
//ゲームを実行するための各種準備を行います。
//通常は1が返るようにします。
#defcfunc Game_Vegetables_Preparation

buffer 2 ,2000 ,2000 ,0
picload "Vegetables_00.png"
gsel 0

mode_number = 0 //モードです。大きな野菜への切り替えなどに使用するといいかと思います。
remaining = 4 //野菜の個数です。実際は乱数を使ってください。

dim remaining_xy ,remaining ,2 //座標を用意します。
remaining_xy(0,0) = 0 :remaining_xy(0,1) = 0
remaining_xy(1,0) = 250 :remaining_xy(1,1) = 0
remaining_xy(2,0) = 0 :remaining_xy(2,1) = 250
remaining_xy(3,0) = 250 :remaining_xy(3,1) = 250

dim cutstart ,remaining ,4 //切り始めの判断に使用します。[対象の野菜番号 ,切り始めブロック番号]

return 1
//
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
//
//通常は1が返るようにします。
#defcfunc Carrot int p1 ,int p2

pos p1 ,p2
gmode 2
gcopy 2 ,0 ,0 ,200 ,200

return 1
//
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
//
//p1 = x座標
//p2 = y座標
//p3 = 対象の番号
//通常は1が返るようにします。
#defcfunc cut int p1 ,int p2 ,int p3 ,int p4

dim xy, 4, 2
px = p1
py = p2

repeat 4
xy(cnt,0) = px
xy(cnt,1) = py
px+100
if cnt = 1 { px = p1 :py + 100 }
loop

repeat 4
if (mousex > xy(cnt,0))&(mousex < xy(cnt,0)+100)&(mousey > xy(cnt,1))&(mousey < xy(cnt,1)+100)&(key = 1) {
pos 0,0
mes ""+p3+"の"+cnt+"です"
mes ""+xy(cnt,0)+""
mes ""+xy(cnt,1)+""
}
loop

return 1
//
////////////////////////////////////////////////////////////////////////////////

#global
//
////////////////////////////////////////////////////////////////////////////////



この記事に返信する


check

リンク

2014/4/1(Tue) 20:13:53|NO.61188

どの環境で起動時に落ちるのか(Android 2.1)や、
Windowsでコンパイルした時にエラーは出なかったのか等を書いてくれると捗る。

うろ覚えだけれど、HSPDishで#moduleは使えなかったような……



FunnyMaker

リンク

2014/4/1(Tue) 21:57:43|NO.61201

いや、dishでも#module使えますよ。

(最近ちょい忙しすぎてこんなことしか書けなくて助けになれません...。)



しまくろねこ

リンク

2014/4/1(Tue) 23:59:37|NO.61212

ぽっけさんこんにちわ。

Logcatを確認してみたところ、#error40(関数の戻り値が設定されていません)となっておりましたので怪しそうな箇所

#defcfunc Game_Vegetables


#deffunc Game_Vegetables
にしたところ落ちなくなりました。

補足

12行目の val = Game_Vegetables()  は、 Game_Vegetables      に修正。 58行目の return 1   は return    に修正。



ぽっけ

リンク

2014/4/2(Wed) 23:01:16|NO.61282

check さん
android 2.3 の環境でした。
Windowsでのコンパイル時には問題ありませんでした!
回答ありがたいですm(_ _)m

FunnyMaker さん
そんなことありません!
回答ありがとうございます(>_<)

しまくろねこ さん
ご指摘の箇所を書き直したところ正常に動作するようになりました!
今後は関数ではなく、定義命令で書いていこうと思います。
それと、Dishに関係する便利なモジュールなどとても感謝しています。
密かに憧れてます!ありがとうございました!



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