วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2557

Lab 5[Continue] : Task#2 - Queue[fixed]

/*
>>>Basic Array Queue<<<
Mod. able Variable List
  1. maxQ = Max queue size
Method List
  1. come(String name,int priority) ==> Add a new case with priority to the queue
  2. come(String name) ==> Add a new case without priority to the queue
  3. go() ==> remove first case in the queue & shift others instead
*/

class Queue
{
  Case[] queue;
  int maxQ;
  Queue(int maxQ)
  {
    this.queue=new Case[maxQ];
    this.maxQ=maxQ;
    reset();
  }
  void come(String name,int priority)
  {
    int index;
    index=findInsertIndex(priority);
    insertCase(name,priority,index);
  }
  void come(String name)
  {
    int index;
    index=findLastIndex();
    insertNormalCase(name,index);
  }
    int findInsertIndex(int priority)
    {
      int index=maxQ;
      for(int i=maxQ-1;i>=0;i--)
      {
        if(priority>queue[i].priority)
        {
          index=i;
        }
      }
      return index;
    }
    int findLastIndex()
    {
      int last=maxQ;
      for(int i=maxQ-1;i>=0;i--)
      {
        if(queue[i].priority==0)
        {
          last=i;
        }
      }
      return last;
    }
    void insertCase(String name,int priority,int index)
    {
      for(int i=maxQ-1;i>index;i--)
      {
        queue[i]=queue[i-1];
      }
      queue[index]=new Case(name,priority);
    }
    void insertNormalCase(String name,int index)
    {
      if(index!=maxQ)
      {
        for(int i=maxQ-1;i>index;i--)
        {
          queue[i]=queue[i-1];
        }
        queue[index]=new Case(name,queue[index-1].priority);
      }
    }
  void go()
  {
    for(int i=0;i<maxQ-1;i++)
    {
      queue[i]=queue[i+1];
    }
    queue[maxQ-1]=new Case("None",0);
  }
  void reset()
  {
    for(int i=0;i<this.maxQ;i++)
    {
      this.queue[i]=new Case("None",0);
    }
  }
  void show()
  {
    println("Name - Priority");
    for(int i=0;i<maxQ;i++)
    {
      println(this.queue[i]);
    }
  }
}

class Case
{
  String name;
  int priority;
  Case(String name,int priority)
  {
    this.name=name;
    this.priority=priority;
  }
  String toString()
  {
    String string;
    string=this.name+" - "+this.priority;
    return string;
  }
}

void setup()
{
  Queue q1=new Queue(5);
  q1.come("A",10);
  q1.come("B",9);
  q1.come("C",8);
  q1.come("D",9);
  q1.come("E");
  q1.go();
  q1.go();
  q1.show();
}

Lab 5[Continue] : Task#1 - Class House

class House
{
  int x;
  int y;
  int size;
  Window l;
  Window r;
  Door door;
  House(int x,int y,int size)
  {
    this.x=x;
    this.y=y;
    this.size=size;
    this.l=new Window(x-(size/4),y-(size/4),size);
    this.r=new Window(x+(size/4),y-(size/4),size);
    this.door=new Door(x,y,size);
  }
  void show()
  {
    rectMode(CENTER);
    rect(this.x,this.y,this.size,this.size);
    triangle(this.x-(this.size/2),this.y-(this.size/2),this.x,this.y-(this.size/2)-(this.size/2),this.x+(this.size/2),this.y-(this.size/2));
    l.show();
    r.show();
    door.show();
  }
  void moveUp()
  {
    this.y--;
  }
  void moveDown()
  {
    this.y++;
  }
  void moveLeft()
  {
    this.x--;
  }
  void moveRight()
  {
    this.x++;
  }
}

class Window
{
  int x;
  int y;
  int size;
  Window(int x,int y,int size)
  {
    this.x=x;
    this.y=y;
    this.size=size/4;
  }
  void show()
  {
    rectMode(CENTER);
    rect(this.x,this.y,this.size,this.size);
    line(this.x-(this.size/2),this.y,this.x+(this.size/2),this.y);
    line(this.x,this.y-(this.size/2),this.x,this.y+(this.size/2));
  }
}

class Door
{
  int x;
  int y;
  int size;
  Door(int x,int y,int size)
  {
    this.x=x;
    this.y=y;
    this.size=size;
  }
  void show()
  {
    rectMode(CENTER);
    rect(this.x,this.y+(this.size/2)-(this.size/10*2),this.size/3.5,this.size/5*2);
    ellipse(this.x+(this.size/11),this.y+(this.size/2)-(this.size/10*2),this.size/20,this.size/20);
  }
}

void setup()
{
  size(500,500);
  strokeWeight(3);
}

void draw()
{
  background(155);
  House a=new House(250,300,200);
  a.show();
}

Lab 5 : Task#3 - Save Table Balloon

int w=500,h=500,count=0;
float v=1,r=50;

class balloon
{
  float r;
  float px;
  float py;
  balloon(float r,float px,float py)
  {
    this.r=r;
    this.px=px;
    this.py=py;
  }
  void moveUp()
  {
    if(py!=height+999)
    {
      this.py=this.py-v;
    }
    if(this.py<0-r)
    {
      this.py=height+r;
    }
  }
  void display()
  {
    line(this.px,this.py,this.px,this.py+100);
    ellipse(this.px,this.py,r*2,r*2);
  }
}

balloon[] a=new balloon[10];

void setup()
{
  for(int i=0;i<a.length;i++)
  {
    a[i]=new balloon(50,random(-r,w+r),random(-r,h+r));
  }
  Table table=new Table();
  table.addColumn("X");
  table.addColumn("Y");
  TableRow row[]=new TableRow[a.length];
  for(int i=0;i<a.length;i++)
  {
    row[i]=table.addRow();
    row[i].setFloat("X",a[i].px);
    row[i].setFloat("Y",a[i].py);
  }
  saveTable(table,"C:/Users/Thanaphat/Desktop/table.csv");
  size(w,h);
}

void draw()
{
  background(155);
  for(int i=0;i<a.length;i++)
  {
    a[i].display();
    a[i].moveUp();
  }
}

Lab 5 : Task#2 - Load Table Balloon

int w=500,h=500,count=0;
float v=1,r=50;

class balloon
{
  float r;
  float px;
  float py;
  balloon(float r,float px,float py)
  {
    this.r=r;
    this.px=px;
    this.py=py;
  }
  void moveUp()
  {
    if(py!=height+999)
    {
      this.py=this.py-v;
    }
    if(this.py<0-r)
    {
      this.py=height+r;
    }
  }
  void display()
  {
    line(this.px,this.py,this.px,this.py+100);
    ellipse(this.px,this.py,r*2,r*2);
  }
}

balloon[] a=new balloon[10];

void setup()
{
  Table table = loadTable("C:/Users/Thanaphat/Desktop/table.csv", "header");
  int i=0;
  for(TableRow row:table.rows())
  {
    float px=row.getInt("X");
    float py=row.getInt("Y");
    a[i]=new balloon(50,px,py);
    i++;
  }
  size(w,h);
}

void draw()
{
  background(155);
  for(int i=0;i<a.length;i++)
  {
    a[i].display();
    a[i].moveUp();
  }
}

Lab 5 : Task#1 - Class Balloon

int w=500,h=500,count=0;
float v=1,r=50;

class balloon
{
  float r;
  float px;
  float py;
  balloon(float r,float px,float py)
  {
    this.r=r;
    this.px=px;
    this.py=py;
  }
  void moveUp()
  {
    if(py!=height+999)
    {
      this.py=this.py-v;
    }
    if(this.py<0-r)
    {
      this.py=height+r;
    }
  }
  void display()
  {
    line(this.px,this.py,this.px,this.py+100);
    ellipse(this.px,this.py,r*2,r*2);
  }
}

balloon[] a=new balloon[100];

void setup()
{
  for(int i=0;i<100;i++)
  {
    a[i]=new balloon(50,0,height+999);
  }
  size(w,h);
}

void draw()
{
  background(155);
  for(int i=0;i<a.length;i++)
  {
    a[i].display();
    a[i].moveUp();
  }
}

void mousePressed()
{
  count++;
  a[count]=new balloon(50,mouseX,mouseY);
}