コンテンツにスキップ

タイトル画面の作り方

タイトル画面とゲーム画面

ゲームを作ったらタイトル画面も作りたくなるよね! ここではタイトル画面の作り方を伝授するぞ!

学べること

  • 関数

まずはゲーム画面

つくるもの

今回はゲームを作ることが目的ではないので、もぐら叩き的なシンプルなゲームを考えてみるぞ!

img01.png

四角形をクリックしていこう

ソースコード

float x;
float y;
void setup(){
size(600, 400);
// 四角形の位置のランダム化
x = random(width);
y = random(height);
}
void draw(){
background(0);
rect(x, y, 50, 50);
}
void mousePressed(){
// 当たり判定
if(mouseX > x && mouseX < x + 50 && mouseY > y && mouseY < y + 50){
// 当たったら新しい場所に四角形を表示
// 四角形の位置をランダム化
x = random(width);
y = random(height);
}
}

注目して欲しいこと

「四角形の位置のランダム化」が、setupの中と、mousePressedの中に二つ存在するよね? こういった処理はひとつにまとめることができるんだ!それが関数だよ!

関数を作ろう

四角形の位置をランダム化する処理を「リセット」として、「reset」という名前の関数を作るよ!

void reset(){
x = random(width);
y = random(height);
}

関数を使おう

関数は作っただけでは意味がないぞ!作った関数を「呼び出す」必要があるんだ!

float x;
float y;
void setup(){
size(600, 400);
// reset関数を呼び出す
reset();
}
void draw(){
background(0);
rect(x, y, 50, 50);
}
void mousePressed(){
if(mouseX > x && mouseX < x + 50 && mouseY > y && mouseY < y + 50){
// reset関数を呼び出す
reset();
}
}
void reset(){
x = random(width);
y = random(height);
}

まとめ

関数の作り方はわかったかな? つまりは処理をひとつにまとめるに便利なものと覚えておこう!

タイトル画面を作ろう!

では本題に戻るぞ! このゲームにタイトル画面をつけてみよう! ここでも関数を使うんだ!

ゲーム部分を関数にする

まずはゲーム部分を関数にするぞ!

void draw(){
game();
}
void game(){
background(0);
rect(x, y, 50, 50);
}

gameという関数を作って、drawの中で呼び出しているぞ!

タイトル部分を関数にする

次にtitleという関数を作ろう!

void draw(){
title();
// game();
}
void title(){
background(0);
textAlign(CENTER);
text("Mogura Tataki", width/2, height/2);
}

title関数を作って、drawの中でtitle関数を呼び出しているぞ!

img02.png

タイトル画面からゲーム画面へ遷移しよう!

title関数とgame関数ができました。 drawの中でtitle();とすればタイトル画面が表示され、game();とすればゲーム画面が表示されます。 あとはdrawの中で、どちらの関数を呼び出すかを決めてあげればOKです。 どちらの関数を呼び出すかを判別するために、「gamen」という変数を用意してみます。

int gamen = 1;
void draw(){
if(gamen == 1){
title();
}
if(gamen == 2){
game();
}
}

gamen変数が1ならtitle関数を呼び出し、gamen変数が2ならgame画面を呼び出すようにします。

gamen変数は初期値が「1」なのでtitle関数が呼び出され、タイトル画面が表示されます。

gamen変数を「2」に変えればゲーム画面に切り替わるはずです。

gamen変数を2に切り替えよう

ではEnterキーを押した時に変数を切り替えてあげましょう!

void keyPressed(){
if(keyCode == ENTER){
gamen = 2;
}
}

完成!

画面の切り替えができたでしょうか?

float x;
float y;
int gamen = 1;
void setup(){
size(600, 400);
reset();
}
void draw(){
if(gamen == 1){
title();
}
if(gamen == 2){
game();
}
}
void title(){
background(0);
textAlign(CENTER);
text("Mogura Tataki", width/2, height/2);
}
void game(){
background(0);
rect(x, y, 50, 50);
}
void keyPressed(){
if(keyCode == ENTER){
gamen = 2;
}
}
void mousePressed(){
if(mouseX > x && mouseX < x + 50 && mouseY > y && mouseY < y + 50){
reset();
}
}
void reset(){
x = random(width);
y = random(height);
}