ポンド オブ プッシュ

投稿者:       256 mini 池ちゃん(翡翠ヶ池) 投稿日:2013/01/18 17:45

えーと、とりあえずこれと開始スクリプトを載せておきますね
def pce()
return "playerCharacterEvent"
end

setFlag("k", true)
setVariable("壁", createArray())
kabe = -1

while kabe != 31
getVariable("壁")[kabe] = createArray()
kabe = kabe + 1
end

def km(a,b,c) #cが1ならそこに壁を作る0なら壁を無くす-1ならイベントを作る
 case c
 when 1
 getVariable("壁")[a][b] = 1
 when 0
 getVariable("壁")[a][b] = 0
 else
 getVariable("壁")[a][b] = c
 end
end

def kg(a,b)
c = true
 if getVariable("壁")[a][b] == 1
 c = false

 end
return c
end

def eve(a,b)
g = getVariable("壁")[a][b]
            case g
              when -1
              km(5,5,0) ; km(2,8,0) ; setFlag("k", false) ;
              playSound(16423)
               when -2
               speak("テストありがとうございました^^")
               openActivityFeedWindow("テストありがとうございました^^")
               goEnding()
            end

end

a = 0
b = 0
while a != 12
 while b != 16
 km(b,a,1)
 b = b + 1
 end
b = 0
a = a + 1
end

a = 0
while a != 16
km(-1,a,1)
km(a,-1,1)
a = a + 1
end

a = 0
while a != 16
km(16,a,1)
km(a,12,1)
a = a + 1
end

#木
km(1,0,1) ; km(1,1,1) ; km(3,1,1) ; km(5,1,1) ; km(7,2,1) ;
km(8,2,1) ; km(9,2,1) ; km(10,2,1) ; km(13,2,1) ; km(2,3,1) ; km(3,3,1) ;
km(4,3,1) ; km(5,3,1) ; km(7,3,1) ; km(8,3,1) ; km(13,3,1) ; km(5,4,1) ;
km(6,4,1) ; km(11,4,1) ; km(13,4,1) ; km(11,5,1) ; km(13,5,1) ; km(14,5,1) ;
km(4,6,1) ; km(5,6,1) ; km(6,6,1) ; km(7,6,1) ; km(8,6,1) ; km(10,6,1) ;
km(11,6,1) ; km(14,6,1) ; km(4,7,1) ; km(10,7,1) ; km(14,7,1) ; km(1,8,1) ;
km(3,8,1) ; km(4,8,1) ; km(6,8,1) ; km(9,8,1) ; km(10,8,1) ; km(11,8,1) ;
km(1,9,1) ; km(3,9,1) ; km(7,9,1) ; km(8,9,1) ; km(9,9,1) ; km(10,9,1) ;
km(11,9,1) ; km(12,9,1) ; km(13,9,1) ; km(1,10,1) ; km(9,10,1) ; km(10,10,1) ;
km(1,11,1) ; km(2,11,1) ; km(3,11,1) ; km(4,11,1) ; km(5,11,1) ;
 km(7,0,1) ; km(7,1,1) ;
#壁
km(0,0,1) ;km(5,5,1) ; km(2,8,1) ;
#イベント
km(6,3,-1) ; km(14,10,-2) ;
#追加
km(6,9,1) ; km(3,1,0) ; km(5,1,0) ; km(5,2,1) ; km(7,4,1) ; km(11,10,1) ;
#-----------------------------
setVariable("像1posX", 2)
setVariable("像1posY", 5)
def p()
y = getVariable("像1posX") ; x = getVariable("像1posY") ;
if !getFlag("くぼみに移動したか")
  case getEventDirection("playerCharacterEvent")
    when getDownDirection()

case speakWithSelect(2, "押す", "引く", 
    "ブロックがある・・・")
  when 0
       setVariable("像1posY", getVariable("像1posY") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") - 1)
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(x,y) #|| !kg(z,w)
       setVariable("像1posY", getVariable("像1posY") - 1 )
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") - 1)
       speak("")
       end
  when 1
      setVariable("像1posY", getVariable("像1posY") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") - 1) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(z,w)
       setVariable("像1posY", getVariable("像1posY") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") - 1)
       speak("")
       end
end

    when getUpDirection()
case speakWithSelect(2, "押す", "引く", 
    "ブロックがある・・・")
  when 0
      setVariable("像1posY", getVariable("像1posY") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") + 1) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(x,y) #|| !kg(z,w)
       setVariable("像1posY", getVariable("像1posY") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") + 1)
       speak("")
       end
  when 1
       setVariable("像1posY", getVariable("像1posY") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") + 1) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(z,w)
       setVariable("像1posY", getVariable("像1posY") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX"))
       setVariable("自機キャラ座標Y", getVariable("像1posY") + 1)
       speak("")
       end
end

    when getRightDirection()
case speakWithSelect(2, "押す", "引く", 
    "ブロックがある・・・")
  when 0
       setVariable("像1posX", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX")  - 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY")) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(x,y) #|| !kg(z,w)
       setVariable("像1posX", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY"))
       speak("")
       end 
 when 1
       setVariable("像1posX", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY")) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(z,w)
       setVariable("像1posX", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY"))
       speak("")
       end
end

    when getLeftDirection()
case speakWithSelect(2, "押す", "引く", 
    "ブロックがある・・・")
  when 0
       setVariable("像1posX", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY")) 
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(x,y) #|| !kg(z,w)
       setVariable("像1posX", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY"))
       speak("")
       end
  when 1
       setVariable("像1posX", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY"))
       x = getVariable("像1posX") ; y = getVariable("像1posY") ;
       z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
       if !kg(z,w)
       setVariable("像1posX", getVariable("像1posX") - 1)
       setVariable("自機キャラ座標X", getVariable("像1posX") + 1)
       setVariable("自機キャラ座標Y", getVariable("像1posY"))
       speak("")
       end 
end

end
#像の位置を移動
  setEventTarget("event0", getVariable("像1posX"), getVariable("像1posY")) 
  setEventTarget("playerCharacterEvent", getVariable("自機キャラ座標X"), getVariable("自機キャラ座標Y")) 
  runEventMove()
  warpEvent("event0", getVariable("像1posX"), getVariable("像1posY"))
  warpEvent(pce(), getVariable("自機キャラ座標X"), getVariable("自機キャラ座標Y"))
  eve(getVariable("像1posX"),getVariable("像1posY"))

else

end

end

def r()
#このifは「移動目的先でのイベント発生」に関係します
if !getFlag("くぼみに移動したか")
  case speakWithSelect(2,"はい","いいえ", 
    "像を元の位置に戻しますか?")
    when 0
      setEventDirection("event1", getLeftDirection())
#像1のX,Y座標の変数を元の数値に
      setVariable("像1posX", 2)
      setVariable("像1posY", 5)
#像1を元の位置に移動
      setEventTarget("event0", 2, 5)
      runEventMove()
      setEventDirection("event1", getDownDirection())
      warpEvent("event0", getVariable("像1posX"), getVariable("像1posY"))
    when 1
    
  end

else
  speak("スイッチはもう反応しないようだ")
end

end
playBGM(157600)



説明は後日追加しまーす

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Orichara01 2 700x700  mini ラジアン(投稿日:2013/01/18 20:36, 履歴)
ゲームをプレーして木の上にブロックが乗っかるバグがあったので報告

・km(5,2,1); km(7,4,1); km(11,10,1)が足りない。
・km(9,8,1)の「,」が「.」になっている。


それとスクリプトを見て気づいたことをいくつか

・「km(b,a,1)」→「km(b,a,0)」のような気が(すでに直しているかもしれませんが)。
・「getVariable("壁")[k][kk] = createArray()」の部分の繰り返しがいらないような。

それと余計なことかもしれませんが、p()を
def p()
  y = getVariable("像1posX") ; x = getVariable("像1posY") ;
  if !getFlag("くぼみに移動したか")
    case getEventDirection("playerCharacterEvent")
      when getDownDirection()
        mx = 0; my = 1
      when getUpDirection()
        mx = 0; my = (-1)
      when getRightDirection()
        mx = 1; my = 0
      when getLeftDirection()
        mx = (-1); my = 0
    end
    case speakWithSelect(2, "押す", "引く", "ブロックがある・・・")
      when 0
        push = 1
      when 1
        push = (-1)
    end
    setVariable("像1posX", getVariable("像1posX") + mx * push)
    setVariable("像1posY", getVariable("像1posY") + my * push)
    setVariable("自機キャラ座標X", getVariable("像1posX") - mx * push)
    setVariable("自機キャラ座標Y", getVariable("像1posY") - my * push)
    x = getVariable("像1posX") ; y = getVariable("像1posY") ;
    z = getVariable("自機キャラ座標X") ; w = getVariable("自機キャラ座標Y") ;
    if !kg(x,y) #|| !kg(z,w)
      setVariable("像1posX", getVariable("像1posX") - mx * push)
      setVariable("像1posY", getVariable("像1posY") - my * push)
      setVariable("自機キャラ座標X", getVariable("像1posX") - mx * push)
      setVariable("自機キャラ座標Y", getVariable("像1posY") - my * push)
      speak("")
    end

    #像の位置を移動
    setEventTarget("event0", getVariable("像1posX"), getVariable("像1posY")) 
    setEventTarget("playerCharacterEvent", getVariable("自機キャラ座標X"), getVariable("自機キャラ座標Y")) 
    runEventMove()
    warpEvent("event0", getVariable("像1posX"), getVariable("像1posY"))
    warpEvent(pce(), getVariable("自機キャラ座標X"), getVariable("自機キャラ座標Y"))
    eve(getVariable("像1posX"),getVariable("像1posY"))

  else

  end

end

とするともうちょっとすっきりするかもです。
Orichara01 2 700x700  mini ラジアン(投稿日:2013/01/18 20:39, 履歴)
myが青くなっているようなので、
mx → m_x、my → m_yに変更です。
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2013/01/18 21:47, 履歴)
報告ありがとうございますorz
以下の部分を直しました
・km(5,2,1); km(7,4,1); km(11,10,1)が足りない。
・km(9,8,1)の「,」が「.」になっている。 
・「km(b,a,1)」→「km(b,a,0)」

>・「getVariable("壁")[k][kk] = createArray()」の部分の繰り返しがいらないような。

・・・あ

>それと余計なことかもしれませんが、p()を (中略)とするともうちょっとすっきりするかもです。

おぉ、かなり縮小された。

case文を上手く利用すれば結構縮まる。とメモしておく。


むむむ?

#(略)
    if !kg(x,y) || !kg(z,w) #(#)を無くしておかないたほうがいいのかな?(自分で考えろよ)
      setVariable("像1posX", getVariable("像1posX") - mx * push)
      setVariable("像1posY", getVariable("像1posY") - my * push)
      setVariable("自機キャラ座標X", getVariable("像1posX") - mx * push)
      setVariable("自機キャラ座標Y", getVariable("像1posY") - my * push)
      speak("")
     end

#(略)


>myが青くなっているようなので、mx → m_x、my → m_yに変更です。
おk
Material 86479 3 mini qhqh123(投稿日:2013/01/18 18:20, 履歴)
なるほど わからない