[WAT-JS539] 조이스틱 게임 실험 키트 예제 중 조이스틱으로 캐릭터는 제어하는 예제입니다.

실험에 사용할 WAT-JS539 보드를 컴퓨터에 USB 케이블로 연결합니다.
최신 소스코드는 [파일]=>[예제]=>[WhiteAT UNO]=> [JS539] => [11_JS539_1] 에 있으며
라이브러리는 아두이노 개발환경 을 참조하세요
/*
WAT-JS539 조이스틱 게임 실험 모듈로
조이스틱 움직임과 버튼으로 간단한 게임 가능한 예제
보드:
WAT-JS539 조이스틱 (WAT-JS539) 모듈 : https://kit128.com/goods/view?no=539
WAT-JS539 설명
출처: https://docs.whiteat.com/?p=6412
*/
#define DELAY 400
#define PIN_ANALOG_X 0
#define PIN_ANALOG_Y 1
#define BUTTON_UP 2
#define BUTTON_RIGHT 3
#define BUTTON_DOWN 4
#define BUTTON_LEFT 5
#define BUTTON_E 6
#define BUTTON_F 7
void setup()
{
Serial.begin(115200);
pinMode(BUTTON_UP, INPUT);
digitalWrite(BUTTON_UP, HIGH);
pinMode(BUTTON_RIGHT, INPUT);
digitalWrite(BUTTON_RIGHT, HIGH);
pinMode(BUTTON_DOWN, INPUT);
digitalWrite(BUTTON_DOWN, HIGH);
pinMode(BUTTON_LEFT, INPUT);
digitalWrite(BUTTON_LEFT, HIGH);
pinMode(BUTTON_E, INPUT);
digitalWrite(BUTTON_E, HIGH);
pinMode(BUTTON_F, INPUT);
digitalWrite(BUTTON_F, HIGH);
}
// 123,123,1,1,1,1,1,1 형태로 전송
String strSend = "";
void loop()
{
strSend = "";
strSend += analogRead(PIN_ANALOG_X);
strSend += ",";
strSend += (1023 - analogRead(PIN_ANALOG_Y));
strSend += ",";
if (digitalRead(BUTTON_UP) == LOW) {
strSend += "1";
}
else
{
strSend += "0";
}
strSend += ",";
strSend += digitalRead(BUTTON_RIGHT) == LOW;
strSend += ",";
strSend += digitalRead(BUTTON_DOWN) == LOW;
strSend += ",";
strSend += digitalRead(BUTTON_LEFT) == LOW;
strSend += ",";
strSend += digitalRead(BUTTON_E) == LOW;
strSend += ",";
strSend += digitalRead(BUTTON_F) == LOW;
Serial.println(strSend);
delay(100);
}
// Arduino joystick play Example #01
//
// KIT set
// WAT-JS539 : https://kit128.com/goods/view?no=539
import processing.serial.*;
Serial port;
int WIDTH = 680;
int HEIGHT = 853;
int lastTime=0;
int setTimer = 10;
Enemy enemy = new Enemy();
String myString = null;
PImage imageFly = new PImage() ;
PImage imageFire = new PImage() ;
int gun_x = 0;
int gun_y = -110;
PImage imageBG = new PImage() ;
int x,y;
void setup() {
size(680,853);
x = WIDTH/2-80;
y = HEIGHT/3*2-80;
imageFly = loadImage("fly.png");
imageFire = loadImage("gun.png");
imageBG = loadImage("bg.jpg");
println("Available serial ports:");
println(Serial.list());
port = new Serial(this, Serial.list()[0], 115200);
image(imageBG,0,0,WIDTH,HEIGHT);
surface.setTitle("Arduino Joystick Play Example #01 - http://docs.WhiteAT.com");
}
void draw()
{
boolean is_refresh = false;
int passedTime = millis() - lastTime;
if(passedTime > setTimer)
{
lastTime = millis();
gun_y -=20;
is_refresh = true;
enemy.move();
if(enemy.IsHit(gun_x,gun_y+20))
{
enemy.moveFirst();
gun_y = -100;
}
}
int iTemp =0;
myString ="";
while (port.available() > 0) {
myString = port.readStringUntil(10);
}
myString = myString.replace('\n', ' ');
myString = trim(myString);
if(myString.length()>0)
println(myString);
// x, y,A,B,C,D,E,F
String[] list = split(myString, ","); // 500,503,1,1,1,1,1,1
if(is_refresh)
{
image(imageBG,0,0,WIDTH,865);
image(imageFire,gun_x,gun_y);
}
if(list.length==8)
{
// x
iTemp = Integer.parseInt(list[0]);
if( iTemp<=400) x-=50;
else if( iTemp>=600) x+=50;
if(x<0) x+=50;
else if(x>WIDTH-imageFly.width) x-=50;
// y
iTemp = Integer.parseInt(list[1]);
if( iTemp<=400) y-=50;
else if( iTemp>=600) y+=50;
if(y<0) y+=50;
else if(y>HEIGHT-imageFly.height) y-=50;
// gun
if(1== Integer.parseInt(list[5]))
{
if(gun_y<0)
{
gun_x = x +(imageFly.width -imageFire.width)/2;
gun_y = y;
}
}
}
image(imageFly ,x,y);
enemy.draw();
PFont f= createFont("Arial",16,true);
textFont(f,32);
text("WhiteAT.com, KIT128.com",20,30);
}
class Enemy
{
PImage image =null;
int x=50;
int y=0;
public boolean IsHit(int _x,int _y )
{
if ( x < _x && _x < (x + image.width) && y < _y && _y < (y + image.height) )
return true;
else
return false;
}
public void move()
{
y+=10;
if(y >800)
{
moveFirst();
}
}
public void moveFirst()
{
y=0;
x= (int)random(60)*10;
}
public void draw()
{
if(image ==null)
image = loadImage("ghost.png");
image(image,x,y);
}
}
적군이 랜덤 위치에서 내려오며 조이스틱으로 비행이 조종이 가능합니다. 버튼을 누르면 미사일로 발사 됩니다.

| 번호 | 제목 | 조회 수 |
|---|---|---|
| 3 |
프로세싱에서 키보드로 캐릭터 움직이기
|
3,310 |
| » |
[WAT-JS539]조이스틱에 연결하여 캐릭터 움직이기
|
1,633 |
| 1 |
processing (쉬운 프로그래밍 언어)
|
1,888 |