2008年6月2日月曜日

もう限界

しのさんが書いてくれてたprocessingのコードを実行すると
最後の部分の

void resetBall(){
//put the ball back in center
xPos = width/2;
yPos = height/2;
}

というコードがunexpected tokenというエラーになってしまいます。
他人のコピペではなく自分でやれということでしょうか。

そしてArduinoの方も高確率で読み込み中に固まります。

そんな感じで今日は休講にもかかわらず学校へ来たのに
何もできず踏んだり蹴ったりでございました。

3 件のコメント:

やすこやか さんのコメント...

がんばれ!
私もUnexpected tokenになったよwなぜ?
私のソースも乗っけとくから、コピペしてみて。

import processing.serial.*;
//myPort(任意名)というオブジェクトを用意
Serial myPort;

int linefeed = 10;
float leftPaddle, rightPaddle;
int resetButton, serveButton;
int leftPaddleX, rightPaddleX;
int paddleHeight = 50;
int paddleWidth = 10;

float leftMinimum = 200;//ここは自分のセンサーの値にする
float rightMinimum = 250;
float leftMaximum = 450;
float rightMaximum = 600;

int ballSize = 10;
int xDirection = 1;
int yDirection = 1;

int xPos, yPos;

boolean ballInMotion = false;
int leftScore = 0;
int rightScore = 0;

PFont myFont;
int fontSize = 36;

void setup(){

size(640, 480);

xPos = width/2;
yPos = height/2;

println(Serial.list());

myPort = new Serial(this, Serial.list()[0], 9600);

myPort.bufferUntil(linefeed);

leftPaddle = height/2;
rightPaddle = height/2;
resetButton = 0;
serveButton = 0;

leftPaddleX = 50;
rightPaddleX = width - 50;

noStroke();

PFont myFont = createFont(PFont.list()[2], fontSize);
textFont(myFont);
}

void draw(){
background(0);

rect(leftPaddleX, leftPaddle, paddleWidth, paddleHeight);
rect(rightPaddleX, rightPaddle, paddleWidth, paddleHeight);

if (ballInMotion == true){
animateBall();
}
if (serveButton == 1){
ballInMotion = true;

}
if (resetButton == 1){
leftScore = 0;
rightScore =0;
ballInMotion = true;
}
text(leftScore, fontSize, fontSize);
text(rightScore, width-fontSize, fontSize);
}


void serialEvent(Serial myPort){

String myString = myPort.readStringUntil(linefeed);

if (myString != null){

myString = trim(myString);

int sensors[] = int (split(myString, ','));

if(sensors.length ==4){

float leftRange = leftMaximum - leftMinimum;
float rightRange = rightMaximum - rightMinimum;


leftPaddle = height * (sensors[0] - leftMinimum)/leftRange;
rightPaddle = height * (sensors[1] - rightMinimum)/rightRange;

resetButton = sensors[2];
serveButton = sensors[3];

print("left:"+leftPaddle + "\tright:"+rightPaddle);
println("\treset:"+resetButton+"\tserve:"+serveButton);
}
}
}

void animateBall(){
if (xDirection < 0){
if ((xPos <= leftPaddleX)){
if((leftPaddle - (paddleHeight/2) <= yPos)&&
(yPos <= leftPaddle + (paddleHeight/2))){
xDirection =-xDirection;
}
}
}
else {
if ((xPos >= (rightPaddleX + ballSize/2))){
if((rightPaddle - (paddleHeight/2) <=yPos)&&
(yPos <= rightPaddle + (paddleHeight/2))){
xDirection =-xDirection;
}
}
}
if (xPos <0){
rightScore++;
resetBall();
}
if (xPos > width){
leftScore++;
resetBall();
}
if ((yPos - ballSize/2 <= 0) || (yPos +ballSize/2 >= height)){
yDirection = -yDirection;
}

xPos = xPos + xDirection;
yPos = yPos + yDirection;

rect(xPos,yPos, ballSize, ballSize);

}

void resetBall(){
xPos = width/2;
yPos = height/2;
}

utano さんのコメント...

なぜだろね。微妙に全角スペースとかどっか入っちゃったのかしらね。すまぬぅ。

やすこやか さんのコメント...

全角スペースでダメって結構面倒だなぁ。
ミスが起こりやすい点として注意しとくと良いね。