Week15
這周的目標是希望不要一次將所有字串顯現出來
```
import processing.sound.*; int[][] pos = { {66, 532}, {205, 532}, {348, 532}, {492, 532}, {633, 532}, {773, 532}, {914, 532} }; SoundFile Do, Re, Mi, Fa, Sol, La, Si; PImage img, img2; String marqueeText = "5334221234555533422135532222234333334553342213551"; String backup = "5334221234555533422135532222234333334553342213551"; float marqueeX; // 初始化文字的起始位置 int marqueeColor = 255; // 初始文字顏色為白色 int marqueeTextI=0; void setup() { size(960, 540); img = loadImage("Piano.png"); img2 = loadImage("Piano2.png"); Do = new SoundFile(this, "Do.MP3"); Re = new SoundFile(this, "Re.MP3"); Mi = new SoundFile(this, "Mi.MP3"); Fa = new SoundFile(this, "Fa.MP3"); Sol = new SoundFile(this, "Sol.MP3"); La = new SoundFile(this, "La.MP3"); Si = new SoundFile(this, "Si.MP3"); rectMode(CENTER); /* marqueeText = "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555" + "5334221234555"; */ } void draw() { background(#303030); image(img2, -10, 150, 1000, 540); fill(#616362); rect(480, 153, 980, 5); text(marqueeText.charAt(marqueeTextI),200,200); // 跑馬燈文字 textSize(60); for (int i = 0; i < marqueeText.length(); i++) { char currentChar = marqueeText.charAt(i); fill(i == 0 ? marqueeColor : 255);//後方數字始終為白色 text(currentChar, marqueeX + i * textWidth(currentChar), 100); } if (marqueeX < -textWidth(marqueeText)) { marqueeX = width; marqueeColor = 255; } // 檢查是否有按鍵被按下,以及該按鍵是否與跑馬燈上的數字相同 for (int i = 0; i < 7; i++) { if (pressed[i]) { fill(#7eeffd); rect(pos[i][0], pos[i][1], 130, 10, 5); } } } boolean[] pressed = new boolean[7]; void keyPressed() { if(keyCode==RIGHT) marqueeTextI=(marqueeTextI+1) % marqueeText.length(); for (int i = 0; i < 7; i++) { if (key == str(i + 1).charAt(0)) { if (marqueeText.length() > 0 && i + 1 == int(marqueeText.charAt(0) - '0')) { marqueeColor = color(255, 255, 0);//按下(住)顏色變為黃色 marqueeText = marqueeText.substring(1); if(marqueeText.length()<1) marqueeText += backup; //marqueeTextI=(marqueeTextI+1) % marqueeText.length(); break; } } } if (key == '1') { pressed[0] = true; Do.play(); } else if (key == '2') { pressed[1] = true; Re.play(); } else if (key == '3') { pressed[2] = true; Mi.play(); } else if (key == '4') { pressed[3] = true; Fa.play(); } else if (key == '5') { pressed[4] = true; Sol.play(); } else if (key == '6') { pressed[5] = true; La.play(); } else if (key == '7') { pressed[6] = true; Si.play(); } } void keyReleased() { for (int i = 0; i < 7; i++) { if (key == str(i + 1).charAt(0)) { marqueeColor = color(255, 255, 255);//放開之後顏色變回白色 pressed[i] = false; break; } } } ```
沒有留言:
張貼留言