前提
processingでライツアウトというパズルゲームを作っています。
タイトル画面のときにエンターキーを押したらゲームが始まり、すべてのマスを黄色にしたらクリア画面にしたいです。
タイトルからゲームに映るのはできたのですが、タイマーがうまくいきません。エンターキーを押したらタイマーがスタートするようにしたいです。
また、クリア時の判定をどのようにすればいいかがわからないので教えていただきたいです。
実現したいこと
・エンターキーを押したらタイマーとゲームがスタートするようにしたい
・すべてのマスを黄色にしたらクリア画面に移したい
発生している問題・エラーメッセージ
・タイトル画面の時点でタイマーがスタートしてしまっている
・クリア時の判定がわからない
該当のソースコード
processing
1ソースコード 2```int bs = 85; 3int aa = 5; 4int bb = 5; 5int stat=0; 6int x1=0,y1; 7int base_time = 0; 8int base_time_mil = 0; 9int base_time_sec = 0; 10int base_time_min = 0; 11int base_time_hou = 0; 12int scene = 0; 13boolean flag; 14int[][] block = new int[aa][bb]; 15void setup(){ 16 size(600,600); 17 textSize(15); 18 frameRate(60); 19} 20void draw(){ 21 background(0); 22 gamePlay(); 23 gameScene(); 24 /* gameInit();*/ 25} 26 27void mousePressed(){ 28 int x = mouseX/bs; 29 int y = mouseY/bs; 30 light(x, y); 31if (x!=0) light(x-1, y); 32if (x!=aa-1) light(x+1, y); 33if (y!=0) light(x, y-1); 34if (y!=bb-1) light(x, y+1); 35} 36 void light(int i,int j){ 37 if(block[i][j]==0){ 38 block[i][j]=1; 39 }else{ 40 block[i][j]=0; 41 } 42} 43void keyPressed(){ 44 if(key==ENTER){ 45 scene = 1; 46 } 47} 48 49void Timer(){ 50 int mil = millis() % 1000; // 経過時間(ミリ秒) 51 int sec = millis() / 1000 % 60; // 経過時間(秒) 52 int min = millis() / 60000 % 60; // 経過時間(分) 53 int hou = millis() / 3600000; // 経過時間(時) 54 55 if(mil/99 == 1){ 56 base_time_mil = 99; 57 } 58 fill(255); 59 textSize(20); 60 text("time " + hou + ":" + min + ":" + sec + ":" + mil + "",430 , 50); 61} 62 63void gamePlay(){ 64 for(int i=0; i<5; i++){ 65 for(int j=0; j<5; j++){ 66 if(block[i][j] == 0){ 67 fill(255); 68 }else{ 69 fill(255,255,0); 70 } 71 rect(i*bs, j*bs, bs, bs); 72 } 73 } 74} 75 76void gameScene(){ 77 switch(scene){ 78 case 0: 79 background(255); 80 fill(0); 81 textSize(30); 82 text("Press ENTER to play!!", 150,height/2); 83 break; 84 case 1: 85 gamePlay(); 86 Timer(); 87 } 88} 89 90### 試したこと 91 92Timer()の場所を色々変えた 93 94### 補足情報(FW/ツールのバージョンなど) 95 96ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー