初めて横スクロールアクションゲームを作った件

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2015/07/19 17:31

まだ実験段階ですが、こちら。
横スクアクション実験ゲーム - 【ノベルゲーム】

ちなみにこれがスクリプトです。
#□□□□□□□□□□□
#□JUMP&DASH□
#□□□□□□□□□□□

#_/_/_/_/_/_/_/_/システム設定_/_/_/_/_/_/_/_/
#メニュー項目等の表示OFF
setMenuItemVisible(getMenuBackLog(), false)
setMenuItemVisible(getMenuSave(), false)
setMenuItemVisible(getMenuLoad(), false)
setHelpVisible(false)
setMenuOpenKeyEnable(false)

#デバッグ設定
setFlag("デバッグ", false)

#_/_/_/_/_/_/_/_/関数設定_/_/_/_/_/_/_/_/
def Array(a) #配列設定用
  a = splitString(a, ",")
  i = 0
  while i < getArrayLength(a)
    a[i] = toNumber(a[i])
    i = i + 1
  end
return a
end

def enc(d, h) #マップ数値データをアルファベットに変換
	Mapd = splitString(d, "")
	i = 0; n = 0 #n チップID
	ms = ""; txt = "" #ms 文字列のチップID
	Al = splitString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", ""); al = splitString("abcdefghijklmnopqrstuvwxyz","")
	while i < getArrayLength(Mapd)
		if (Mapd[i] != " ") && (Mapd[i] != ",") && (Mapd[i] != "\n")
			ms = ms + Mapd[i]
		elsif Mapd[i] == "\n"
			txt = txt + "\n"
		elsif Mapd[i] == ","
			n = toNumber(ms)
			txt = txt + Al[n % h] + al[floor(n / h)]
			ms = ""
		end
		i = i + 1
	end
	if getFlag("デバッグ") then speakFullScreen(false, txt + "\n"); end
	return txt
end

def MapSet(d) #マップ設定
	MapArf = splitString(d, "")
	setVariable("マップデータ",createArray()) #文字列
	getVariable("マップデータ")[0] = createArray()
	setVariable("マップ高", 0); setVariable("マップ長", 0)
	di = 0; dd = 0 #代入用 iは横 dは縦
	i = 0
	d = "" #代入用文字
	A = ""
	f = true
	while f
		A = MapArf[i]
		if A >= "A" && A <= "O"
			d = A
		elsif A >= "a" && A <= "z"
			getVariable("マップデータ")[dd][di] = d + A
			di = di + 1
		elsif A == "\n"
			if getVariable("マップ長") < di
				setVariable("マップ長", di)
			end
			dd = dd + 1; di = 0
			getVariable("マップデータ")[dd] = createArray()
		elsif getArrayLength(MapArf) <= i
			setVariable("マップ高", dd)
			f = false
		end
		i = i + 1
	end
end

def BGprint(name,nan,x,y,z) #マップ表示
	mx = 0; my = 0
	hd = splitString(nan, "")
	case hd[0]
	when "A"
		my = 0
	when "B"
		my = 1
	when "C"
		my = 2
	when "D"
		my = 3
	when "E"
		my = 4
	when "F"
		my = 5
	when "G"
		my = 6
	when "H"
		my = 7
	when "I"
		my = 8
	when "J"
		my = 9
	when "K"
		my = 10
	when "L"
		my = 11
	when "M"
		my = 12
	when "N"
		my = 13
	when "O"
		my = 14
	end
	my = my * 32
	case hd[1]
	when "a"
		mx = 0
	when "b"
		mx = 1
	when "c"
		mx = 2
	when "d"
		mx = 3
	when "e"
		mx = 4
	when "f"
		mx = 5
	when "g"
		mx = 6
	when "h"
		mx = 7
	when "i"
		mx = 8
	when "j"
		mx = 9
	when "k"
		mx = 10
	when "l"
		mx = 11
	when "m"
		mx = 12
	when "n"
		mx = 13
	when "o"
		mx = 14
	when "p"
		mx = 15
	when "q"
		mx = 16
	when "r"
		mx = 17
	when "s"
		mx = 18
	when "t"
		mx = 19
	end
	mx = mx * 32
	setSpriteRect(name, mx, my, 32, 32, x, y, getVariable("ブロックサイズ"), getVariable("ブロックサイズ"))
	setSpriteZOrder(name, z)
end

def ZT(a) #絶対値
	if a < 0 then a * (-1); end
	return a
end

#_/_/_/_/_/_/_/_/データ設定_/_/_/_/_/_/_/_/
LVL = 0 #ゲーム難易度
ENMkind = 1 #敵の種類の数
setVariable("ブロックサイズ", 50) #ブロックサイズ


#Zオーダー
plZ = 10 #プレーヤー
mobZ = 8 #MOB
mapZ = 5 #マップ
bgZ = 0 #背景

#素材ID
CHARASPid = createArray() #画像ID
CHARASPid[0] = 182700 #背景画像ID
CHARASPid[1] = 79094 #マップ画像ID
CHARASPid[2] = 87833
CHARASPid[3] = null
BGMid = 8803 #音楽ID
SNDid = createArray() #効果音
SNDid[0] = 86807 #スタート
SNDid[1] = 110762 #ジャンプ
SNDid[2] = null #ダメージ
SNDid[3] = 161632 #ゴール
SNDid[4] = 143612 #ゲームオーバー
SNDid[5] = null #アイテム取得

#アニメ数
ani_kind = createArray()

#プレーヤーアニメーションデータ
	ani_kind[0] = Array("2,4,1,1,1")
	MYanm = createArray()
	i = 0
	while i < 40
		MYanm[i] = createArray()
		i = i + 1
	end
	#_/_/順行_/_/
	#停止時
	#x,y,w,h
	MYanm[0] = Array("0,96,96,96"); MYanm[1] = Array("96,96,96,96")
	
	#移動時
	MYanm[4] = Array("192,96,96,96"); MYanm[5] = Array("288,96,96,96"); MYanm[6] = Array("384,96,96,96"); MYanm[7] = Array("480,96,96,96")

	#ジャンプ時
	MYanm[8] = Array("576,96,96,96")

	#降下時
	MYanm[12] = Array("672,96,96,96")

	#ダメージ受けた時
	MYanm[16] = Array("864,96,96,96")


	#_/_/逆行_/_/
	#停止時
	MYanm[20] = Array("0,0,96,96"); MYanm[21] = Array("96,0,96,96")
	
	#移動時
	MYanm[24] = Array("192,0,96,96"); MYanm[25] = Array("288,0,96,96"); MYanm[26] = Array("384,0,96,96"); MYanm[27] = Array("480,0,96,96")

	#ジャンプ時
	MYanm[28] = Array("576,0,96,96")

	#降下時
	MYanm[32] = Array("672,0,96,96")

	#ダメージ受けた時
	MYanm[36] = Array("864,0,96,96")

#モブAアニメーションデータ
	ani_kind[1] = Array("2,4,1,1,1")
	MOBAanm = createArray()


#_/_/_/_/_/_/_/_/タイトル_/_/_/_/_/_/_/_/
stg = speakWithSelect(3,"ステージ1","ステージ2","ステージ3","どのステージで遊びますか?")

#_/_/_/_/_/_/_/_/帰還用ループ_/_/_/_/_/_/_/_/
while 1
	#_/_/_/_/_/_/_/_/初期設定_/_/_/_/_/_/_/_/
	#キャンバスの初期化
	setCanvasVisible(false)
	deleteAllSprite()
	drawCanvas()
	setCanvasVisible(true)
	setSpriteCameraOffset(0, 0)
	setSpriteCameraRotation(0)
	setSpriteCameraScale(1.0, 1.0)

	if getFlag("デバッグ")
		LVL = LVL + 10 #ゲーム難易度
	else
		LVL = LVL + 1 #ゲーム難易度
	end
	OVA = false #ゲーム終わるか
	insky = true #空中にいるか
	time = 0 #ループ回数設定
	FT = 0; FS = 0; FJ = 0 #移動の力
	X = 0; Y = 0; X1 = 0; Y1 = 0
	xi = 0; yi = 0
	SFX = 0 #0計算しない 1加算 2減算
	SFY = 0
	m = 0 #0通常 1クリア 2ゲームオーバー
	k = 0 #ゴールタイム
	#キー初期化
	keyFlag = Array("0,0,0")
	#カメラ位置
	CameraX = 0; CameraY = 0;

	#テキスト管理
	deleteTextAll()
	textID = createText(10, 34, 520, 420) #デバッグ
	txt1 = createText(800 / 2 - 65, 600 / 2 - 100, 300, 100)

	#キャラステータス管理 0番目はプレーヤー
	chara_st = createArray()
	case stg
	when 0
		chara_st[0] = Array("2,0,0,3,0,96,220,0,0,96,96,22,8,50,83,8,0,0,12,-0.2,0")
	when 1
		chara_st[0] = Array("2,0,0,3,0,0,0,0,0,96,96,22,8,50,83,5,0,0,15,-0.2,0")
		chara_st[0][5] = 3 * getVariable("ブロックサイズ"); chara_st[0][6] = 44 * getVariable("ブロックサイズ")
	when 2
		chara_st[0] = Array("2,0,0,3,0,0,0,0,0,96,96,22,8,50,83,10,0,0,14,-0.20,0")
		chara_st[0][5] = 1 * getVariable("ブロックサイズ"); chara_st[0][6] = 6 * getVariable("ブロックサイズ")
	end
	chara_st[0][17] = chara_st[0][6]; chara_st[0][20] = chara_st[0][5]
	chara_st[0][15] = chara_st[0][15] + LVL - 1; chara_st[0][18] = chara_st[0][18] + (LVL * 2) - 1;chara_st[0][19] = chara_st[0][19] * LVL #
	#chara_st[1] = Array("3,1,0,0,0,500,472,0,0,96,96,20,0,56,96,8,0,0,10,0,0"); chara_st[1][17] = chara_st[1][6]; chara_st[1][20] = chara_st[1][5]

	#キャラスプライト管理
	chara_sp = createArray()
	chara_sp[0] = createSprite(CHARASPid[chara_st[0][0]])
	#chara_sp[1] = createSprite(CHARASPid[chara_st[1][0]])

	#マップ設定
#maps = <<EOS
#AtAtAtAtAtAtAtAaAtAtAtAtAt
#Ae
#As
#AsAtAaAaAaAa
#As
#AsAtAtAtAtAtAaAtAtAbAcAdAtAtAtAtAtAtAtAtAtAaAtAtAtAtAtAtAbAcAd
#As
#As
#As
#As
#AsAtAtAtAtAtAtAaAtAtAtAtAtAtAtAaAt
#CrAcAcAcAcAcAcAdAtAtAbAcAcAcAcAcAcAcAcAcAcAcAcAcAcAdAtAtAbAdAt
#
#
#NsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNs
#EOS

	case stg
	when 0
mapsnd = <<EOS #マップ数値データ(後ろに,を付けること)
201, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 176,
426, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 451, 451, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, 451, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 426, 476, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 427, 476, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 450, 475, 475, 475, 475, 475, 475, 25, 75, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 25, 50, 50, 75, 475, 475, 475, 475, 25, 50, 50, 50, 50, 75, 475, 475, 475, 475, 475, 450, 475, 475, 125, 175, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 425, 475, 475, 427, 477, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 475, 475, 475, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 25, 50, 50, 50, 50, 50, 50, 50, 75, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 25, 50, 50, 50, 75, 475, 475, 464, 475, 475, 475, 204, 229, 254, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 429, 454, 479, 426, 476,
450, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475, 429, 454, 479, 426, 476,
350, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 75, 475, 475, 475, 475, 475, 475, 475, 25, 50, 50, 50, 50, 50, 50, 377, 477,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475,
463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
EOS
	when 1
mapsnd = <<EOS
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 464, 475, 475, 475, 475, 475, 475, 475, 3,
3, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 464, 475, 475, 475, 475, 475, 475, 475, 3,
3, 475, 475, 475, 475, 475, 475, 475, 464, 404, 475, 464, 475, 475, 3, 475, 475, 475, 475, 3,
3, 475, 475, 475, 3, 3, 3, 3, 3, 3, 3, 3, 475, 475, 475, 475, 475, 475, 3, 3,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3,
3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 3,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 3,
3, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 3,
3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 3,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475,
475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
3, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475,
3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3,
3, 475, 475, 475, 178, 3, 3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 475,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475,
475, 3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 3, 3, 3, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475,
475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475,
475, 475, 475, 3, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 3, 475, 475,
3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 3,
475, 3, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3,
475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475,
0, 475, 3, 3, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 3, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475,
475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 3, 475, 475, 475, 3, 475, 475, 475,
475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475,
3, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475, 3, 3, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 3, 3, 475, 475, 475, 475, 475, 475,
3, 3, 3, 3, 3, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 3, 3, 3, 3, 3,
EOS
	when 2
mapsnd = <<EOS
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 464, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 178, 475, 475, 178, 178, 475, 475, 178, 178, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475,
178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 178, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 475, 475, 178, 178, 178, 475, 475, 475, 178, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 178, 178, 475, 475, 475,
475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 475, 475, 475, 475, 475, 475, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 204, 229, 254,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 429, 454, 479,
178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 475, 475, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 178, 178, 178, 475, 475, 178, 178, 475, 475, 178, 475, 178, 475, 178, 475, 178, 475, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 475, 475, 475, 475, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 475, 475, 178, 178, 178, 178, 178, 178, 178, 178, 178,
EOS
	end

	maps = enc(mapsnd, 25) #アルファベットデータに変換 (x20,y25)
	MapSet(maps)

	#マップ表示 ついでに当たり判定
	setVariable("当たり判定", createArray())
	d = 0
	while d < getVariable("マップ高")
		getVariable("当たり判定")[d] = createArray()
		i = 0
		while i < getVariable("マップ長")
			getVariable("当たり判定")[d][i] = 0
			i = i + 1
		end
		d = d + 1
	end
	mapspr = createArray()
	d = 0; j = 0
	while d < getVariable("マップ高")
		i = 0
		while i < getArrayLength(getVariable("マップデータ")[d])
			nan = getVariable("マップデータ")[d][i]
			if nan == "Ns"
				getVariable("当たり判定")[d][i] = 2 #落下判定用
			elsif nan == "Os"
				getVariable("当たり判定")[d][i] = 3 #ゴール判定用
			elsif nan != "At"
				mapspr[j] = createSprite(CHARASPid[1])
				BGprint(mapspr[j], nan, i * getVariable("ブロックサイズ"), d * getVariable("ブロックサイズ"), mapZ)
				getVariable("当たり判定")[d][i] = 1
			end
			i = i + 1; j = j + 1
		end
		d = d + 1
	end

	#背景
	bg = createSprite(CHARASPid[0])
	setSpriteRect(bg, 0, 0, 800, 600, 0, 0, 800, 600)
	setSpriteZOrder(bg, bgZ)

	#カメラ独立設定
	setSpriteIndependentCamera(bg, true)

	#_/_/_/_/_/_/_/_/メインループ_/_/_/_/_/_/_/_/
	startInput()
	playSound(SNDid[0])
	drawCanvas()
	while !OVA
		#_/_/_/_/_/_/_/_/リセット処理_/_/_/_/_/_/_/_/
		id = 0 #一時保管用

		#_/_/_/_/_/_/_/_/メッセージ_/_/_/_/_/_/_/_/
		case m
		when 0
			if time == 0
				setText(txt1, "S T A R T\n   Lv." + LVL)
			elsif time == 70
				playBGM(BGMid)
				setMusicVolume(2)
				setText(txt1, "")
			end
		when 1
			setText(txt1, "ゴーール!")
			fadeOutMusicStop(2000)
			playSound(SNDid[3])
			m = 3
			k = time
		when 2 #ゲームオーバー
			setText(txt1, "ゲームオーバー")
			stopBGM()
			playSound(SNDid[4])
			waitTime(2000)
			if getFlag("デバッグ")
				OVA = true
			else
				goBadEnding()
			end
		when 3
			if time > (k + 100)
				case speakWithSelect(2, "はい", "いいえ", "記録を残しますか?\n※ログインしているユーザー限定")
				when 0
					te = "ステージ:"+ (stg + 1) +" 記録:Lv." + LVL + " カウント:" + k
					openActivityFeedWindow(te)
				end
				case speakWithSelect(2, "はい", "いいえ", "ゲームを続けますか?")
				when 0
					OVA = true
				when 1
					goEnding()
				end
			end
		end

		#_/_/_/_/_/_/_/_/キャラ表示_/_/_/_/_/_/_/_/
		i = 0
		while i < getArrayLength(chara_st)
			if (time % 10) == 0 then chara_st[i][2] = chara_st[i][2] + 1; end
			p = 0 #向きによって値を足す
			ord = 0 #正の向きなら何番か
			ani = chara_st[i][2] % ani_kind[i][chara_st[i][3]] #アニメ用にいくつ足すか カウント % アニメ数
			if chara_st[i][4] == 1 then  p = 20; end
			case chara_st[i][3]
			when 0
				ord = 0
			when 1
				ord = 4
			when 2
				ord = 8
			when 3
				ord = 12
			when 4
				ord = 16
			end
			b = ord + p + ani

			case chara_st[i][1]
			when 0
				setSpriteRect(chara_sp[i], MYanm[b][0], MYanm[b][1], MYanm[b][2], MYanm[b][3], chara_st[i][5], chara_st[i][6], chara_st[i][9], chara_st[i][10])
				setSpriteZOrder(chara_sp[i], plZ)
			when 1

			end
			i = i + 1
		end

		#_/_/_/_/_/_/_/_/プレーヤーコントロール_/_/_/_/_/_/_/_/
		#_/キー入力_/
		while hasInput()
			takeInput()
			if isKeyDown("Z") || isKeyDown("UP") #ジャンプキー
				if chara_st[0][3] == 2 #ジャンプ中に押したら
					keyFlag[0] = 2
				else
					keyFlag[0] = keyFlag[0] + 1
				end
			elsif isKeyUp("Z") || isKeyUp("UP")
				keyFlag[0] = 0
			end

			if isKeyDown("RIGHT") then keyFlag[1] = 1; keyFlag[2] = 0; chara_st[0][4] = 0; end
			if isKeyDown("LEFT") then keyFlag[2] = 1; keyFlag[1] = 0; chara_st[0][4] = 1; end
			if isKeyUp("LEFT") then keyFlag[2] = 0; end
			if isKeyUp("RIGHT") then keyFlag[1] = 0; end
			if isKeyUp("D") then setFlag("デバッグ",true); end
		end

		#動作指定
		if ((keyFlag[1] == 1) || (keyFlag[2] == 1)) && ((chara_st[0][3] != 2) && (chara_st[0][3] != 3)) #空中にいなければ移動
			chara_st[0][3] = 1
		elsif chara_st[0][3] == 1
			chara_st[0][3] = 0
			chara_st[0][16] = 0
		end
		if (keyFlag[0] == 1) && (chara_st[0][3] != 2) && (chara_st[0][3] != 3) #空中にいなければジャンプ
			chara_st[0][3] = 2
		end

		#_/行動判定_/
		if chara_st[0][3] == 0 #停止
			FT = chara_st[0][15] / 10
			if (chara_st[0][4] == 0) && (0 < chara_st[0][16])
				chara_st[0][16] = chara_st[0][16] - FT #速度下げ
				chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
			elsif (chara_st[0][4] == 1) && (0 > chara_st[0][16])
				chara_st[0][16] = chara_st[0][16] + FT
				chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
			else
				chara_st[0][16] = 0
				chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
			end
		elsif chara_st[0][3] == 1 #進行
			FS = chara_st[0][15] / 10
			if chara_st[0][4] == 0
				if chara_st[0][15] > chara_st[0][16] then chara_st[0][16] = chara_st[0][16] + FS; else chara_st[0][16] = chara_st[0][15]; end #速度上げ
			elsif chara_st[0][4] == 1
				if -chara_st[0][15] < chara_st[0][16] then chara_st[0][16] = chara_st[0][16] - FS; else chara_st[0][16] = -chara_st[0][15]; end #速度上げ
			end
			chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
		elsif chara_st[0][3] == 2 #ジャンプ中
			FJ = chara_st[0][19]
			if keyFlag[0] == 1
				FJ = chara_st[0][18]
				keyFlag[0] = keyFlag[0] + 1 #長押し防止
				playSound(SNDid[1])
			end
			ytemp = chara_st[0][6]
			chara_st[0][6] = chara_st[0][6] + (chara_st[0][6] - (chara_st[0][17] - 0.5) - FJ)
			chara_st[0][17] = ytemp
			chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
		elsif chara_st[0][3] == 3 #落下中
			ytemp = chara_st[0][6]
			chara_st[0][6] = chara_st[0][6] + (chara_st[0][6] - (chara_st[0][17] - 0.5) - chara_st[0][19])
			chara_st[0][17] = ytemp
			chara_st[0][20] = chara_st[0][5]; chara_st[0][5] = chara_st[0][5] + chara_st[0][16]
		else
		
		end

		#_/当たり判定_/
		yi = chara_st[0][6]
		xi = chara_st[0][5]
		#speak("xi = "+xi+"\nyi = "+yi)
		if yi > chara_st[0][17] #Y下方向に進んでる
			SFY = 1
		elsif yi < chara_st[0][17]
			SFY = 2
		else
			SFY = 0
		end
		if xi > chara_st[0][20] #X右方向に進んでる
			SFX = 1
		elsif xi < chara_st[0][20]
			SFX = 2
		else
			SFX = 0
		end
		while (SFX != 0) || (SFY != 0)
			i = 1
			while i > 0
				i = 0
				Y = floor((chara_st[0][6] + chara_st[0][12]) / getVariable("ブロックサイズ")) #上
				ml = (chara_st[0][14] - chara_st[0][12]) / 2 #当たり判定長さ/2
				Y1 = floor((chara_st[0][6] + chara_st[0][12] + ml / 2) / getVariable("ブロックサイズ")) #上中央
				Y2 = floor((chara_st[0][6] + chara_st[0][12] + ml) / getVariable("ブロックサイズ")) #中央
				Y3 = floor((chara_st[0][6] + chara_st[0][12] + ml + ml / 2) / getVariable("ブロックサイズ")) #下中央
				Y4 = floor((chara_st[0][6] + chara_st[0][12] + chara_st[0][14]) / getVariable("ブロックサイズ")) #下

				PY4 = floor((chara_st[0][6] + 1 + chara_st[0][12] + chara_st[0][14]) / getVariable("ブロックサイズ")) #下

				X = floor((chara_st[0][5] + chara_st[0][11]) / getVariable("ブロックサイズ")) #上
				ml = (chara_st[0][13] - chara_st[0][11]) / 2 #当たり判定長さ/2
				X1 = floor((chara_st[0][5] + chara_st[0][11] + ml / 2) / getVariable("ブロックサイズ")) #上中央
				X2 = floor((chara_st[0][5] + chara_st[0][11] + ml) / getVariable("ブロックサイズ")) #中央
				X3 = floor((chara_st[0][5] + chara_st[0][11] + ml + ml / 2) / getVariable("ブロックサイズ")) #下中央
				X4 = floor((chara_st[0][5] + chara_st[0][11] + chara_st[0][13]) / getVariable("ブロックサイズ")) #下
				if getFlag("デバッグ") then setText(textID, "X = "+X+"\nX1 = "+X1+"\nX2 = "+X2+"\nX3 = "+X3+"\nX4 = "+X4+"\nY = "+Y+"\nY1 = "+Y1+"\nY2 = "+Y2+"\nY3 = "+Y3+"\nY4 = "+Y4); end
				if (((getVariable("当たり判定")[Y][X] == 1) && (getVariable("当たり判定")[Y][X1] == 1)) || (getVariable("当たり判定")[Y][X2] == 1) || ((getVariable("当たり判定")[Y][X3] == 1) && (getVariable("当たり判定")[Y][X4] == 1))) && (SFY == 2) #上側
					chara_st[0][6] = chara_st[0][6] + 1
					if chara_st[0][3] == 2
						chara_st[0][3] = 3
					end
					i = i + 1

				elsif (((getVariable("当たり判定")[Y4][X] == 1) && (getVariable("当たり判定")[Y4][X1] == 1)) || (getVariable("当たり判定")[Y4][X2] == 1) || ((getVariable("当たり判定")[Y4][X3] == 1) && (getVariable("当たり判定")[Y4][X4] == 1))) && (SFY == 1) #下側
					chara_st[0][6] = chara_st[0][6] - 1
					if (chara_st[0][3] == 2) || (chara_st[0][3] == 3)
						chara_st[0][3] = 0
					end
					chara_st[0][17] = chara_st[0][6]
					i = i + 1

				elsif (((getVariable("当たり判定")[Y4][X] == 2) && (getVariable("当たり判定")[Y4][X1] == 2) && (getVariable("当たり判定")[Y4][X2] == 2) && (getVariable("当たり判定")[Y4][X3] == 2) && (getVariable("当たり判定")[Y4][X4] == 2)) || ((X < -1) || (X4 > getVariable("マップ長")) || (Y4 > getVariable("マップ高")))) && (m == 0) #下側
					m = 2
					i = -10
					SFX = 0; SFY = 0
				else
					SFY = 0
				end

				if (getVariable("当たり判定")[PY4][X1] != 1) && (getVariable("当たり判定")[PY4][X2] != 1) && (getVariable("当たり判定")[PY4][X3] != 1) #擬似重力
					if (chara_st[0][3] != 2) && (chara_st[0][3] != 3)
						chara_st[0][3] = 3
					end
				end

				if (((getVariable("当たり判定")[Y][X] == 1) && (getVariable("当たり判定")[Y1][X] == 1)) || (getVariable("当たり判定")[Y2][X] == 1) || ((getVariable("当たり判定")[Y3][X] == 1) && (getVariable("当たり判定")[Y4][X] == 1))) && (SFX == 2) #左側
					chara_st[0][5] = chara_st[0][5] + 1
					if (getVariable("当たり判定")[Y1][X] == 1) || (getVariable("当たり判定")[Y2][X] == 1) || (getVariable("当たり判定")[Y3][X] == 1)
						chara_st[0][16] = 0
					end
					chara_st[0][20] = chara_st[0][5]
					i = i + 1
					#speak("左")

				elsif (((getVariable("当たり判定")[Y][X4] == 1) && (getVariable("当たり判定")[Y1][X4] == 1)) || (getVariable("当たり判定")[Y2][X4] == 1) || ((getVariable("当たり判定")[Y3][X4] == 1) && (getVariable("当たり判定")[Y4][X4] == 1))) && (SFX == 1) #右側
					chara_st[0][5] = chara_st[0][5] - 1
					if (getVariable("当たり判定")[Y1][X4] == 1) || (getVariable("当たり判定")[Y2][X4] == 1) || (getVariable("当たり判定")[Y3][X4] == 1)
						chara_st[0][16] = 0
					end
					chara_st[0][20] = chara_st[0][5]
					i = i + 1

				else
					SFX = 0
				end

				if (getVariable("当たり判定")[Y2][X2] == 3) && (m == 0)
					m = 1
				end
			end
		end

		#_/_/_/_/_/_/_/_/モブコントロール_/_/_/_/_/_/_/_/

		#_/_/_/_/_/_/_/_/マップスクロール処理_/_/_/_/_/_/_/_/
		CameraX = chara_st[0][5] + chara_st[0][9] / 2 - 400
		CameraY = chara_st[0][6] + chara_st[0][10] / 2 - 300
		setSpriteCameraPosition(CameraX, CameraY)
		time = time + 1
		drawCanvas()
		waitTime(0)
	end #メインループ
end #帰還用ループ

全部開始スクリプトに書いてます。

もうすこし完成形に近づけたいなぁー。

コメントする

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

コメント一覧

コメントはありません。