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

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; isize(); 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; isize(); 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; isize(); 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; isize(); 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; t3) {
            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);
            }
          }
        }

    }
}