alanhc 互動技術-week14
alanhc 互動技術-week14
December 12, 2019
連線小畫家
先可以傳資料
Server(開啟port 5204作為服務端口)
import processing.net.*; Server server; Client client; void setup() { size(300,300); server = new Server(this, 5204); } void draw() { Client temp = server.available(); if (temp != null) { client = temp; String msg = client.readString(); println(msg); } } |
Client(送訊息到server)
import processing.net.*; Client client; void setup() { size(300,300); client = new Client(this, "127.0.0.1", 5204); } void draw() { if (mousePressed) { line(mouseX, mouseY, pmouseX, pmouseY); client.write(mouseX+" "+mouseY+" "+pmouseX+" "+pmouseY+"\n"); } } |
使用字串切割
splitTokens(now);
在Server程式把 println(msg)底下加上
String pos[] = splitTokens(msg); int mpos[]= new int[4]; for (int i=0; i<4; i++) { mpos[i] = int(pos[i]); } line(mpos[0],mpos[1],mpos[2],mpos[3]); |
完整程式碼
server
import processing.net.*; Server server; Client client; void setup() { size(300,300); server = new Server(this, 5204); } void draw() { Client temp = server.available(); if (temp != null) { client = temp; String msg = client.readString(); String pos[] = splitTokens(msg); int mpos[]= new int[4]; for (int i=0; i<4; i++) { mpos[i] = int(pos[i]); } line(mpos[0],mpos[1],mpos[2],mpos[3]); } } |
client
import processing.net.*;
Client client;
void setup()
{
size(300,300);
client = new Client(this, "127.0.0.1", 5204);
}
void draw()
{
if (mousePressed) {
line(mouseX, mouseY, pmouseX, pmouseY);
client.write(mouseX+" "+mouseY+" "+pmouseX+" "+pmouseY+"\n");
}
}
網路畫完可以undo
import processing.net.*; Client client; void setup() { size(300,300); client = new Client(this, "127.0.0.1", 5204); } void draw() { if (mousePressed) { line(mouseX, mouseY, pmouseX, pmouseY); client.write(mouseX+" "+mouseY+" "+pmouseX+" "+pmouseY+"\n"); } } |
ArrayList儲存
宣告
ArrayList points;
setup() >
points = new ArrayList();
存取
points.add()
points.remove()
Client
import processing.net.*; Client client; ArrayList<PVector> points; void setup() { size(300,300); client = new Client(this, "127.0.0.1", 5204); points = new ArrayList<PVector>(); } void draw() { background(0); for (int i=0; i circle(points.get(i).x, points.get(i).y, 10); } } void mouseDragged() { if (mouseButton==LEFT) { points.add(new PVector(mouseX, mouseY)); client.write(mouseX+" "+mouseY+" "+0); } else if (mouseButton==RIGHT&&points.size()>0) { points.remove(points.size()-1); client.write(mouseX+" "+mouseY+" "+1); } } |
Server
import processing.net.*; Server server; Client client; ArrayList<PVector> points; void setup() { size(300,300); server = new Server(this, 5204); points = new ArrayList<PVector>(); } void draw() { background(0); background(0); for (int i=0; i circle(points.get(i).x, points.get(i).y, 10); } Client temp = server.available(); if (temp != null) { client = temp; String msg = client.readString(); String pos[] = splitTokens(msg); int mpos[]= new int[3]; for (int i=0; i<3; i++) { mpos[i] = int(pos[i]); } if (mpos[2]==0) { points.add(new PVector(mpos[0], mpos[1])); } else if (mpos[2]==1 &&points.size()>0 ) { points.remove(points.size()-1); } } } |
處理不要掉字串
client
import processing.net.*; Client client; ArrayList<PVector> points; void setup() { size(300,300); client = new Client(this, "127.0.0.1", 5204); points = new ArrayList<PVector>(); } void draw() { background(0); for (int i=0; i circle(points.get(i).x, points.get(i).y, 10); } } void mouseDragged() { if (mouseButton==LEFT) { points.add(new PVector(mouseX, mouseY)); client.write(mouseX+" "+mouseY+" "+0+"\n"); } else if (mouseButton==RIGHT&&points.size()>0) { points.remove(points.size()-1); client.write(mouseX+" "+mouseY+" "+1+"\n"); } } |
server
import processing.net.*; Server server; Client client; ArrayList<PVector> points; void setup() { size(300,300); server = new Server(this, 5204); points = new ArrayList<PVector>(); } void draw() { background(0); for (int i=0; i circle(points.get(i).x, points.get(i).y, 10); } Client temp = server.available(); if (temp != null) { client = temp; String msg = client.readString(); if (msg!=null) { println(msg); String pos[] = splitTokens(msg); for (int t=0; t int mpos[]= new int[3*4]; for (int i=0; i<3; i++) { mpos[i] = int(pos[i+t]); } if (mpos[2]==0) { points.add(new PVector(mpos[0], mpos[1])); } else if (mpos[2]==1 &&points.size()>0 ) { points.remove(points.size()-1); } } } } } |