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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0609
流星群 (投稿者削除)14解決


流星群

リンク

2012/6/9(Sat) 14:09:10|NO.47095

この記事は投稿者により削除されました。
2012/6/9(Sat) 22:05:10



この記事に返信する


トホホッティー

リンク

2012/6/9(Sat) 14:25:06|NO.47096

まず、移動前の座標を何かの変数に代入して
キー操作のあとに壁判定して
壁だったら移動前の座標の変数に戻すでできますよ。

いちいち、戻す値指定しなくてもいい。



TMKL

リンク

2012/6/9(Sat) 15:19:58|NO.47098

DLしてませんし、スクリプトも見てませんが、
壁をすり抜けるということは、
壁とのあたり判定に問題があるんでしょう

ここのkさんのスクリプトなどを参考にして自分で作った方がいいと思います
http://hsp.tv/play/pforum.php?mode=pastwch&num=36525

また、トホホッティーさんには悪いですが、
私はトホホッティーさんのやり方を推奨しません

なぜなら、


1フレームで進む距離が"4px"
壁と自機の間が"2px"

みたいなときに、
「移動前の座標の変数に戻す」だと、
壁と自機との間に隙間が出るからです

壁への当たりを判定する際に、
「壁へのめり込み具合」を自然と求めているでしょうから、
それを使うことをお勧めします



流星群

リンク

2012/6/9(Sat) 15:23:28|NO.47100

トホホッティーさんありがとうございます。

TMKLさん。
ここまで作ってそれにいくつもこれに関係してる変数を使っているので
今頃変えるのは難しいです。
あとめんどくさいと思いますが
せめてスクリプトの
preしていない部分ぐらい見てくださいよ・・・



ひじき

リンク

2012/6/9(Sat) 17:42:24|NO.47103

>>流星群さん
はたから読んでいて、少し驚いたので書かせて頂きます。
まず、投稿文を入力する入力欄の上に、
1〜4の注意書きがされていると思います。

その2番目に、[不要部分の多い長いスクリプトの投稿は ご遠慮ください。]
と書かれています。
流星群さんが投稿されたスクリプトは、
プレイヤーのアクションとは関係のない部分が多く含まれています。
preをしている部分がプレイヤーのアクション処理部分で、
そこが問題だと思っているならそこだけを投稿するか、
他と干渉している可能性もあり、全て見てほしいなら、
ソースファイルごとどこかにアップロードするべきだと思います。
面倒くさいかもしれませんが、質問者側は手間を嫌うべきではありません。

また、TMKLさんの解答に対してはお礼もなく、
>ここまで作ってそれにいくつもこれに関係してる変数を使っているので
>今頃変えるのは難しいです。
と、完全に解答を否定するだけの返答しかしてませんよね?
善意で解答した人に対して、これはどうなんでしょうか。

>せめてスクリプトの
>preしていない部分ぐらい見てくださいよ・・・
私も正直、スクリプトを読んでいません。
というのも、きちんとインデントがされておらず、非常に読みづらいです。
人に読んでもらおうと思うなら、読みやすいように書きなおしてから
投稿するべきではないでしょうか?
繰り返しになりますが、質問者側は手間を嫌うべきではありません。

面倒臭がるのは勝手ですが、自分が面倒くさがったせいで
読んでもらえなかったことを相手が悪いように言うのはおかしいと思います。

あと、これは余談でもあり、おせっかいでもありますが…;
>ここまで作ってそれにいくつもこれに関係してる変数を使っているので
>今頃変えるのは難しいです。
と仰っていますが、ゲームを作るのであれば、
500行そこらを書きなおすことなんて珍しくないので、
今から慣れておけば早く上達するかもしれません。

長くなってしまいました。
解答でもないのに書き込んでしまって申し訳ありません。
ただ、どうすればスムーズに質問に答えてもらえるようになるか、
アドバイスをしたかっただけですので、悪意はありません。
解答者側の気持ちになってください。



7909ppr

リンク

2012/6/9(Sat) 17:43:21|NO.47104

「不要部分の多い長いスクリプトの投稿は ご遠慮ください。 」
守りましょう。



流星群

リンク

2012/6/9(Sat) 17:48:36|NO.47105

ひじきさん。
確かにそうですね・・・
TMKLさん。
もし自分の返事によって不快な思いをさせてしまっているのならば
すいません。
注意書きは2,3度読んでいるのですが、
「無駄な部分を省く」というのが少し・・・
TMKLさんが教えてくれたURLにはとんで、
見てみたのですが、
変えるのは・・・と思っていました。
この事もすいません。

失礼ですが非常に長くなるのでここでいったんくぎって引き続き書きます



TMKL

リンク

2012/6/9(Sat) 17:52:01|NO.47107

いや、変えろなんて言ってないんですが . . .
「"参考にして"バグがあるあたり判定部分を改善したら?」
と言っています

変数名とか変える必要ありませんよ . . .おそらく



流星群

リンク

2012/6/9(Sat) 17:53:31|NO.47108

とりあえずpreで囲んでない所が問題と思われるので、
そこだけ書きます
ここから下までをループしています。

if movespeed < 0 { my_x+(int(movespeed/2)) if map((my_x-4)/32,(my_y+16)/32) = 1 : my_x-(int(movespeed/2)) if map((my_x-1)/32,(my_y+16)/32) = 7 : my_x-(int(movespeed/2)) } if movespeed > 0 { my_x+(int(movespeed/2)) if map((my_x+36)/32,(my_y+16)/32) = 1 : my_x-(int(movespeed/2)) if map((my_x+31)/32,(my_y+16)/32) = 7 : my_x-(int(movespeed/2)) } getkey KEY,37 if KEY=1 { if movespeed = 0 : movespeed-2 if movespeed > -10: movespeed-- my_dir=0 if map(my_x/32,(my_y+16)/32)!0 : my_x+(movespeed/2) } if KEY=0 : buf_key++ getkey KEY,39 if KEY=1 { if movespeed = 0 : movespeed+2 if movespeed < 10: movespeed++ my_dir=1 if map(my_x/32,(my_y+16)/32)!0 : my_x-(movespeed/2) } if KEY=0 : buf_key++ getkey KEY,90 if KEY=1 { if map((my_x+48)/32,((my_y+16)/32)) = 7 & flag(MAPCNT)=1{ map((my_x+36)/32,my_yy) = 0 } if map((my_x-16)/32,((my_y+32)/32)) = 7 & flag(MAPCNT)=1{ map((my_x-16)/32,my_yy) = 0 }} getkey KEY,88 if JUMP=0 & KEY=1 & Xkey=0{ if map(((my_x+16)/32),((my_y+38)/32)) = 1 { mmplay 10 : JUMP=1 : JUMPcnt=12 : Xkey=1} } if KEY=0 : Xkey=0 if JUMPcnt>0{ if ((my_y+16)/32)>0{ if map(((my_x+16)/32),((my_y-8)/32)) ! 1 :my_y-8 } JUMPcnt-- if JUMPcnt=0 :waittime=19 } if JUMPcnt<1 & waittime>0 { waittime-- if waittime=0 : waittime=-1 } if JUMP=1 & JUMPcnt<1 & waittime=-1: JUMP=0 if my_yy<14{ if map((my_x+8)/32,((my_y+33)/32)) ! 1 & map((my_x+24)/32,((my_y+33)/32)) ! 1 & JUMPcnt<1 : my_y+6 } if my_yy=14 & JUMPcnt<1 : my_y+6 if buf_key=2 & movespeed>0 : movespeed-- if buf_key=2 & movespeed>0 : movespeed-- if buf_key=2 & movespeed<0 : movespeed++ if buf_key=2 & movespeed<0 : movespeed++ buf_key=0
で先ほどはすいません。
7909pprさん、
同じく
不要部分の多い長いスクリプトの投稿は ご遠慮ください。
の指摘どうもです。
TMKLさん、すいませんでした。
ソースを公開しておいたので
他の方も
こちらを見てもらうようお願いします
https://box.yahoo.co.jp/guest/viewer?sid=box-l-ookc7i2ad3sfyk5hipzssq7bnu-1002&uniqid=d5cf78e7-3120-40e2-8b25-322a1441c762&viewtype=detail



流星群

リンク

2012/6/9(Sat) 17:55:21|NO.47109

TMKLさん、
「変えろ」
とは言っていないですが
貼ってくださったURLを見ると
ある程度変数を変えないといけないと
思いまして・・・

http://hsp.tv/play/pforum.php?mode=pastwch&num=36525
こちらのkさんのスクリプトはコピペして実行して
どんな感じになるかは見たんですが・・・



GrapeColor(DION)

リンク

2012/6/9(Sat) 18:00:44|NO.47110

今私が作ってるCrazyMusicPlayerは4回も最初から作り直しています。
いや、それはどうでもいいのですが・・・。
兎に角、一回こうやって作ってしまえば結構短時間で作り直せたりしますよ。

あとプログラミングの時は成るべくスマートに処理することを心がけた方がいいですよ。
もう1つ指摘すると、条件判断の書き方が汚いと思います。
複数条件がある場合、switchマクロを使ったりするといいと思います。
[はい][いいえ]の二択ダイアログはstatに6か7しか返さないのでif stat = 0は要らないかと。
もっと言うと

if stat = 6 { [はい]が押された時の処理 } else { [いいえ]が押された時の処理 }
こんな感じに書くといいです。

質問の無い用とは直接関係無く説明下手で役に立ちませんが、どうか参考にしてください。



流星群

リンク

2012/6/9(Sat) 18:05:56|NO.47111

GrapeColor(DION)
ありがとうございます。
4回作りなおしているんですが。

あ、あと
綺麗にif文を書く方法ありがとうございます



流星群

リンク

2012/6/9(Sat) 18:47:17|NO.47115

TMKLさんの貼ったURLのスクリプトを参考にする方向で行きたいと思いますが、

if aa>0 { if ay>=0 { y=bby*bsize-size-1:ay=0:skf=0} else {y=aay*bsize+bsize:ay=0} } x+=ax gosub *hantei if aa>0 { if ax>=0 { x=bbx*bsize-size-1} else {x=aax*bsize+bsize} }
ここと

*hantei
aax=x/bsize
bbx=(x+size)/bsize
aay=y/bsize
bby=(y+size)/bsize
aa=map(aax,aay)+map(bbx,aay)+map(aax,bby)+map(bbx,bby)
return

この部分が難しいです。



流星群

リンク

2012/6/9(Sat) 18:49:06|NO.47116

一旦解決にします



流星群

リンク

2012/6/10(Sun) 15:14:05|NO.47131

新しくおなじすれっどをたてました。
たいへんもうしわけありませんでした



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