'Research Topics'에 해당되는 글 91건

  1. 2008.05.28 Sound routing 2
  2. 2008.05.27 카메라 관련 2
  3. 2008.05.27 Beat detection 관련 쓰레드. 1
  4. 2008.05.18 2008.05.17 모임내용
  5. 2008.05.14 080511 모임내용
  6. 2008.05.10 [080510] 두더지게임 최종. 1
  7. 2008.05.07 두더지게임 수정 (김유정)
  8. 2008.05.05 080503 스터디 모임
  9. 2008.05.03 [과제080503] 함경석
  10. 2008.04.27 [과제080426] 김유정 3
Mac 사용시 사운드를 다른 어플리케이션 으로 라우팅 해주는 Soundflower 라는 유틸리티 입니다.
(디폴트로는 마이크-인 으로만 잡히고 옵션을 바꿔도 안됩니다.)

우리의 경우는 iTunes 나 VLC 같은 플레이어로 MP3 를 틀고 이를 프로세싱에서
입력으로 받아서 사용하는 경우 쓸 수 있습니다.(주로 이퀄라이저를 만들때 쓰겠죠)
아래는 관련글의 스레드와 다운로드 주소입니다.

http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Sound;action=display;num=1189352183

http://www.cycling74.com/downloads/soundflower

일단 ess 의 inputFFT 예제를 기반으로 테스트 해보니 잘 됩니다.
http://www.tree-axis.com/Ess/examples.html  의 예제들 중 두번째 예제.
(응용프로그램>유틸리티의 오디오 MIDI 설정에서 아래처럼 Default Output 을 Soundflower(2ch) 로 잡고
  iTunes 나 기타 mp3 를 틀어주면 동작 확인 가능)

이를 기반으로 아래 ess library 의 input FFT 예제 코드에서 볼 수 있는
FFT.spectrum[i] 부분을 응용해서 스펙트럼드을 뽑아서 비주얼을 만들 수 있을것 같습니다.


사용자 삽입 이미지


그리고 이렇게 라우팅된 사운드는 스피커로 나오지 않습니다.
이를 다시 최종적으로 스피커로 나오게 하기위해서는 함께 포함되어있는
SoundflowerBed 라는 유틸리티를 사용합니다. (사이트 참조)

Soundflower 의 dmg 파일에 같이 있는 SoundflowerBed 를 응용프로그램에 복사해놓고 실행하면
위에 표시줄에 다음과 같은 꽃모양 메뉴가 뜹니다.
이를 이용해서 프로세싱으로 라우팅된 사운드를 다시 스피커로도 나오게 하면 됩니다.
(Soundflower(2ch)를 Built-in Output 으로 설정)


사용자 삽입 이미지



Posted by 알 수 없는 사용자

맥이 아닌 PC/Windows 기반에서 일반 USB 웹캠을 사용하려고 알아보니 상당히 제약이 많네요.
일차적으로 프로세싱이 비디오 관련 부분이 QuickTime을 기반으로 하고 있어서
윈도우즈용 USB 캠 대부분이 지원이 안된다고 하네요.

http://processing.org/reference/libraries/video/


그나마 이를 가능하게 해주는 수단이 WinVDIG (QuickTime-compatible video digitizer (VDIG)) 라는 건데
퍼포먼스도 떨어진다고하고 웹사이트도 현재 접속이 안되는군요.

결국 카메라를 속편하게 쓰려면 Mac 과 iSight 을 사용해야 한다는것 같은데 별다른 대안이 있는지 모르겠네요
(맥을 지원하는 USB 카메라도 정말 드물죠. iSight 는 단종이라 고가임에도 장터에 뜨면 5분안에 팔리고...
 iSight 도 분명 그렇게 CCD가 좋은 캠은 아니지만 대안이 거의 없는 관계로...)


모션 인식을 위해서는 저해상도의 웹캠보다는 일반적인 캠코더(DV캠들)을 쓴다고 하던데
이런 캠코더와 붙여보신분 있으신지요?

카메라 관련 정보 앞으로 여기에 공유합시다~


* 오늘 DD교수님(김영진교수님 http://a.parsons.edu/~yzkim ) 께 여쭤봤더니
   역시나 PC 에서의 캠과 프로세싱 연동은 어렵다는 결론입니다.
   WinVDIG 로 연동이 되어도 오작동이 많다고 하네요.
   MacBook 이나 iMac 계열의 내장 iSight 를 이용하는게 가장 속편하고 좋은 방법이라고 합니다.
   그리고, Cam corder 와의 연동도 가능한 것 같은데 구체적인 연동 사례(드라이버 등)는 알아봐야 할 것
   같습니다.




Posted by 알 수 없는 사용자
Posted by 알 수 없는 사용자
    5.17 전시 작업에대한 개략적인 아이디어
학과(학년) 이름 출석  
CD2 박동윤 o 컬러 분석 - 카메라, 그래프, DB 통계화
도로
차량 움직입에 따른 비주얼 생성 - 카메라

3D Lifeform - data from the internet, camera …
FD1 류예림 DF보충수업  
FD1 최윤정    
FD1 심혜림    
PD1 한재석 o 몸동작의 정도에 따른 랭킹화 + 상품?
PD1 안성민 o 음악 연동 - 손동작에 따른 에코,노이즈 effect 
PD1 서리진    
PD1 박정은 봉사활동 사람이 수묵화의 한 요소처럼 파묻히게 되는
PD1 김지연    
PD1 형예명 o 구름-꽃에물주기-마이크타이밍이용
낙엽
- 타이밍, 음성

몸으로 튀겨서 공넣기 
CD1 전정민   탈의 - 관음증 심리 이용 작업
CD1 김지인 DF보충수업  
CD1 함경석 o 음악 톤에 따라서 관람객 초상화 구성
비트/주파수에 따른 얼굴 구현 차이
CD1 이현주    
CD1 김재인   DF 보충수업-예술의전당
CD1 설승재 o 동작지시, 녹화, 영상 믹싱후 보여주기
CD1 김유정 o 사운드-키보드 입력에 따른 visualization
CD1 이정은  o 스프링클러, 여인 비막아주기, 참참참, 금붕어, 식탁보


금일 전시 작업 계획 발표 - 11명





2008.05.17 모임내용
----------------------------------------------------------------------------------------------
개략적인 아이디어 발표, 공유



공지사항
----------------------------------------------------------------------------------------------

- 일단, 5월 남은 2번의 스터디와 6월 4번의 스터디 모임에서 작업을 어느정도 일단락 짓는것으로 이야기 됨.
  (6월까지 모든 작업이 완료되기는 어렵겠지만, 작업의 형태, 크기, 필요장비는 확정이 되어야 함,
   추후에는 오직 작업만 더 하면 될 수 있도록)

- 갤러리 전시를 위한 장비 대여 및 공간 확정을 위해 6월까지 모든 작업물의 필요 장비/규모를 확정
   지어야 합니다.

- Processing 과 더불어 Arduino 를 활용 가능하다고 하니 이 부분을 염두에 두시고 작업 방향을
   잡으셔도 되겠습니다.

- 6월에 기초학과 파이널이 있고, 특히 PD학과 분들은 바로 계절학기가 시작되므로 이를 고려하셔서
  작업의 규모와 시간 계획을 잘 세우시기 바랍니다.
  (PD학과 계절학기의 강도가 상당하므로...; 이전에 작업의 큰 부분은 거의 끝내놓으셔야 할 것 같습니다)


과제
----------------------------------------------------------------------------------------------
개인별 전시 작업 계획안 작성 게시판 업로드
개인별 전시 작업 시안 1개(~2개) 로 줄이고
필요한 장비, 규모(프로젝터, 설치 필요 스크린 크기, 공간 등),
기능적으로 필요한 프로그램적 요소(라이브러리) 등 을 세부적으로 정리해 오기

다음시간에 전시 작업물의 숫자와 규모들을 확정지어야 전체 전시의 계획이 가능해지므로
다음시간 까지를 전시 작업 계획의 deadline 으로 하겠습니다.
(안나오신 주위 멤버들에게 꼭 알려주시고 참여 여부를 확정짓도록 하길 바랍니다.)

못오신다면 메일과 주위 멤버를 통해 알려주시기 바라고, 다음시간까지 전시 작업 계획에 대한이야기가 없으면 전시에 참여하지 않는 것으로 간주하겠습니다.



Processing 내장 Example 한번씩 보고 실행 해보기 (File 메뉴의 Examples)
다양한 예제를 보시면 아이디어 도출에 큰 도움이 될 수 있습니다.

Posted by 알 수 없는 사용자



2008.05.11 모임내용
----------------------------------------------------------------------------------------------

참고할 만한 사이트와 주로 사용되는 코드 (카메라 등)에 대한 소개 (유승환/김상은)
(processing reference 메뉴에 있습니다.)

많이 쓰이는 라이브러리 등은 processing library share 에 올려서 공유하도록 하겠습니다.


공지사항
----------------------------------------------------------------------------------------------


이번 토요일까지는 자유롭게 각자 여름 전시회때 했으면 좋을만한 작업들을 생각해와서
발표/공유하는 시간을 가질 예정입니다.

당장은 기술적으로 가능한지 여부에 너무 얽매이지 말고, 브레인 스토밍 단계라고 생각하시고

자유롭게 생각하면 좋을 것 같습니다.

다만, 말로만 설명하기보다는 간단한 스케치 등이 있으면 더 좋겠지요
.
가능하면 두 세가지 이상의 안을 생각해 오면 좋겠습니다. (실현 불가능한 안이 있을 수 있기에
)

스터디한 내용을 활용해서 어떤 컨셉을 잡고 동적인 비주얼로 나타내는 작업도 좋겠고

현재 만들고 있는 게임 등을 좀더 재미있게 발전시켜보는 방향도 좋을 듯 합니다.

토요일 6시반에 3학년과 전시회 관련 전체 미팅이 있습니다.
(3
학년 수업이 토요일 오전/오후 전부 있고 저녁 6시에 끝나는 관계로
…)
그래서 이번 모임은 저녁 5시에 하는 것으로 하겠습니다.


과제
----------------------------------------------------------------------------------------------
- 전시회 작품 컨셉, 아이디어


참고사이트 (processing reference 메뉴에도 있습니다.)
----------------------------------------------------------------------------------------------

http://webcamxtra.sourceforge.net/index.shtml
http://code.compartmental.net/tools/minim/
http://www.v3ga.net/processing/BlobDetection/index-page-home.html
http://www.realtimeart.com/index.php
http://www.silentlycrashing.net/ezgestures/
http://www.flong.com/
http://generative.info/works/2005/ptmail/
http://www.number27.org/
http://www.flight404.com/blog/
http://www.vimeo.com/137083
http://www.kinesis.be/
http://carohorn.de/anymails/
http://www.wefeelfine.org/index.html




인원현황 - 기초학과(FD3 / PD6 / CD9)
----------------------------------------------------------------------------------------------
제가 파일을 잘못 덮어쓰는 바람에 4.26, 5.3 일자 자료를 유실했습니다 ;;
? 표시된 분들은 계속 하시는 건지 불분명한 분들입니다. 확인 부탁드립니다.

    3.29 4.5 4.12 4.19 "5.10"
학과(학년) 이름 출석 출석 출석 출석 출석
CD2 박동윤 o o o o o
CD2 정용채 o o 지각 o ?
FD1 류예림 아픔 o 모델샵 o o
FD1 최윤정 o o 모델샵 o o
FD1 심혜림 집(지방) o o o o
PD1 한재석 o 결혼식 o o o
PD1 안성민 o 지방 o o o
PD1 서리진 o o o o  
PD1 박정은 o o o o o
PD1 김지연 o o o o  
PD1 형예명 o o o o
CD1 전정민 아픔 o o   ?
CD1 김지인 o 모델샵 o ?
CD1 함경석 o o o o o
CD1 이현주 o o o o  
CD1 김재인(격주) o o
CD1 설승재 o o o   o
CD1 김유정 o o o o o
CD1 이정은 o o o o 지방
CD1 박근명 o o   ?


Posted by 알 수 없는 사용자
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지



최종이라고 하기엔 허접하지만...

startcase라는 변수를 만들어서,
시작시 화면, 게임하면, 게임종료시 화면 3가지 나오게 만들어봤습니다.
(startcase =1이면 시작화면, 2면 게임화면 이런식으로)



void setup(){
size(400,500);
frameRate(60);
}



int [] datax = {0, 100, 200, 300,400};
int [] datay = {0, 100, 200, 300,400}; // 불러올 이미지 x,y좌표값 Arrays
int countFrame = 0;
int count = 0;
int mogurax, moguray;
int startcase = 1; // set screen mode
int colorfill = 0; // set font color



void draw(){


PFont font;
font = loadFont("Arial-BoldMT-30.vlw");
textFont (font);

PImage imgBackground;
imgBackground = loadImage("backmogura.png"); //배경풀밭
PImage startimage;
startimage = loadImage("start.png"); // start image
PImage mogura, mogura2;
mogura = loadImage("mogura.jpg"); //그냥 두더지
mogura2 = loadImage("mogura2.jpg"); //맞은 두더지


image(imgBackground,0,0); // 배경 풀밭 불러옴


if (startcase == 1) {
image(startimage,70,200,286,64);
if (mousePressed == true){
if (mouseButton == LEFT){

if (((mouseX>70)&&(mouseX<356)) && ((mouseY>200)&&(mouseY<264)))
{
startcase = startcase+1; // go to game screen
}
}
}
}
else if (startcase == 2) {



countFrame++;
if(countFrame >15)
{
mogurax = datax[int(random(0,3))];
moguray = datay[int(random(0,3))]; // 두더지 출현 위치 랜덤 16가지 지정
countFrame = 0;
}

fill(255,233,108);
text(count+" hits",300,430);
fill (colorfill,0,0);
text(" QUIT GAME ", 200,470);



image(mogura,mogurax,moguray); // 그냥 두더지가 나오게 함



if (mousePressed == true){
if (mouseButton == LEFT){
if (((mouseX>mogurax)&&(mouseX ((mouseY>moguray)&&(mouseY {
// mogurax, moguray가 이미지를 불러오는 기준점이 되기 때문에
// 각각 mouseX,mouseY의 범위를 mogurax,moguray에서 100 더해준데까지 잡았습니다

count = count+1;
image(mogura2,mogurax,moguray); // 맞는 두더지가 나오게 함
countFrame = 100;
}
}
}




if (((mouseX>200)&&(mouseX<380)) && ((mouseY>450)&&(mouseY<470)))
{
// Quit game위치
colorfill = 255;

if (mousePressed == true){
if (mouseButton == LEFT){

startcase = startcase+1; // go to score screen

}
}
}

}
else if ( startcase == 3 ) {

fill( 255,255,0);
text ("YOUR SCORE",100,150);
fill(0);
text ( count + " HITS", 150,180);
fill(colorfill,0,0);
text ("RETRY", 150,300);


if (((mouseX>150)&&(mouseX<200)) && ((mouseY>270)&&(mouseY<320)))
{
// if press Retry

colorfill = 150;

if (mousePressed == true){
if (mouseButton == LEFT){


startcase = startcase-1; // Return to game
count = 0; // Reset the score
colorfill = 0; // Reset font color

}
}
}

}

}
Posted by 알 수 없는 사용자

사용자 삽입 이미지

사용자 삽입 이미지





void setup(){
  size(400,400);

  // 마우스 체킹 빈도를 최대한 높여야 하므로 이값은 최대한 빠르게. 물론 컴퓨터속도에 의한 제한 있음
  frameRate(60);
}

int [] datax = {0, 100, 200, 300,400};
int [] datay = {0, 100, 200, 300,400}; // 불러올 이미지 x,y좌표값 Arrays
int countFrame = 0;
int count = 0;
int mogurax, moguray;


void draw(){


  PFont font;
font = loadFont("Arial-BoldMT-30.vlw");
textFont (font);


  PImage imgBackground;
  imgBackground = loadImage("backmogura.JPG"); //배경풀밭
  PImage mogura, mogura2;
  mogura = loadImage("mogura.jpg"); //그냥 두더지
  mogura2 = loadImage("mogura2.jpg"); //맞은 두더지

 image(imgBackground,0,0);                                 
 

  countFrame++;
 
  if(countFrame >15)
  {
    mogurax = datax[int(random(0,3))];
    moguray = datay[int(random(0,3))]; // 두더지 출현 위치 랜덤 16가지 지정
    countFrame = 0; 
  }

   fill(255,233,108);
   text(count,350,380);

 image(mogura,mogurax,moguray); // 그냥 두더지가 나오게 함

 if (mousePressed == true){
 if (mouseButton == LEFT){ 

   if (((mouseX>mogurax)&&(mouseX<mogurax+100)) && ((mouseY>moguray)&&(mouseY<moguray+100)))
    {
      // mogurax, moguray가 이미지를 불러오는 기준점이 되기 때문에
      // 각각 mouseX,mouseY의 범위를 mogurax,moguray에서 100 더해준데까지 잡았습니다

     count = count+1;
     image(mogura2,mogurax,moguray); // 맞는 두더지가 나오게 함
     countFrame = 100;
 
  }
 }
 }  
      
       if (countFrame>200) {
         countFrame=0;
       }
   
}

Posted by 알 수 없는 사용자

2008.05.03 모임내용
----------------------------------------------------------------------------------------------
- 교재 스터디 진행 (~377p) : 박동윤
- 중요한 내용 :
   321p - 픽셀의 컬러값 / 이미지를 얻어내는 함수 get() / set() 활용
   342p - 컬러값 활용
   347p - 다양한 필터 활용
   355p - 프로세싱에서 화면은 pixels[] 라는 배열로 모두 저장이 되어있다. 이를 활용해 이미지 조작 가능
             loadPixels(), pixels[index], updatePixels() 를 활용한 이미지 가공 활용
   368p - save("파일명.jpg") 와 saveFrame() 을 활용한 현재 화면 저장


공지사항
----------------------------------------------------------------------------------------------
- 이번 시간을 마지막으로 Processing - A Programming Handbook for Visual Designers and Artists
   책 스터디를 마무리 지었습니다.
   이후 395 페이지 부터는 class 등의 기타좀더 심화된  프로그래밍적 요소가 많고,
   당장은 지금까지 스터디한 내용들로도 충분히 흥미로운 작업을 할 수 있다고 생각됩니다.
   이후 부분의 내용은 앞으로 작업을 하다 필요한 경우가 생기면 개별적으로 스터디 하면 되겠습니다.

- 다음시간부터는 전시회 작업에대한 이야기를 진행할 예정인데, 아직 구체적인 작업 형태나 주제는
  정해지지 않았습니다만, 그래도 지금까지 공부한 내용들을 바탕으로 꼭 해보고 싶은 것들을
  평소에 생각해 보면 좋겠습니다.

- 다음시간에 맥주한잔 하죠 ^^
 


과제
----------------------------------------------------------------------------------------------


- 그동안 배웠던 내용들을 리뷰하는 기분으로 자유롭게 해보면 좋겠습니다.



참고코드
----------------------------------------------------------------------------------------------


이정은씨의 쿠타게임이나 김유정씨의 두더지잡기 게임 정리해서 올려드리겠습니다.
지난시간에 봤던 interaction 디자인 작가 참고싸이트들도 함께요.
(제가 지금 노트북 포멧을 해버려서 잠시만 ㅎㅎ^^;)




Posted by 알 수 없는 사용자



일전에 핸드폰에 있는 통화기록으로 만들어 볼 수 있는게 없을까 생각해 보았는데,

각각의 원을 통화한 전화번호로 놓고 원의 크기는 통화량, 원이 움직이는 속도는 통화 횟수에 비례하도록

하여 화면안에서 움직이면 재밌을 것 같아 만들어 본 것입니다만, 직장에 있을 때 해보던 거라 시간이 없어서

완성은 못하고 '이런 정도의 움직이 나오지 않을까' 하는 정도에서 그만두었습니다. ^^;;

이것에다가 지난 시간 배웠던  잔상이 남는 움직임을 추가해 본 것입니다.

저희가 배우지 않은 class란 것을 사용했습니다만, 기본적으로 지난 시간 배운 배열을 사용해서 각각의 원들을

만들고 원의 움직임에 필요한 함수를 따로 만들어 제작하였습니다.

(실행후 마우스로 화면을 클릭하면 원들이 움직이고 enter를 누르면 원들이 다시 배열됩니다. )
코드를 정리 못해서 좀 지저분 합니다;;


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

 Pcircle[] r ;
 int dn = int(random(10,50)); //decide pnumbers received and sent
 int keypad = 200;   //keypad size
 int keycheck = 1;


 void setup()
 {
  //size(147.196);
 size(147,196+keypad);
 background(255);
  smooth();
 
  float v;          // default speed
  int total = 250;   // sum of calls
 // int stotal = 3600; //sum of sec
  r = new Pcircle[dn]; // declare r of class Pcircle
 
  for(int i = 0; i<dn ; i++){
    r[i] = new Pcircle(width/2, (height-keypad)/2, i+1, int(random(1, total-(dn-i))), int(random(80, 3600)),int(random(80,220)),int(random(80,200)),int(random(20,220)),1,1,1,1);
    total = total - r[i].call;
   // stotal = stotal - r[i].sec;
  }
//framerate(70); 
/*for mouseaction(stop & go)*/
  noLoop();
/*for mouseaction(stop & go)*/ 
 }
//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
 void draw(){
   fill(255, 12);
   rect(0,0,width,height);
   //background(255);
   if(keycheck == 1){
    for(int i = 0; i<dn ;i++){
     r[i].posUpdate();
    
    }
    for(int i = 0; i<dn ;i++){
     r[i].display();
    }
    basepad();
   }
   if(keycheck == -1){                    
     for(int i = 0; i<dn ;i++){
     r[i].lineUp();
    
    }
    for(int i = 0; i<dn ;i++){
     r[i].display();
    }
    basepad();
   }
  
 }
 ////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
/*    mouseaction(stop & go)    */  
int lpcheck = 1;  // loop check variable
void mousePressed(){
  if(lpcheck == 1){
    loop();
   frameRate(70);
    lpcheck = lpcheck * (-1);
  }
  else{
    noLoop();
    lpcheck = lpcheck * (-1);
  }
}
/*    mouseaction(stop & go)        */


 class Pcircle
 {
     float xpos;   //x position of the circle
     float ypos;   //y position of the circle
     int   num;    // phone number
     int   call;   // number of calls
     int   sec ;   // total call time
     int tr,g,b;   // color of the circle
     int xdirection, ydirection;
     float v;      //velocity of the circle
     float cxpos;
     float cypos;
    
 
     Pcircle(float ixpos, float iypos, int inum, int icall, int isec, int itr, int ig, int ib,int ixdirection, int iydirection,float icxpos,float icypos) {
       xpos = ixpos;
       ypos = iypos;
       num = inum;
       call = icall;
       sec = isec;
       tr =itr;
       g = ig;
       b = ib;
       xdirection = ixdirection;
       ydirection = iydirection;
       cxpos = icxpos;
       cypos = icypos;
     
     }
   
     void display(){
       noStroke();
       fill(tr,g,b,190);
       //ellipse(xpos, ypos, 2*sqrt(sec), 2*sqrt(sec));  
       ellipse(xpos, ypos, sec/90, sec/90);
    
     }
     void posUpdate(){
      // float v = 50/sqrt(sec);      // velocity of the each circle
       float v = sqrt(call)/4;
       xpos = xpos + v*cos(360/dn*num)*xdirection;
       cxpos = xpos;
       ypos = ypos + v*sin(360/dn*num)*ydirection;
       cypos = ypos;
      
       if(xpos > (width-(sec/90)/2) || xpos<(sec/90)/2){
         xdirection *= -1;
       }
       if(ypos >((height-keypad)-(sec/90)/2) || ypos<(sec/90)/2){
         ydirection *= -1;
       }
     }
    
     void lineUp(){
       float a = (width/2)+60*cos(TWO_PI/dn*num);
       float b = ((height-keypad)/2)+60*sin(TWO_PI/dn*num);
       float ax = a - cxpos;
       float ay = b - cypos;
       if((abs(a-xpos)<=abs(ax/80)) && (abs(b-ypos)<=abs(ay/80))){
         xpos = a;
         ypos = b;
         }
         else{
           xpos = xpos+ax/80;
           ypos = ypos+ay/80;
           }
        }     
         
 }
 
 void keyPressed(){
   if(keyCode == ENTER){
     keycheck = -1;
   }
 }
        
    
      
 


  

Posted by 알 수 없는 사용자

사용자 삽입 이미지

두더지잡기 게임 계속 만들어보고 있는데..
될듯이 안되서 ㅠㅠ 도움을 받고자 여기에 올립니다 ㅋㅋ

어쩔때는 되고 어쩔때는 안되는데,
원래는 두더지 위에서 마우스를 클릭하면, 잡힌 두더지(?) 그림이 떴으면 좋곘는데...
마우스를 꾹~ 계속 클릭하고 있어야 될 때도 있고...
아예 안될때도 있고 하는데 어찌해야 할지 몰라서 일단 올려봅니다.

틀린데 좀 지적해주세요~ +_+;;

------------------------------------------------------------

void setup(){
  size(400,400);

}

int [] datax = {0, 100, 200, 300};
int [] datay = {0, 100, 200, 300}; // 불러올 이미지 x,y좌표값 Arrays
int x = 0, y = 0;

void draw(){

  PImage imgBackground;
  imgBackground = loadImage("backmogura.JPG"); //배경풀밭

  PImage mogura, mogura2;
  mogura = loadImage("mogura.jpg"); //그냥 두더지
  mogura2 = loadImage("mogura2.jpg"); //맞은 두더지

 image(imgBackground,0,0);
 
  frameRate(1); //이게 높아지면 난이도가 상승ㅋㅋ
 
   
  int mogurax = datax[int(random(0,3))];
  int moguray = datay[int(random(0,3))]; // 두더지 출현 위치 랜덤 16가지 지정
 

  image(mogura,mogurax,moguray); // 그냥 두더지가 나오게 함
 
 if (mouseButton == LEFT){ 

   if (((mouseX>mogurax)&&(mouseX<mogurax+100)) && ((mouseY>moguray)&&(mouseY<moguray+100)))
    {
      // mogurax, moguray가 이미지를 불러오는 기준점이 되기 때문에
      // 각각 mouseX,mouseY의 범위를 mogurax,moguray에서 100 더해준데까지 잡았습니다

 image(mogura2,mogurax,moguray); // 맞는 두더지가 나오게 함
  }
 
 }  
    
}

Posted by 알 수 없는 사용자