วันพุธที่ 26 พฤศจิกายน พ.ศ. 2557

Lab 5 - Queue

void setup(){
  Patient[] P = {new Patient("Aruk Pupatee",80,false),new Patient("Tanaphat Kalaya",100,true),
  new Patient("Anuparp Chewakumnuan",20,true),new Patient("Apichit Saisuttivong",100,false)};
  PatientQueue PQ = new PatientQueue(P);
  PQ.showAllPatient();
  Patient P1 = new Patient("Anothai Arunthong",90,false);
  Patient P2 = new Patient("Warunatid Thongsalee",100,false);
  Patient P3 = new Patient("Chayanin Khawsanit",60,true);
  PQ.addPatient(P1);
  PQ.addPatient(P2);
  PQ.addPatient(P3);
  PQ.showAllPatient();
  PQ.removePatient();
  PQ.showAllPatient();
}
class PatientQueue{
  Patient[] HospitalPatient;
  PatientQueue(Patient p){
    this.HospitalPatient = new Patient[1];
    this.HospitalPatient[0] = p;
  }
  PatientQueue(Patient[] p){
    this.HospitalPatient = p;
    this.sortQueue();
  }
  void sortQueue(){
    Patient[] p = new Patient[this.HospitalPatient.length-this.getTotalEmer()];
    int pcount = 0;
    for(int i=0;i<this.HospitalPatient.length;i++){
      if(!this.HospitalPatient[i].getEmer()){
        p[pcount] = this.HospitalPatient[i];
        pcount++;
      }
    }
    for(int i=0;i<this.HospitalPatient.length;i++){
      for(int j=i;j<this.HospitalPatient.length;j++){
        if(!this.HospitalPatient[i].getEmer() && this.HospitalPatient[j].getEmer()){
          Patient temp = this.HospitalPatient[i];
          this.HospitalPatient[i] = this.HospitalPatient[j];
          this.HospitalPatient[j] = temp;
        }
        else {
          if(this.HospitalPatient[i].getEmer() && this.HospitalPatient[j].getEmer()){
            if(this.HospitalPatient[i].getBlood() > this.HospitalPatient[j].getBlood()){
              Patient temp = this.HospitalPatient[i];
              this.HospitalPatient[i] = this.HospitalPatient[j];
              this.HospitalPatient[j] = temp;
            }
          }
        }
      }
    }
    for(int i=(this.HospitalPatient.length-1);i>(this.getTotalEmer()-1);i--){
      HospitalPatient[i] = p[pcount-1];
      pcount--;
    }
  }
  void addPatient(Patient p){
    Patient[] temp = new Patient[this.HospitalPatient.length+1];
    for(int i=0;i<this.HospitalPatient.length;i++){
      temp[i] = this.HospitalPatient[i];
    }
    temp[temp.length-1] = p;
    this.HospitalPatient = temp;
    this.sortQueue();
  }
  void removePatient(){
    Patient[] temp = new Patient[this.HospitalPatient.length-1];
    for(int i=0;i<(this.HospitalPatient.length-1);i++){
      temp[i] = this.HospitalPatient[i+1];
    }
    this.HospitalPatient = temp;
  }
  void showAllPatient(){
    for(int i=0;i<this.HospitalPatient.length;i++){
      print((i+1)+")."+this.HospitalPatient[i].getName());
      print(" Blood : "+this.HospitalPatient[i].getBlood()+"%");
      if(this.HospitalPatient[i].getEmer()){
        println(" <<< EMERGENCY !!");
      }
      else println("");
    }
    println("----------------------------------------------------");
  }
  int getTotalEmer(){
    int count=0;
    for(int i=0;i<this.HospitalPatient.length;i++){
      if(this.HospitalPatient[i].getEmer()){
        count++;
      }
    }
    return count;
  }
}
class Patient{
  String name;
  int blood;
  boolean isEmergency;
  Patient(String n,int b,boolean e){
    this.name = n;
    if(b>100){
      this.blood = 100;
    }
    else this.blood = b;
    this.isEmergency = e;
  }
  String getName(){
    return this.name;
  }
  int getBlood(){
    return this.blood;
  }
  boolean getEmer(){
    return this.isEmergency;
  }
}

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

Lab 5 - class House

void setup(){
  size(500,500);
  background(255);
  House h = new House(100,100,150,150);
  h.display();
}
class House{
  int x,y,w,h;
  Door door;
  Window left_window;
  Window right_window;
  Roof roof;
  House(int x,int y,int w,int h){
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.door = new Door(this.x+((this.w*2)/5),this.y+(this.h/2),this.w/5,this.h/2);
    this.left_window = new Window(this.x+(this.w/7),this.y+(this.h/2),this.w/7,this.h/5);
    this.right_window = new Window(this.x+((this.w*5)/7),this.y+(this.h/2),this.w/7,this.h/5);
    this.roof = new Roof(this.x,this.y,this.w,this.h/2);
  }
  void display(){
    rect(this.x,this.y,this.w,this.h);
    this.door.display();
    this.left_window.display();
    this.right_window.display();
    this.roof.display();
  }
}
class Door{
  int x,y,w,h;
  Door(int x,int y,int w,int h){
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
  }
  void display(){
    rect(this.x,this.y,this.w,this.h);
  }
}
class Window{
  int x,y,w,h;
  Window(int x,int y,int w,int h){
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
  }
  void display(){
    rect(this.x,this.y,this.w,this.h);
    line(this.x+(this.w/2),this.y,this.x+(this.w/2),this.y+this.h);
    line(this.x,this.y+(this.h/2),this.x+this.w,this.y+(this.h/2));
  }
}
class Roof{
  int x,y,w,h;
  Roof(int x,int y,int w,int h){
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
  }
  void display(){
    triangle(this.x,this.y,this.x+(this.w/2),this.y-this.h,this.x+this.w,this.y);
  }
}

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

Lab 5 - class Matrix

void setup(){
  int[][] a = {{-1,2,1},
               {3,-2,4},
               {2,-3,1}};
  int[][] b = {{7,4,-2},
               {-1,-5,1},
               {-3,4,6}};
  Matrix m = new Matrix(a);
  Matrix n = new Matrix(b);
  m.ChangeValueAt(4,2,2);
  m.ShowMatrix();
  m.AddMatrix(n);
  m.ShowMatrix();
  n.SubMatrix(m);
  n.ShowMatrix();
}

class Matrix{
  int[][] matrix;
  int max_row;
  int max_column;
  Matrix(int r,int c){
    matrix = new int[r][c];
    this.max_row = this.matrix.length;
    this.max_column = this.matrix[0].length;
  }
  Matrix(int[][] a){
    this.matrix = a;
    this.max_row = this.matrix.length;
    this.max_column = this.matrix[0].length;
  }
  void ChangeMatrix(int[][] a){
    this.matrix = a;
    this.max_row = this.matrix.length;
    this.max_column = this.matrix[0].length;
  }
  void ChangeValueAt(int value,int r,int c){
    this.matrix[r-1][c-1] = value;
  }
  void ShowMatrix(){
    for(int r=0;r<this.max_row;r++){
      print("|");
      for(int c=0;c<this.max_column;c++){
        if(this.matrix[r][c]>=0){
          print("  "+this.matrix[r][c]+" ");
        }
        else print(" "+this.matrix[r][c]+" ");
      }
      println("|");
    }
    println("");
  }
  void AddMatrix(Matrix x){
    if((this.max_row==x.max_row)&&(this.max_column==x.max_column)){
      for(int r=0;r<this.max_row;r++){
        for(int c=0;c<this.max_column;c++){
          this.matrix[r][c] = this.matrix[r][c] + x.matrix[r][c];
        }
      }
    }
    else println("Can't add matrix");
  }
  void SubMatrix(Matrix x){
    if((this.max_row==x.max_row)&&(this.max_column==x.max_column)){
      for(int r=0;r<this.max_row;r++){
        for(int c=0;c<this.max_column;c++){
          this.matrix[r][c] = this.matrix[r][c] - x.matrix[r][c];
        }
      }
    }
    else println("Can't subtract matrix");
  }
  /*
  int FindDet(){
    int det=0;
    if((this.max_row==this.max_column) ){
      if(this.max_row==2){
        det = (this.matrix[0][0]*this.matrix[1][1])-(this.matrix[1][0]*this.matrix[0][1]);
      }
      else {
        if(this.max_row==3){
          for(int c=0;c<this.matrix[0].length;c++){
            for(int r=c
          }
        }
        else {
          println("Can't find determinant");
        }
      }
    }
    else println("Can't find determinant");
    return det;
  }
  */
}

วันจันทร์ที่ 27 ตุลาคม พ.ศ. 2557

Lab 5 - class Complex Number



void setup(){
  Complex a = new Complex(5,7);
  Complex b = new Complex(2,4);
  Complex z,y;
  println(a.toString());
  z = a.addComplex(b);
  println(z.toString());
  y = b.subtractComplex(a);
  println(y.toString());
}
class Complex{
  int real;
  int imagine;
  Complex(int real,int imagine){
    this.real = real;
    this.imagine = imagine;
  }
  Complex addComplex(Complex x){
    int r,i;
    r = this.real + x.real;
    i = this.imagine + x.imagine;
    Complex c = new Complex(r,i);
    return c;
  }
  Complex subtractComplex(Complex x){
    int r,i;
    r = this.real - x.real;
    i = this.imagine - x.imagine;
    Complex c = new Complex(r,i);
    return c;
  }
  String toString(){
    String s="";
    if(this.real!=0){
      s = s+this.real;
    }
    if(this.imagine!=0){
      if(this.imagine>0){
        s = s+"+";
      }
      s = s+this.imagine+"i";
    }
    return s;
  }
}

วันพุธที่ 22 ตุลาคม พ.ศ. 2557

Lab 5 - class Balloon




int n=5;
Balloon[] B = new Balloon[n];

void setup(){
  size(350,500);
  background(255);
  for(int i=0;i<B.length;i++){
    B[i] = new Balloon((width/(n+1))*(i+1),height+((height/n)*(i+1)),20,color(255,0,0));
  }
}

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

void mousePressed(){
  for(int i=0;i<B.length;i++){
    B[i].reset();
  }
}

class Balloon{
  int x,y,r,c;
  int dx,dy,dr,dc;

  Balloon(int x,int y,int r,color c){
    this.x = x;
    this.y = y;
    this.r = r;
    this.c = c;
    this.dx = x;
    this.dy = y;
    this.dr = r;
    this.dc = c;
  }

  void display(){
    int WBalloon = 2*this.r;
    int HBalloon = 3*this.r;
    fill(this.c);
    ellipse(this.x,this.y,WBalloon,HBalloon);
    line(this.x,this.y+(HBalloon/2),this.x,this.y+(1.2*HBalloon));
  }

  void moveUp(int speed){
    this.y = this.y - speed;
  }

  void reset(){
    this.x = dx;
    this.y = dy;
    this.r = dr;
    this.c = dc;
  }
}

วันพุธที่ 15 ตุลาคม พ.ศ. 2557

Lab 4 - Draw Board Game (Mark Horse)




int MaxRow=8,MaxColumn=8;
int[][] HorseP1 = new int[MaxRow][MaxColumn];
int[][] HorseP2 = new int[MaxRow][MaxColumn];
void setup(){
  size(400,400);
  //MaxColumn = number of vertical line , MaxRow = number of horizontal line
  color black=color(0),white=color(255),red=color(255,0,0),blue=color(5,255,255);
  DrawBoard(MaxRow,MaxColumn,black,white);
  ResetBoard(HorseP1,HorseP2);
  DrawAllHorse(HorseP1,HorseP2,red,blue);
}
void DrawBoard(int R,int C,color Color1,color Color2){
  color FillColor=Color1;
  for(int r=0;r<R;r++){
    for(int c=0;c<C;c++){
      if((c%2)==(r%2)){
        FillColor = Color1;
      }
      else{
        FillColor = Color2;
      }
      fill(FillColor);
      rect(c*(width/C),r*(height/R),width/C,height/R);
    }
  }
}
void ResetBoard(int[][] P1,int[][] P2){
  //Reset All
  for(int r=0;r<MaxRow;r++){
    for(int c=0;c<MaxColumn;c++){
      P1[r][c] = 0;
      P2[r][c] = 0;
    }
  }
  //Add P1
  for(int r=0;r<=1;r++){
    for(int c=0+r;c<P1[r].length;c=c+2){
      P1[r][c] = 1;
    }
  }
  //Add P2
  for(int r=0;r<=1;r++){
    for(int c=0+r;c<P2[r+MaxRow-2].length;c=c+2){
      P2[r+MaxRow-2][c] = 1;
    }
  }
}
void DrawHorse(int x,int y,color c){
  fill(c);
  ellipse(x,y,(width/MaxColumn)-10,(height/MaxRow)-10);
}
void DrawAllHorse(int[][] P1,int[][] P2,color CP1,color CP2){
  for(int r=0;r<MaxRow;r++){
    for(int c=0;c<MaxColumn;c++){
      if(P1[r][c]==1){
        DrawHorse((c*(width/MaxColumn))+(width/(2*MaxColumn)),(r*(height/MaxRow))+(height/(2*MaxRow)),CP1);
      }
      if(P2[r][c]==1){
        DrawHorse((c*(width/MaxColumn))+(width/(2*MaxColumn)),(r*(height/MaxRow))+(height/(2*MaxRow)),CP2);
      }
    }
  }
}

Lab 4 - Calculate Values (2D Arrays)

ตัวอย่างการใช้ Array 2 มิติในการเก็บชั่วโมงในการใช้ Internet ของนักเรียน 3 คน และนำมาคำนวน




void setup(){
  int[][] StdHrsInternetWeek =
  {{3,4,5,6,5,4,3},
  {2,1,4,7,2,1,3},
  {7,8,9,5,10,6,5}};
  PrintStdHrs(StdHrsInternetWeek);
  PrintAvgHrsPerDay(StdHrsInternetWeek);
}
void PrintStdHrs(int[][] A){
  for(int i=0;i<A.length;i++){
    println("Total student"+i+"'s internet hrs = "+SumRow(A[i])+" , Average per day = "+AvgRow(A[i]));
  }
}
int SumRow(int[] a){
  int sum = 0;
  for(int i=0;i<a.length;i++){
    sum = sum + a[i];
  }
  return sum;
}
float AvgRow(int[] a){
  float avg = (float)SumRow(a)/a.length;
  return avg;
}
void PrintAvgHrsPerDay(int[][] A){
  String[] day = {"Mondays","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
  for(int i=0;i<A[0].length;i++){
    println("Average "+day[i]+" = "+AvgColumn(A,i));
  }
}
int SumColumn(int[][] a,int n){
  int sum=0;
  for(int i=0;i<a.length;i++){
    sum = sum + a[i][n];
  }
  return sum;
}
float AvgColumn(int[][] a,int n){
  float avg = (float)SumColumn(a,n)/a.length;
  return avg;
}

วันพุธที่ 1 ตุลาคม พ.ศ. 2557

Count word

void setup(){
  String s = "";
  int count = count_words(s);
  println(count);
  s = "Welcome";
  count = count_words(s);
  println(count);
  s = "   Welcome  to Thailand";
  count = count_words(s);
  println(count);
}

int count_words(String a){
  int words;
  int start=-1,end=-1;
  if(a.length() != 0){
    words=1;
    if(a.charAt(0)==' '){
      for(int i=0;(i<a.length())&&(start<0);i++){
        if((a.charAt(i)==' ')&&(a.charAt(i+1)!=' ')){
          start = i+1;
        }
      }
    }
    else {start = 0;}
    if(a.charAt(a.length()-1)==' '){
      for(int i=a.length()-1;(i>=0)&&(end<0);i--){
        if((a.charAt(i)==' ')&&(a.charAt(i-1)!=' ')){
          end = i-1;
        }
      }
    }
    else {end = a.length();}
    for(int i=start;i<end;i++){
      if((a.charAt(i)==' ')&&(a.charAt(i+1)!=' ')){
          words = words+1;
      }
    }
  }
  else {words = 0;}
  return words;
}

โค้ดข้างล่าง ลองทำอีกวิธี แต่ยังบัคอยู่
/*
int count_words(String a){
  a = trim(a);
  println(a);
  String[] x = split(a,' ');
  int n = x.length;
  return n;
}
*/

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

Assignment 1 Bug Report - ปัญหาเกี่ยวกับ mousePressed

Bug
- ต้องการให้คลิกเปลี่ยนเฟรม แล้วมันกระโดดข้ามไปหลายเฟรม
Why
- เวลาจับเงื่อนไขการคลิกเมาส์ กรณีใช้ mousePressed ในเฟรมใกล้ๆกัน จะเกิดปัญหา เช่น
ต้องการให้คลิกเมาส์แต่ละครั้ง เปลี่ยนจากเฟรม 1 ไป 2 จาก 2 ไป 3 จาก 3 ไป 4
เมื่อใช้ mousePressed() กลายเป็นว่าคลิกแล้วเปลี่ยนจากเฟรม 1 ไป 4
How to fix bug
- เลือกใช้เป็นฟังก์ชัน mousePressed() หรือ mouseClicked() แทน
ไม่เช่นนั้นก็ใส่เงื่อนไขเพิ่มเติม เวลาใช้ mousePressed

วันเสาร์ที่ 27 กันยายน พ.ศ. 2557

Assignment 1 Bug Report - ปัญหาเกี่ยวกับ frameRate

Bug
- เวลานำค่า frameRate มาใช้ในการคำนวนเพื่อหน่วงเวลาแล้วมีปัญหา
Why ?
- ตัวแปรที่นำค่า frameRate มาคำนวน มีการ update ไวมากจนใช้ == ไม่ได้
How To Fix
- ใช้เป็น >= , <= แทน