マイクラゲーム作り#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
ここからゲームの条件として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が入っている場合」という条件を追加
何個壊したかのカウントを追加
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}%回破壊しました。"
次は時間内に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になった時に以降のコードが実行されるようにした。
このままでは成功した後もカウントし続けてしまう。ということでコードを追加。
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}を削除すると記述することで、土ブロックゲームを終わらせる。
成功したのにストップと表示されるのもなんか気になる。
失敗したときだけ「失敗」と表示され、成功したら「おめでとう!!」で止まるようにしたい
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秒のため、次はどんなゲームになったのか動画を貼り、コード全体を先に見せてからどういうコードなのかを解説していこうと考えている。
読んでくださりありがとうございました。
これからもよろしくお願いします。
この記事が気に入ったらサポートをしてみませんか?