processingで簡単なゲームを作りたいのですが、画面遷移の方法が分からないため作業がストップしてしまいました。ネットで検索しても欲しい情報が得られなかったのでここで質問させていただきます。
遷移のフローのイメージを載せさせていただいたのですが、それぞれの画面で赤い部分を押すと次の画面に進むような仕様したいと考えています。
画面遷移をして、その画面ごとに背景に画像を表示するやり方が分からず困っています。
遷移した画面ごとに画像を切り替えたいと考えているので、どうしたらいいか教えていただけると助かります。また、他により良い例がありましたら以下のコードのような形式でなく、タブを分けて構成する方法でも構いません。画像はdataフォルダーに入れています。(コード内のpngファイルが画像ファイルになります。)
以下コードになっています。
int status = 0;
int score ;
int startTime ;
final static int RANGE = 64;
PImage img;
void setup(){
size(2210,1480);
PFont font = createFont("Yu Gothic",32,true);
textFont(font);
textAlign(CENTER,CENTER);
fill(255);
}
void draw(){
image(img, 0, 0);
translate(width/2,height/2);
switch(status){
case 0:
intro();
break;
case 1:
intro2();
break;
case 10:
game1Start();
break;
case 11:
game1();
break;
case 12:
endGame1();
break;
case 20:
game2Start();
break;
case 21:
game2();
break;
case 22:
endGame2();
}
}
boolean mouseRangeIn(int x,int y){
x+=width/2;
y+=height/2;
return (abs(x-mouseX)<RANGE && abs(y-mouseY)<RANGE);
}
void textCenter(String str){
text(str,0,0);
}
void textCenter(String str,int x,int y){
text(str,x,y);
}
void intro(){
img = loadImage("start.png");
textCenter("簡単なゲーム\nクリックでスタート");
if(mousePressed){
if (mouseRangeIn(0,0)){
status =1;
}
}
}
void intro2(){
img = loadImage("menu.png")
textCenter("KeyBoard\nGame",-200,0);
textCenter("Mouse\nGame",200,0);
if(mousePressed){
if (mouseRangeIn(-200,0)){
status = 10;
}
if (mouseRangeIn(200,0)){
status = 20;
}
}
}
void game1Start(){
img = loadImage("game1start.png")
textCenter("KeyBoard Game\nSTART",0,200);
if(mousePressed){
if (mouseRangeIn(0,200)){
status = 11;
startTime = millis();
}
}
}
void game1(){
img = loadImage("game1.png")
textCenter("SPACE KEYを押せ\n"+(millis()-startTime)+"ミリ秒経過");
if (keyPressed){
if (key==' '){
score = millis()-startTime;
status=12;
}
}
}
void endGame1(){
img = loadImage("result1.png")
textCenter("結果\n"+(score/1000.0)+"秒");
textCenter("最初に戻る",200,200);
if(mousePressed){
if (mouseRangeIn(200,200)){
status = 0;
}
}
}
void game2Start(){
img = loadImage("game2start.png")
textCenter("Mouse Game\nSTART",0,200);
if(mousePressed){
if (mouseRangeIn(0,200)){
status = 21;
startTime = millis();
}
}
}
void game2(){
img = loadImage("game2.png")
textCenter("ウィンドウの左上をクリックしてください");
if(mousePressed){
if (mouseX<RANGE && mouseY<RANGE){
score = millis()-startTime;
status =22;
}
}
}
void endGame2(){
img = loadImage("result2.png")
textCenter("結果\n"+(score/1000.0)+"秒");
textCenter("最初に戻る",200,200);
if(mousePressed){
if (mouseRangeIn(200,200)){
status = 0;
}
}
}
回答1件
あなたの回答
tips
プレビュー