【現状報告】星間戦争制作状況24・マイページ完成・

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2014/08/18 16:03

ゲーム制作より宿題のほうが順調な114です。

夏休みがもう二週間もありません……

どうにか夏休み中に完成させたいです。

前回はAIがどうのこうの言っておりましたが、作ってません。

フローチャートが書けないんですよね~~

そのあいだ何してたかといいますと、手付かずのマイページを完成させました。



購入をクリックすると……



で、実際の購入画面はこんな感じ





リストは、使用可能なユニット・武器・エンジンの詳細をみることが出来ます。



そういやデータを入力してないやつあったな……

  • AI
数値を入れるってやつ、あったね

あれこちらのサイトのスクリプトをお借りして、Rmakeで使えるように書き換えてみました。

何が書いてあるのか分からなくて大変でしたよ……

その結果がこれ




どうでしょう、ちなみにスクリプト

  • 開始スクリプト
def tunagu(s)
	d = createArray()
	j = 0
	while j < getArrayLength(s[0])
		d[j] = createArray()
		j = j + 1
	end 
	i = 0
	while i < getArrayLength(s) #入れ替え
		n = 0
		while n < getArrayLength(s[i])
			d[n][i] = s[i][n]
			n = n + 1
		end
		i = i + 1
	end
    j = 0
	while j < getArrayLength(d)
		d[j] = joinArray(d[j], " .")
		j = j + 1
	end 
	d = joinArray(d, "\n")
	return d
end

#設定
def sv(a, b)
	setVariable(a, b)
end

#取得
def gv(a)
	return getVariable(a)
end

def Search(ax,ay,mv,di)
	if mv >= 0
		zo = 1
	else
		zo = -1
	end
	sv("ループ",true)
	while gv("ループ")
		down=gv("GW1")[ax][ay]
		nmv = mv - (down * zo)
		if ((nmv * zo) < 1) || ((gv("GW2")[ax][ay] * zo) > (nmv * zo))
			sv("ループ",false)
		else
			gv("GW2")[ax][ay] = nmv

			if di != 3 then Search(ax,ay-1,nmv,1); end
			if di != 4 then Search(ax+1,ay,nmv,2); end
			if di != 1 then Search(ax,ay+1,nmv,3); end
			if di != 2 then Search(ax-1,ay,nmv,4); end
		end
	end
end


  • シーン
setTextFontSize(15)
setTextViewMode(0)

sv("mv",5) #初期移動力
px = 5 #中央座標(索敵範囲半径)
py = 5 #〃

x=0
setVariable("GW1", createArray()) #引く数を入れる
setVariable("GW2", createArray()) #移動力を入れる
while x < px * 2 + 1
	y = 0
	getVariable("GW1")[x] = createArray()
	getVariable("GW2")[x] = createArray()
	while y < py * 2 + 1
		getVariable("GW1")[x][y] = 1
		getVariable("GW2")[x][y] = 0
		y = y + 1
	end
	x = x + 1
end
speakFullScreen(false, "引く数\n",tunagu(getVariable("GW1")))

getVariable("GW2")[px][py] = gv("mv")
Search(px,py-1,gv("mv"),1)
Search(px+1,py,gv("mv"),2)
Search(px,py+1,gv("mv"),3)
Search(px-1,py,gv("mv"),4)

speakFullScreen(false,"数値\n",tunagu(getVariable("GW2")))


初期移動力(mv)に負の値も入れられます。

あ、引く数には正の整数しかいれないで下さい、ループが終わらなくなります。

  • 余談
実は参考にしたサイト様のスクリプトは、配列に数値を入れるのではなく、マークを付けるだけだったので書き換えました。

さらに、数値が0になるまで調べていましたが、自分のスクリプトは0はすでに配列を作る時に入力しているので、数値が1になればそれ以上は調べないようにしました。

tunagu関数は表示するためだけに作った関数で、あまり関係なかったりします。

説明がわかりにくいかもしれませんが、はっきり言って自分も全て理解したわけではありません。

なぜ通常変数"ループ"をローカル変数にすとおかしくなるのかとか、通常変数"ループ"をローカル変数にすとおかしくなるとか

とりあえず今回は以上です、ありがとうございました~

次回:【現状報告】星間戦争制作状況25・変えたい、名前を・
前回:【現状報告】星間戦争制作状況23・敵AI・

コメントする

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

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2014/08/19 08:59, 履歴)
トロフィー画像、綺麗ですね


シミュレーションのベース関数、
よくまとめられていると思います

ただ、頻繁に呼び出す可能性のある再帰の処理の場合
少しでも処理速度を向上させるため、

svやgvといったユーザ関数で関数を呼び出すだけの処理は
あまり使用しない方が良いかもしれません
(関数を呼び出す回数分、速度が若干おちるため)
Material 185033 3 mini 光楼(114)(投稿日:2014/08/19 10:34, 履歴)
なるほど……

それなら使う時に書き換えようと思います、ありがとうございました~