メモメモ     ...〆(・_・)

投稿者:      mini きゅうり 投稿日:2012/12/30 21:38

基本的にゲームを作り始める時に書くスクリプトをメモ。
startInput()

minloop = 1
while minloop == 1
  while hasInput()
    takeInput()
    if
    end
  end
  waitTime(30)
end

endInput()
goEnding()


#-----関数設定-----
def gHyoji(g_id,m_x,m_y,m_w,m_h,s_x,s_y,s_w,s_h,g_x,g_y,g_kai,g_z)
  s_id = createSprite(g_id)
  setSpriteRect(s_id, m_x, m_y, m_w, m_h, s_x, s_y, s_w, s_h)
  setSpritePosition(s_id, g_x, g_y)
  setSpriteRotation(s_id, g_kai)
  setSpriteZOrder(s_id, g_z)  
  return s_id
end

def txtHyoji(x,y,w,h,txt)
  txt_id = createText(x, y, w, h)
  setText(txt_id, txt)
  return txt_id
end


くっつけてみた。
#-----初期設定-----
#メニュー類
setMenuItemVisible(getMenuBackLog(), false)
setMenuItemVisible(getMenuHideWindow(), false)
setMenuItemVisible(getMenuSave(), false)
setMenuItemVisible(getMenuLoad(), false)
setMenuOpenKeyEnable(false)

#変数類
co = 1#画像更新時に1にする 更新の「こ」(co)

L = 0#左キーが押されてる間は1
R = 0#右(ry
U = 0#上(ry
D = 0#下(ry

#-----関数設定-----
def gHyoji(g_id,m_x,m_y,m_w,m_h,s_x,s_y,s_w,s_h,g_x,g_y,g_kai,g_z)
  s_id = createSprite(g_id)
  setSpriteRect(s_id, m_x, m_y, m_w, m_h, s_x, s_y, s_w, s_h)
  setSpritePosition(s_id, g_x, g_y)
  setSpriteRotation(s_id, g_kai)
  setSpriteZOrder(s_id, g_z)  
  return s_id
end

def txtHyoji(x,y,w,h,txt)
  txt_id = createText(x, y, w, h)
  setText(txt_id, txt)
  return txt_id
end

#画像類
setCanvasVisible(true)

#----メインループ----
startInput()
minloop = 1
while minloop == 1
  while hasInput()
    takeInput()
    if isKeyDown("LEFT")
      L = 1
    elsif isKeyUp("LEFT")
      L = 0
    elsif isKeyDown("RIGHT")
      R = 1
    elsif isKeyUp("RIGHT")
      R = 0
    elsif isKeyDown("UP")
      U = 1
    elsif isKeyUp("UP")
      U = 0
    elsif isKeyDown("DOWN")
      D = 1
    elsif isKeyUp("DOWN")
      D = 0
    end

    #-----いろいろ実行-----


    #--------------------
    if co == 1
      drawCanvas()
      co = 0
    end
  end
  waitTime(30)
end


FPS管理のスクリプトをWikiからお借りしたver.
# ----- 初期設定 ----- 
# - メニュー類
setMenuItemVisible(getMenuBackLog(), false)
setMenuItemVisible(getMenuHideWindow(), false)
setMenuItemVisible(getMenuSave(), false)
setMenuItemVisible(getMenuLoad(), false)
setMenuOpenKeyEnable(false)

# ----- 変数の設定 -----
# - FPS関係
fps = 0
fpscount = 0
oldfpstime = 0

draw_setting = 50 #ゲームのメイン処理実行タイミングを設定(ミリ秒)
draw_count = 0
olddrawtime = 0
draw_flg = false

# - キー関係
L = 0#左キーが押されてる間は1
R = 0#右(ry
U = 0#上(ry
D = 0#下(ry

# ----- 関数設定 -----
def gHyoji(g_id,m_x,m_y,m_w,m_h,s_x,s_y,s_w,s_h,g_x,g_y,g_kai,g_z)
  s_id = createSprite(g_id)
  setSpriteRect(s_id, m_x, m_y, m_w, m_h, s_x, s_y, s_w, s_h)
  setSpritePosition(s_id, g_x, g_y)
  setSpriteRotation(s_id, g_kai)
  setSpriteZOrder(s_id, g_z)  
  return s_id
end

def txtHyoji(x,y,w,h,txt)
  txt_id = createText(x, y, w, h)
  setText(txt_id, txt)
  return txt_id
end

# - 画像類
setCanvasVisible(true)

# ----- メインループ -----
setBaseTime() #時間計測の開始
startInput() #入力受付の開始
minloop = 1
while minloop == 1
    #----- FPSの計測と判定 -----
    timer = getTime() #差分の時間を取得
    
    fps = fps + 1 #FPSのカウント
    fpscount = timer - oldfpstime
    
    if fpscount < (draw_setting * fps)
        draw_flg = true #最低限のFPSを満たしている場合描画OK
    else
        #最低限のFPSを満たしていない場合、前回描画したかどうか
        if draw_flg
            draw_flg = false
        else
            draw_flg = true
        end
    end
    
    if fpscount > 999
        #1秒を超えたらFPSのカウントをリセットする
        fps = 0
        oldfpstime = timer
        fpscount = fpscount % 1000
    end
    
    #----- ゲームのメイン処理実行判定 -----
    draw_count = timer - olddrawtime #メイン処理実行タイミングのカウント
    
    if draw_setting < draw_count
        #ゲームのメイン処理実行タイミングになっていたら、カウントをリセットする
        olddrawtime = timer
        draw_count = draw_count % draw_setting
        while hasInput()
          takeInput()
          if isKeyDown("LEFT")
            L = 1
          elsif isKeyUp("LEFT")
            L = 0
          elsif isKeyDown("RIGHT")
            R = 1
          elsif isKeyUp("RIGHT")
            R = 0
          elsif isKeyDown("UP")
            U = 1
          elsif isKeyUp("UP")
            U = 0
         elsif isKeyDown("DOWN")
            D = 1
          elsif isKeyUp("DOWN")
            D = 0
          end
        end
        #----- ゲームのメイン処理を入れる場所 -----
        #(ゲームの終了時はmainloopをfalseに)
        
        
        if draw_flg
            drawCanvas() #描画OKならキャンバスを更新
        end
    else
        waitTime(1) #ゲームのメイン処理実行タイミングになるまで保留
    end
end
endInput() #入力受付の終了


Q.なんでtrueじゃなくて1なんですか?
A.入力を簡潔にする為。ほぼどっちでも同じですが。
 UやD、L、Rとかも同じです。

ちなみにこれをコピペしただけでは何も動作しません。

コメントする

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

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2012/12/30 21:51, 履歴)
wait系が一切ないのが
気になるとか。
      mini きゅうり(投稿日:2012/12/30 22:01, 履歴)
あ、入れ忘れてました;;
すいません、入れました。
      mini きゅうり(投稿日:2012/12/30 22:06, 履歴)
追記:ご報告ありがとうございます。