미디어아트.아트코딩/프로세싱 processing

[프로세싱] 랜덤하게 숫자 출력하기 + keyPressed()

AI 봇 2025. 2. 4. 21:41

 

int[] myNum= new int[5];
PFont font;
int x, y, index, chance;

void setup() {
  size(720, 480);
  background(255);
  frameRate(5); //1초에 5번 void draw() 함수를 실행 (별도 지정없을 경우 1초에 60번 반복)
  myNum[0]=5;
  myNum[1]=10;
  myNum[2]=19;
  myNum[3]=64;
  myNum[4]=89;
  printArray(PFont.list());  // 사용 가능한 폰트리스트를 콘솔에 출력
  font=createFont("ArailG1", 160);
  textFont(font);  // 폰트 설정
}

void draw() {
  chance = int(random(100));
  index = int(random(5));
  x = int(random(width));
  y = int(random(height));
  if (chance < 50){
    index=0;
  } else if (chance < 70) {
    index=1;
  } else if (chance < 90) {
    index=2;
  } else if (chance < 95) {
    index=3;
  } else {
    index=4;
  }
  fill(200);
  ellipse(x, y, myNum[index]*2, myNum[index]*2);
  fill(50);
  textSize(myNum[index]);
  textAlign(CENTER, CENTER);
  text(myNum[index], x, y);
  println(myNum[index]);
}

 

 

랜덤 숫자를 컬어 원에 나타내기

위 코드에 원의 색깔을 정하고, 나타난 원들이 점점 사라지다가 희미하게 남아 있도록 스케치하자.

추가로, 키보드 [s]키를 누르면 스케치창을 이미지로 저장하도록 스케치하자.

noStroke(), fill(), rect(), KeyPressed(), key, saveFrame(), nf()

 

int[] myNum= new int[5];
PFont font;
int x, y, index, chance;
int count = 0;

void setup() {
  size(720, 480);
  background(255);
  noStroke();
  frameRate(5); //1초에 5번 void draw() 함수를 실행 (별도 지정없을 경우 1초에 60번 반복)
 
  myNum[0]=5;
  myNum[1]=10;
  myNum[2]=19;
  myNum[3]=64;
  myNum[4]=89;
  
  printArray(PFont.list());  // 사용 가능한 폰트리스트를 콘솔에 출력
  font=createFont("ArailG1", 160);
  textFont(font);  // 폰트 설정
}

void draw() {
  fill(255, 5);  // 함수를 실행할 때 마다 색이 엷어지는 효과. R,G,B,투명도
  rect(0,0,width, height);
  
  chance = int(random(100));
  index = int(random(5));
  x = int(random(width));
  y = int(random(height));
  if (chance < 50){
    fill(56, 500, 88);
    index=0;
  } else if (chance < 70) {
    fill(163, 150, 232);
    index=1;
  } else if (chance < 90) {
    fill(232, 150, 171);
    index=2;
  } else if (chance < 95) {
    fill(150, 232, 208);
    index=3;
  } else {
    fill(195, 232, 150);
    index=4;
  }

  ellipse(x, y, myNum[index]*2, myNum[index]*2);
  fill(50);
  textSize(myNum[index]);
  textAlign(CENTER, CENTER);
  text(myNum[index], x, y);
  println(myNum[index]);
} 

void keyPressed(){  // 이벤트함수 
  if (key == 's'){
    saveFrame("dragon"+nf(count, 3)+".jpg");  // nf(숫자값,자리수)
    count+=1;
  }
}