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


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0814
ddd時機移動について4解決


ddd

リンク

2017/8/14(Mon) 08:38:13|NO.80944

上下の移動をボタンを押した場合のみ行いたいのですがうまくいきません
ぜひ誰かお願いします

buffer 1
boxf 0,0,40,40

screen 0,640,480

color 0,0,0
MX=80 :MY=80
*ikkai

gosub *ikkai_map
while
redraw 0
gosub *ikkai_move
gosub *ikkai_ht
redraw 1
title ""
await 100
wend


*ikkai_map
dim MAP,17,13
MAP(0,0) =1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
MAP(0,2) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,3) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,4) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,5) =1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1
MAP(0,6) =1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1
MAP(0,7) =1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1
MAP(0,8) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,9) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,10)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
MAP(0,11)=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
return

*ikkai_move
;640,480
if MX\32=0 :MDX=0
if MY\24=0 :MDY=0
stick KY,15
if KY=1 :MDX=-16
if KY=4 :MDX=16
if KY=2 :MDY=-12
if KY=8 :MDY=12

MPX0=(MX+MDX)/40 :MPX1=(MX+MDX+39)/40
MPY0=(MY+MDY)/40 :MPY1=(MY+MDY+39)/40
if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 {
MDX=0 :MDY=0 }

MX=MX+MDX :MY=MY+MDY
return

*ikkai_ht
pos MX,MY :gcopy 1,0,0,40,40
return



この記事に返信する


沢渡

リンク

2017/8/14(Mon) 10:43:01|NO.80945


if MX\32=0 :MDX=0 if MY\24=0 :MDY=0
なぜか、MDXとMDYが0になるのが条件付きですが、これ「MDX=0 : MDY=0」として、
問答無用でどっちも0にすればいいと思うのですが?

もしこの処理に意味があるのなら、自機にブレーキがかからない理由は、
初期座標の(80,80)が32ないし24の倍数でないからです。
たとえば(64,48)のように32や24の倍数にしてやれば、上手く止まります。



ddd

リンク

2017/8/14(Mon) 11:18:24|NO.80946

回答ありがとうございます
 これ「MDX=0 : MDY=0」として、
 問答無用でどっちも0にすればいいと思うのですが?
具体的にどうすればいいのでしょうか



沢渡

リンク

2017/8/14(Mon) 11:23:34|NO.80947

いや、

if MX\32=0 :MDX=0 if MY\24=0 :MDY=0
これを、

MDX=0 : MDY=0
こうすればいいんじゃないの?という話なのですが、
そうせずに「32の倍数の時だけ」「24の倍数の時だけ」としているのには、
いったいどんな意味があるのかと思いまして。



ddd

リンク

2017/8/17(Thu) 05:49:02|NO.80976

「32の倍数の時だけ」「24の倍数の時だけ」としているのは
ボタンを押したときっだけ移動するようにしたかったためです
解決しましたありがとうございます。



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