Pour cet atelier nous nous attaquons au réseau.
On repart d'un « Pong » mais en vertical \o/.
import processing.net.*;
Client c;
int lBar, hBar, ballSize;
int x1, y1, x2, y2, x3, y3;
void setup() {
size(400, 600);
ballSize = 15;
lBar = 100;
hBar = 20;
c = new Client(this, "127.0.0.1", 4321);
}
void draw() {
background(0);
sendPosition();
receivePosition();
drawBar();
drawBall();
x2 = mouseX;
}
void drawBar() {
rect(min(max(x1 - (lBar/2), 0), (width - lBar)), height - (hBar + 10), lBar, hBar);
rect(min(max(x2 - (lBar/2), 0), (width - lBar)), 10, lBar, hBar);
}
void drawBall() {
ellipse(x3, y3, ballSize, ballSize);
}
void sendPosition() {
c.write(x2+"\n");
}
void receivePosition() {
if (c.available() > 0) {
String input = c.readString();
input = input.substring(0, input.indexOf("\n"));
int[] data = int(splitTokens(input, ","));
x1 = data[0];
x3 = data[1];
y3 = data[2];
}
}
import processing.net.*;
Server s;
Client c;
int lBar, hBar, ballSize;
int x1, y1, x2, y2, x3, y3;
int h, v;
void setup() {
size(400, 600);
ballSize = 15;
lBar = 100;
hBar = 20;
x3 = width/2;
y3 = height/2;
s = new Server(this, 4321);
h = 3;
v = 2;
}
void draw() {
background(0);
h = (x3 > width - ballSize/2) || (x3 < ballSize/2)?-h:h;
if (v > 0) {
v = (y3 > height-(hBar+10+ballSize/2)) && (x3 > x1-lBar/2) && (x3< x1+lBar/2)?-v:v;
}
else if (v < 0) {
v = ((y3 < (ballSize/2+hBar+10))&&(x3 < x2+lBar/2)&&(x3 > x2-lBar/2) )?-v:v;
}
y3 = (y3 > height - ballSize/2) || (y3 < ballSize/2)?(height/2):y3;
x3 += h;
y3 += v;
sendPosition();
receivePosition();
drawBar();
drawBall();
x1 = mouseX;
}
void drawBar() {
rect(min(max(x1 - (lBar/2), 0), (width - lBar)), height - (hBar + 10), lBar, hBar);
rect(min(max(x2 - (lBar/2), 0), (width - lBar)), 10, lBar, hBar);
}
void drawBall() {
ellipse(x3, y3, ballSize, ballSize);
}
void sendPosition() {
s.write(x1+","+x3+","+y3+"\n");
}
void receivePosition() {
c = s.available();
if (c != null) {
String input = c.readString();
input = input.substring(0, input.indexOf("\n"));
int data = Integer.parseInt(input);
x2 = data;
}
}