見出し画像

マイクラゲーム作り#1 skript

この記事はマインクラフトを使ってゲームを作っていく過程を記録していくものです。言語はマイクラのプラグインであるskriptを使っていきます。

まず最初の一歩、挨拶から

on right click with apple:
	send "はじめまして" to player
リンゴをもって右クリックすると、はじめまして、と表示される。

今回は時間制限内に土ブロックを5つ壊すというものを作成していく。

まずは時間の設定から、試しに5秒で

on right click with apple:
	send "スタート" to player
	wait 5 seconds
	send "ストップ" to player
五秒後にストップ表示

土ブロックを壊す判定を追加

on right click with apple:
	send "スタート" to player
	wait 5 seconds
	send "ストップ" to player

on break of dirt:
	send "nice" to player
土ブロックを壊すとniceと表示

ここからゲームの条件として5秒以内を設定

5秒間フラグを作る

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play" #追加
	wait 5 seconds
	delete {dirt_break} #追加
	send "ストップ" to player

on break of dirt:
	send "nice" to player

set {dirt_break} to "play"でdirt_breakという箱にplayという文字を入れる。
delete {dirt_break}でdirt_breakという箱を5秒後に削除

今後「dirt_breakという箱にplayが入っている場合」という条件を付けることで5秒の時間制限を表現。

今回{dirt_break}も"play"も私が勝手に決めた言葉であるため、何でもよい。
set {d} to "p"とかでもいい
その場合以降の条件もそれに対応させる必要がある。

それでは土ブロックを壊した時に「dirt_breakという箱にplayが入っている場合」という条件を付ける

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	wait 5 seconds
	delete {dirt_break}
	send "ストップ" to player

on break of dirt:
	if {dirt_break} is "play": #追加
		send "nice" to player

send "nice" to playerの前に
if {dirt_break} is "play":
と追加することで、「dirt_breakという箱にplayが入っている場合」という条件を追加

リンゴを右クリックしてスタートして5秒間はniceが発動

何個壊したかのカウントを追加

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	set {break_count} to 0 #追加
	wait 5 seconds
	delete {dirt_break}
	delete {break_count} #追加
	send "ストップ" to player

on break of dirt:
	if {dirt_break} is "play":
		send "nice" to player
		add 1 to {break_count} #追加
		send "あなたは%{break_count}%回破壊しました。" #追加

set {break_count} to 0でbreak_countという箱に0を入れる
五秒後に
delete {break_count} でカウントをリセット

add 1 to {break_count}で破壊するごとに{break_count}に1を追加
send "あなたは%{break_count}%回破壊しました。"
で破壊回数を表示
%{}%この形は文字列の中で{}の中身を表示したいときに使う。%%で囲うことで箱の中身を表示できる。

リンゴでスタートし、ストップするまでカウントする

毎回niceが出てくるのがうっとうしいので削除

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	set {break_count} to 0
	wait 5 seconds
	delete {dirt_break}
	delete {break_count}
	send "ストップ" to player

on break of dirt:
	if {dirt_break} is "play":
		add 1 to {break_count} 
		send "あなたは%{break_count}%回破壊しました。"
niceを削除した結果

次は時間内に5回壊せたら「おめでとう!!」と表示させるようにしたい

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	set {break_count} to 0
	wait 5 seconds
	delete {dirt_break}
	delete {break_count}
	send "ストップ" to player

on break of dirt:
	if {dirt_break} is "play":
		add 1 to {break_count} 
		send "あなたは%{break_count}%回破壊しました。"
		if {break_count} is 5: #追加 
			send "おめでとう!!" to player #追加

if {break_count} is 5:で{break_count}が5になった時に以降のコードが実行されるようにした。

5回壊せたらおめでとう!!と表示

このままでは成功した後もカウントし続けてしまう。ということでコードを追加。

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	set {break_count} to 0
	wait 5 seconds
	delete {dirt_break}
	delete {break_count}
	send "ストップ" to player

on break of dirt:
	if {dirt_break} is "play":
		add 1 to {break_count} 
		send "あなたは%{break_count}%回破壊しました。"
		if {break_count} is 5:
			send "おめでとう!!" to player
			delete {dirt_break} #追加

break_countが5になった時のコード内に
delete {dirt_break}を追加
{dirt_break}を削除すると記述することで、土ブロックゲームを終わらせる。

カウントが5で終わってこれ以上は増えない

成功したのにストップと表示されるのもなんか気になる。
失敗したときだけ「失敗」と表示され、成功したら「おめでとう!!」で止まるようにしたい

on right click with apple:
	send "スタート" to player
	set {dirt_break} to "play"
	set {break_count} to 0
	wait 5 seconds
	if {break_count} < 5: 
		send "失敗" to player #追加
	delete {dirt_break}
	delete {break_count}

on break of dirt:
	if {dirt_break} is "play":
		add 1 to {break_count} 
		send "あなたは%{break_count}%回破壊しました。"
		if {break_count} is 5:
			send "おめでとう!!" to player
			delete {dirt_break}

send "ストップ" to player
を消して、{dirt_break}と{break_count}がdeleteされる前にif文を挿入
if {break_count} < 5:
send "失敗" to player
これでスタートから5秒後に{break_count}が5より小さいときだけ失敗と表示させる。

成功と失敗を分けることに成功

以上、これでゲームのシステムは作れた。
後はこれにいろいろ装飾していくことにする。

筆者のコメント

コードを作っているところを見てもらったが、簡単だ!と思ってもらえただろうか。
分かりにくいところがあれば教えてほしい。
プログラミング言語をガチでやっている人にとっては何だこの簡単な言語はとなると思う。また、こういう別の作り方もできるのではという意見も出てくのだろうとも思う。このブログを通じてプログラミングに興味が湧き、子供に教えてみようと思う人が出てくれることを願っている。
次回はよりゲームらしくなるように作るが、上げられるGIF動画は15秒のため、次はどんなゲームになったのか動画を貼り、コード全体を先に見せてからどういうコードなのかを解説していこうと考えている。

読んでくださりありがとうございました。
これからもよろしくお願いします。


この記事が気に入ったらサポートをしてみませんか?