Silverback9

#야생으로

Creative Coding 독학 제321일 2025년02월11일(화)

오늘은 귀엽고 총명한 vehicle 코딩 공부를 다시 시작하는 날~^^* Yeah~^^*

씩씩한 추진력에 힘 입어 멋지게 날아오르는 로켓 아침 되시기 바래요~^^*

저는요~^^* 지금 이동도 해야 하고~^^* 노트북 전원 문제가 좀 있어서요~^^* 늦은 밤에 공부 정리해서 다시 찾아 올게요~^^*

멋진 하루 보내시고요~^^* 깊은 밤에 또 만나요~^^* 쓩우웅~^^*

네~^^* 밤이 많이 깊었네요. 즐겁고 편안한 하루 보내셨나요~^^*

자 그럼, 오늘의 공부를 시작해 보겠습니다~^^*

태초의 vehicle이 단 하나만 있지는 않았을 것 같아요. 음…부족 생활을 하고 있었을까요..?

10개의 개체로 이루어진 태초의 vehicle 부족을 만들어 보겠습니다~^^*

vehicle을 배열로 만들면 좋겠지요~~^^*

var vehicles = [];
   .
   .
   .
function setup() {
   .
   .
   . 
  for( i = 0; i < 10; i++) {
    var x = random(width);
    var y = random(height);  
    vehicles[i] = new Vehicle(x, y);
  }
   .
   .
   .
}

function draw() {
   .
   .
   .  
  for( i = 0; i < vehicles.length; i++) {
  vehicles[i].behaviors(food, poison);
  vehicles[i].update();
  vehicles[i].display();
  }  
}

10 개의 개체로 이루어진 태초의 vehicle 부족이 food와 poison을 먹고 있는 모습 보러 가실까요~~^^*

이제는, food를 먹을 때와 poison을 먹을 때 몸의 반응을 시각적으로 표현해 보면 어떨까요~^^*

위험한 독약을 먹었을 때 빨간색을 띄고 몸에 좋은 음식을 먹었을 때 초록색을 띄도록 해 보겠습니다~^^*

이때 함수 lerpColor()를 사용해 보려고 합니다. lerpColor() 0 과 1 사이 거리의 비율 관계를 이용해서 두 가지의 색상을 나타낼 수 있습니다. 빨간색을 0에 초록색을 1로 설정해 보겠습니다. 값이 0에 가까울 수록 빨강색을 띄고 값이 1에 가까울 수록 초록색을 띄게 됩니다. 값이 0보다 작으면 0으로 조정되며, 값이 1보다 크면 1로 조정됩니다.

vehicle의 건강 상태를 나타내는 변수 this.health의 값을 기준으로 삼아 보겠습니다. vehicle의 몸은 this.health 가 0보다 작거나 같으면 빨간색 this.health가 1보다 크거나 같으면 초록색을 띄게 되겠네요.

vehicle이 몸에 좋은 음식을 먹으면 this.health가 0.1 증가하고, vehicle이 몸에 위험한 poison을 먹으면 this.health가 0.5 감소하도록 해 보겠습니다. 그리고, vehicle이 이 세상에 태어난 순간부터 this.health는 계속 0.1 감소하도록 설정해 보겠습니다.

함수 eat()를 개선하여, 먹은 음식이나 독약의 nutrition 영앙가를 건강 상태에 반영하도록 해 보겠습니다~^^*

class Vehicle {
  constructor(x, y) {
       .
       .
       .
    this.health = 1;
       .
       .
       .
  }
  
  behaviors(good, bad) {
     const steerG = this.eat(good, 0.1);
     const steerB = this.eat(bad, - 0.5);
      .
      .
      .
  }
  
   eat(list, nutrition) {
      .
      .
      .
    if(record < 5) {
      list.splice(closest, 1);
      this.health += nutrition;
    } else if(closest > -1) {
      return this.seek(list[closest]);  
    }
    return createVector(0,0);
  }
     .
     .
     . 
 display() {
     .
     .
     .
    var rd = color(255, 0, 0);
    var gr = color(0, 255, 0);
    var col = lerpColor(rd, gr, this.health);
    
    fill(col);
    stroke(col);
     .
     .
     .
    }
}

Vehicle의 몸의 색상을 보고 건강 상태를 확인해 볼까요~~^^*

네~^^* 이 깊은 밤, 저와 함께 vehicle의 몸 색상이 건강 상태를 나타내도록 만들어 주셔서 감사합니다~^^*

내일은 몸이 많이 나빠진 vehicle은 자연의 섭리에 따르도록 프로그램을 개선해 볼까요~^^*

네…이 날을 위해서 우린 우리의 심장에 두툼하고 폭신한 스펀지를 둘러 놓았죠~~^^*

네~^^* 내일 자연의 섭리를 목도해 보도록 할게요~^^*

맛있으면서도 몸에 좋은 음식 맛있게 먹는 꿈 꾸시며~^^*

오늘 이 깊은 밤 편안하고 따뜻하게 코~^^* 하시고요~^^*

우리 내일 다시 또 만나요~^^*

네~^^* 좋아요~^^* 고마워요~^^*

네~^^* 꿈은 이루어 집니다~^^*

댓글 남기기