実現したいこと
プログラム実行と同時に動作するタイマーを作成(経過時間を確認したい)
わからない事
秒を分に繰り上げる時(59秒→0秒)に秒をリセットしたいがうまくいかない
試したこと
52行目のif文を書いたがプログラムの実行時間に対して動作するのであって表示されている数値に対してはif文が動作していない
なので初回の0.99秒では動作し0.00秒に戻るが2度目の0.99秒ではリセットされずにカウントは増え続ける。
Processing
1PImage img; // 画像 2ArrayList<Logo> logos = new ArrayList<Logo>(); // 配列変数 3 4int base_time = 0; 5int base_time_mil = 0; 6int base_time_sec = 0; 7int base_time_min = 0; 8int base_time_hou = 0; 9 10void setup(){ 11 size(1920,1080); 12 frameRate(60); 13 img = loadImage("DVD_logo2.png"); 14 logos.add(new Logo()); 15 16 surface.setLocation(0,0); // 実行画面位置 17} 18 19void draw(){ /* 角に当たった時にロゴを一個増やし現在のロゴ数を+1する仕様にする */ 20 21 background(0); // 背景の初期化 22 int hitCount = 0; 23 24 for (Logo logo : logos) { 25 logo.update(); 26 27 if (logo.hitCorner()) { 28 hitCount++; 29 } 30 31 logo.draw(); 32 } 33 34 for (int i = 0; i < hitCount; i++) { 35 logos.add(new Logo()); 36 } 37 38 // ロゴのカウント 39 textAlign(CENTER); 40 textSize(24); 41 fill(255,255,255,150); 42 text("DVDlogos : " + logos.size() + "", width/2, 25); 43 44 45 46 // タイマー 47 int mil = millis() / 10 - base_time_mil; // 経過時間(ミリ秒) 48 int sec = millis() / 1000 - base_time; // 経過時間(秒) 49 int min = millis() / 60000 - base_time; // 経過時間(分) 50 int hou = millis() / 3600000 - base_time; // 経過時間(時) 51 52 if(mil/99 == 1){ 53 base_time_mil = 99; 54 } 55 56 text("Elapsed time " + hou + ":" + min + ":" + sec + ":" + mil + "", width/2, 50); 57} 58 59 60 61class Logo { 62 float x_pos,y_pos; // 画像の初期位置 63 float x_direction,y_direction; // x=右か左か y=上か下か 64 color c = #FFFFFF; 65 66 Logo() { 67 x_pos = width / 2; 68 y_pos = height / 2; 69 70 float a = random(TWO_PI); 71 x_direction = cos(a) * 5; 72 y_direction = sin(a) * 5; 73 } 74 75 void update() { 76 x_pos += x_direction; 77 y_pos += y_direction; 78 79 if (width - (img.width / 2) < x_pos || x_pos < (img.width / 2)) { 80 x_direction *= -1; 81 changeColor(); 82 } 83 if (height - (img.height / 2) < y_pos || y_pos < (img.height / 2)) { 84 y_direction *= -1; 85 changeColor(); 86 } 87 } 88 89 boolean hitCorner() { 90 if (x_pos < (img.width / 2) && y_pos < (img.height / 2)) { 91 return true; 92 } 93 if (x_pos < (img.width / 2) && height - (img.height / 2) < y_pos) { 94 return true; 95 } 96 if (width - (img.width / 2) < x_pos && y_pos < (img.height / 2)) { 97 return true; 98 } 99 if (width - (img.width / 2) < x_pos && height - (img.height / 2) < y_pos) { 100 return true; 101 } 102 103 return false; 104 } 105 106 void draw() { 107 imageMode(CENTER); 108 tint(c); 109 image(img, x_pos, y_pos); 110 } 111 112 void changeColor() { 113 c = color(random(80,255), random(80,255), random(80,255)); // ロゴの色変更 114 } 115}
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。