Rabu, 29 Oktober 2014

Virtual LAN (VLAN) – VTP

VLAN merupakan suatu model jaringan virtual yang tidak bergantung pada lokasi fisik seperti LAN. Penggunaan VLAN akan membuat pengaturan jaringan menjadi sangat fleksibel karena dapat dibuat segmen yang bergantung pada organisasi, tanpa bergantung lokasi workstations.
VLAN diciptakan untuk menyediakan layanan segmentasi secara tradisional disediakan oleh router di konfigurasi LAN. VLAN menangani masalah-masalah seperti skalabilitas, keamanan, dan manajemen jaringan.
KEGUNAAN VLAN:
§  Menimalisir kemungkinan terjadinya konflik IP yang terlalu banyak.
§  Mencegah terjadinya collision domain (tabrakan domain).
§  Mengurangi tingkat vulnerabilities.
Berikut adalah penggunaan VLAN menggunakan Cisco Packet Tracer. Buatlah dua buah jaringan yang terdiri dari 4 PC, 2 Switch (2960), dan 1 buah Router. Susunan jaringan seperti gambar di bawah ini.


Lakukan konfigurasi pada Switch 1 (SW-1) untuk membagi 2 VLAN yaitu RED VLAN-10 dan GREEN VLAN-20. 

Konfigurasi pada SW-1 selesai. Langkah selanjutnya adalah konfigurasi pada SW-2 dengan cara yang sama. Hanya berbeda di IP address.
Kemudian, cek apakah port pada SW-1 telah aktif dengan cara seperti dibawah ini. Ketikkan SHOW VLAN BRIEF. Maka akan muncul semua port dengan status aktif atau tidak. Jaringan VLAN dengan nama RED sudah berhasil aktif dengan port aktifnya Fa0/10. Sementara untuk jaringan VLAN GREEN juga aktif dengan port Fa0/20.
Lakukan langkah yang sama pada SW-2.
 Langkah selanjutnya adalah membagi kedua jaringan tersebut menjadi client dan server.Dimana SW-1 menjadi Server dan SW-2 menjadi VTP Client. Konfigurasi untuk membuat VTP Server :
 Konfigurasi untuk membuat VTP Client :
 Menerapkan VLAN pada interface SW-2 :
 Tes Koneksi untuk PC Client.

Caranya untuk mengetes koneksi antar client (PC-A1 ke PC-B1) dengan command prompt :

Jika koneksi berhasil, maka akan mendapat balasan berupa Reply From [alamat IP]. Koneksi berhasil antara PC-A1 ke PC-B2 karena mereka masih berada dalam satu jaringan VLAN yang terhubung. Jika kita mencoba tes koneksi PC-A1 ke PC-A2, hasilnya akan RTO atau dikenal dengan Request Time Out dimana PC-A2 tidak melakukan Reply.

Langkah selanjutnya adalah menghubungkan kedua jaringan VLAN (VLAN-10 dan VLAN-20).



 Lakukan Konfigurasi untuk Gateway masing-masing PC, samakan Gateway antara VLAN-10 dan VLAN-20 agar dapat terhubung dan saling terkoneksi.
Sekarang kita dapat mencoba melakukan tes koneksi antara PC-A1 ke PC-A2 untuk memastikan bahwa kedua jaringan VLAN benar-benar telah terhubung.
Berikut adalah konfigurasi agar Switch dapat di Remote :


Kedua jaringan VLAN telah berhasil terhubung dan dapat mengirimkan pesan ke PC didalam jaringan yang berbeda.
Dari pembuatan jaringan VLAN di atas, kita dapat menyimpulkan bahwa,
  1. VTP Server (Virtual Trunking Protokol Server) berfungsi untuk meneruskan informasi VLAN ke Switch VTP Client melalui trunk yang aktif.
  2. VTP Client (Virtual Trunking Protokol Client)menerima informasi VLAN dari Switch VTP Server
  3. VTP Transparent tidak menyimpan informasi yang dikirim VTP Server, melainkan hanya meneruskan informasi tersebut ke VTP Client.

Sabtu, 18 Oktober 2014

Review International Journal of Computer Trends and Technology

The Role of Commercial Websites in the Improvements of E-Business
*Mohammed Ali Hussain, **Dr. K.V.Sambasiva Rao
*Research Scholar, Dept. of CSE, Acharya Nagarjuna Univ, Guntur, A.P., India.
**Principal & Professor, Dept. of CSE, M.V.R College of Engineering & Technology, Paritala, A.P., India.
PENDAHULUAN
The World Wide Web telah muncul sebagai media yang menjanjikan
untuk perdagangan elektronik dan ribuan organisasi telah menyiapkan website komersial untuk melakukan bisnis melalui Internet. maka dikerahkan memiliki potensi untuk mendukung operasi supply chain secara umum dan pengadaan khususnya. Saat ini, bisnis-ke-bisnis transaksi account untuk proporsi terbesar transaksi yang dilakukan melalui Internet. Jelas, elektronik commerce melalui internet telah menawarkan keuntungan penting  termasuk cara yang lebih efisien untuk melakukan bisnis transaksi untuk pembeli dan vendor sama. Dalam konteks ini,  website komersial
memainkan peran sentral. Sebagai pentingnya  website komersial meningkat, demikian juga perlu menilai faktor terkait dengan keberhasilan mereka. Sebelumnya penelitian tentang situs komersial telah sangat sering berfokus pada kualitas dan efektivitas isu dan telah meneliti sifat kunci yang meningkatkan kepuasan pembeli online, meningkatkan lalu lintas generasi atau meningkatkan kemungkinan pembelian online. Penelitian ini melampaui penyelidikan sederhana dari sangat diinginkan atribut yang berkontribusi terhadap kualitas website atau efektivitas. Berfokus pada sistem layanan web dapat menyediakan, studi ini menganalisis fungsi dari komersial website yang digunakan untuk pengadaan elektronik dan menghubungkan mereka dengan manfaat yang dirasakan oleh pengguna dan dengan yang relevan operasi bisnis. Bagi organisasi yang terlibat dalam perdagangan elektronik, manajer harus membuat keputusan tentang desain website komersial dan tentang desain
dari operasi bisnis maka didukung. Dalam konteks ini, manajer harus menyeimbangkan strategi bisnis mereka dan operasi antara “bermain murni elektronik commerce” dan ”Batu bata dan mortir commerce”. Manajer juga harus membenarkan biaya mengembangkan dan memelihara situs komersial, biaya yang meningkatkan jauh sebagai fungsi lanjutan ditambahkan. Komersial
website telah lama dianggap sebagai suatu iklan media dan model tradisional persuasi iklan telah berhasil dialihkan untuk memahami efek mereka .
TUJUAN DAN RUANG LINGKUP
Tujuan utama dari penelitian ini adalah untuk mempelajari ada status situs web komersial dan menyarankan langkah-langkah untuk layanan yang lebih baik kepada pelanggan. itu penelitian memberikan solusi yang lebih baik di berbagai bidang situs komersial di mana perbaikan diperlukan. Hal ini bertujuan untuk memperpanjang skalabilitas dari situs-situs komersial dan menyediakan arsitektur standar untuk mereka. Ruang lingkup penelitian ini adalah untuk menyediakan fungsionalitas lebih dari situs komersial untuk pengguna akhir untuk meningkatkan eBusiness. Hal ini menunjukkan bahwa keberadaan
canggih alat, fitur fungsionalitas dari situs ini dibuat lebih user-friendly untuk pelanggan dan penjual. Ini memperluas jangkauan pasar produk dalam
skenario
TINJAUAN LITERATUR
Penelitian di situs Web komersial telah sangat sering terfokus pada masalah kualitas dan efektivitas dan memiliki baik mengembangkan instrumen yang digunakan untuk menangkap keberhasilan situs Web atau memeriksa sifat utama dari peningkatan pembeli online ‘ kepuasan [1] atau lalu lintas atau  pembelian online (Shchiglik dan Barnes, 2004). Penelitian berfokus pada efektivitas situs komersial, telah mengidentifikasi kualitas informasi,
dilayari, kegunaan, kemampuan personalisasi, keamanan dan keandalan sebagai fitur yang sangat diinginkan yang membuat pembeli lebih mungkin untuk mengunjungi dan / atau untuk membeli di sebuah website (Tarafdar dan Zhang, 2006). Riset kecil atau tidak memiliki berfokus pada desain fungsional dari situs komersial yang meningkatkan efisiensi ekonomi mereka.
METODOLOGI PENELITIAN
Penelitian ini menggunakan kedua jenis analitis dan deskriptif metodologi. Penelitian ini dilakukan dalam dua tahap Format, dengan studi percontohan awal diikuti oleh studi utama:
6.1 Daerah studi
Penelitian ini telah dibagi menjadi dua bidang luas yaitu Analisis dan langkah-langkah perbaikan. Pada fase Analisis, pembeli dan penjual dari situs beberapa sampel diidentifikasi dan survei on-line dilakukan di antara mereka. Ini digunakan untuk menemukan daerah kelemahan utama dalam sebagian besar situs dan untuk menganalisis daftar produk yang biasa dibeli dan dijual di situs web komersial dan tingkat keamanan yang terlibat di dalamnya. Pada tahap kedua, perbaikan langkah-langkah yang harus dipertimbangkan untuk mengatasi kelemahan yang dapat ditemukan. Cara menerapkannya di masa depan yang untuk dianalisa dan diperiksa.
6.2 Pemilihan
Untuk melaksanakan kegiatan ini, survei on-line dilakukan antara pelanggan dan pembeli komersial website [2] yang dipilih secara acak. Survei ini bertujuan untuk menemukan permintaan untuk produk, keamanan yang terlibat, Modus iklan, saran dari pembeli dan penjual Hasil survei memberikan kesempatan untuk memahami masalah pelanggan, alasan untuk produk-produk tertentu tidak menjadi dijual dalam transaksi komersial. berbagai analisis teknik juga digunakan. Mereka mencerminkan pembayaran terbaik Metode yang dipraktekkan, waktu yang dibutuhkan untuk menyelesaikan transaksi, langkah-langkah keamanan yang diambil dalam pengiriman, transaksi yang sesuai mode untuk berbagai produk tertentu, jenis produk yang dijual lebih sering dan alasan bagi mereka. Hal ini juga memberikan solusi untuk menjembatani kesenjangan antara penjual dan pembeli. Juga, itu menyarankan langkah-langkah untuk meningkatkan komersial situs web dan membuat mereka bergerak user friendly. survei Hasil memberikan solusi yang lebih baik untuk masalah penelitian. Untuk menerapkan tingkat keamanan yang lebih tinggi [3] di situs web, arsitektur perangkat lunak yang lebih canggih dibingkai. itu penekanan adalah bahwa mungkin ada hanya satu website masalah mengurus semua transaksi antara semua situs tersedia. Ini menciptakan tanda tangan digital [4] dari pedagang dan pembeli. Setiap pembeli diperkenankan untuk membeli apapun dari salah satu pedagang (Asokan 2001). mereka identitas sebagai anggota di website master dikirim ke semua pembeli. Juga perlu membayar untuk gateway pembayaran dilakukan oleh situs penguasa tunggal dan setiap kebutuhan pedagang tidak mengurus pembayaran ini. Oleh karena itu, memberdayakan lebih keamanan (Anil Kumar 2005). Sebuah sampel dari 25 situs web adalah dipertimbangkan. Survei ini dilakukan untuk 750 pedagang dan 750 pembeli.
KESIMPULAN
Pengembangan dan peningkatan teknologi telah membawa sukses menuju e-bisnis. Dengan demikian, e-bisnis perusahaan harus membangun kepercayaan dan menggunakan keamanan selama transaksi bisnis. Untuk memberikan nilai kepada pelanggan melalui layanan dan barang yang disediakan, Penelitian ini menemukan bahwa perusahaan-perusahaan harus membangun kepercayaan dan keamanan untuk melindungi pelanggan mereka.
Spesifikasi didasarkan pada teoritis dan empiris sumber yang diidentifikasi elemen kunci untuk situs web ritel, termasuk jenis informasi yang disajikan, tingkat fungsionalitas yang disediakan dan derajat keselarasan dengan
persyaratan konsumen. Evaluasi situs web kerangka yang diusulkan dapat memungkinkan perusahaan untuk menilai web mereka Situs dibandingkan dengan situs lain dan untuk mengidentifikasi jalan untuk pengembangan internet yang berorientasi konsumen, inovatif layanan. Kerangka kerja ini dimaksudkan untuk memungkinkan jelas identifikasi pilihan, peluang dan  implikasi mereka untuk pengembangan situs web. Peneliti dengan luas berbagai kepentingan dari transformasi organisasi untuk desain situs web juga dapat memperoleh manfaat dari situs web Evaluasi kerangka dikembangkan pada sebuah perusahaan teoritis dan empiris dasar.

Rabu, 09 Juli 2014

Tugas Membuat Game Processing Softskill


Assalamualaikum Wr.Wb
      perkenalkan kami adalah developer game indie yang sedang belajar, kami akan mengerjakan sebuah tugas softskill membuat game, software yang kami pakai adalah processing.

Nama kelompok :
 Ardian Aruhil Kahfi (51411051)
 Junaidi Akbar (53411886)
 Raffael Eko Prayogo (55411743)

RANCANGAN PROGRAM

1.1.            Rancangan Aplikasi

Dalam aplikasi ini Storyboard menerangkan tentang perjalanan user dalam menggunakan aplikasi adalah sebagai berikut :





Pada Storyboard di atas, ketika user membuka aplikasi Castle Deffense ini, makan tampilan yang akan muncul pertama kali adalah splash screen. Kemudian setelah itu user akan masuk ke halaman menu utama. Pada menu utama terdapat petunjuk untuk memainkan game Castle Deffence dan terdapat satu button untuk memulai permainan. Setelah kita klik button mainkan maka user akan masuk ke halaman game permainan Castle Deffense.

Rancangan Splash Screen


3.3.            Rancangan Menu Utama


     Pada rancangan menu utama Castle Deffense, terdiri dari gambar yang berupa ilustrasi dari suasana permainan. Kemudian di sebelas kanan atas terdapat petunjuk permainan Castle Deffense dan di kanan bawah terdapat button mainkan untuk masuk ke halaman permainan.  

3.3.            Rancangan Halaman Permainan


Pada rancangan halaman permainan, terdiri dari tampilan game Castle Deffense itu sendiri.Pada bagian atas layar akan menampilkan uang, nyawa dan score yang pemain miliki. Dan pada bagian kanan bawah layar terdapat satu button yaitu button start untuk memulai permainan.

3.3.            Implementasi Permainan

·         Cara Bermain Castle Deffence
Buka game Castle Deffence, kemudian yang pertama kali ketika kita membuka game tersebut akan muncul splash screen Castle Deffence. Setelah itu pemain akan memasuki menu utama dari game Castle Deffence yang terdiri dari ilustrasi gambar, petunjuk permainan dan button mainkan untuk masuk ke halaman permainan.
Setelah memasukin halaman permainan, atur strategi untuk meletakkan Pasukan Mario mu di tempat yang strategis untuk membunuh para monster. Untuk awal permainan, pemain diberikan dua buah Pasukan Mario. Jika sudah mengatur posisi dua buah Pasukan Mario, klik button start yang berada di kanan bawah layar untuk memulai permainan.
Pada level awal permainan, monster yang harus dimusnakan adalah 4 ekor.
Nilai uang yang akan pemain dapatkan jika berhasil membunuh satu monster adalah 60. Jika pemain berhasil mengumpulkan uang sebanyak 250 maka pemain bisa menambah satu buah Pasukan Mario, sehingga jumlah Pasukan Mario yang dimilki pemain menjadi 3 dan begitu seterusnya.
Pemain akan game over jika jumlah monster yang lolos dari tembakan peletok gun berjumlah 10 ekor.

·         Layout Program

Tampilan Splash Screen

Tampilan Menu Utama

Tampilan Halaman Permainan

Tampilan Game Over


Coding untuk membuat game "Castle Deffense" :

Tower_defence :

/* OpenProcessing Tweak of *@*http://www.openprocessing.org/sketch/6459*@* */
/* !do not delete the line above, required for linking your tweak if you upload again */
  
  ArrayList towers;
  ArrayList squares;
  int fr = 0;
  int dualtimer = 0;
  PImage path, desa, titlepage, instructions;
  int MONEY = 700;
  int LIVES = 10;
  int SCORE = 0; 
  
  
  
  int cols = 16;
  int rows = 12;
  int gridAccess [][] = new int[cols][rows];
  
  int jmlbuaya = 4;
  int buayaHealth = 100;
  
  int maptestX, maptestY;
  int placeX, placeY;
  
  Button[] b = new Button[192];
  
  boolean play = false;
  boolean end = false;
  boolean intro = false;
  int timer = 0;
  boolean title = true;
  
  PFont file;
  
  void setup () {
    size(640,480);
    cursor(CROSS);
    rectMode(CENTER);
    imageMode(CENTER);
    smooth();
    frameRate(30);
  
    file = loadFont("File-24.vlw");
    textFont(file);
    textAlign(CENTER);
  
    path = loadImage("basicPath1.png");
    desa = loadImage("desa.png");
    titlepage = loadImage("titlepage.png");
    instructions = loadImage("instructions.png");
  
    for(int h = 0; h< 192; h++) {
      b[h] = new Button();
    }
    
    int u = 0;                                            //Sets up grid ID number
      for (int v = 0; v < rows; v++) {
        for (int w = 0; w < cols; w++) {
          gridAccess[w][v] = u;
          u++;
        } 
      }
  
  
    towers = new ArrayList();
    squares = new ArrayList();
  
  } 
  
  
  void draw () {
    
    maptestX = int(map(mouseX,0,640,0,16));
    maptestY = int(map(mouseY,0,480,0,12));
    
    if(title) {
      dualtimer++;
      if(dualtimer <= 120) {
        image(titlepage,width/2,height/2);
      }
      else {
       title = false;
       intro = true;
       dualtimer = 0;
      }
    }
    
    if(intro) {
      image(instructions,width/2,height/2+1);
      fill(100);
      rect(540,460,120,40); // start
      //rect(500,290,120,40); // start
      //rect(500,340,120,40);
      //rect(500,390,120,40);
      fill(255);
      text("Mainkan", 540, 470);
      //text("Mainkan", 500, 300);
      //text("Petunjuk", 500, 350);
      //text("About", 500, 400);
    }
      
    if(!title && !intro) {
      dualtimer++;
      pushMatrix();
      translate(width/2,height/2);
      image(desa,20,0);
      popMatrix();
      image(path,319,239);
    
      int button_number = 0;
      for(int i = 0; i < 12; i++) {
        for(int j = 0; j < 16; j++) {
          b[button_number].button_display((20+(j*40)),(20+(i*40)));
          button_number++;     
        }
      }
    
      fill(100);
      rect(540,460,120,40); // start
      fill(255);
      if(!play || !end) {
        text("START", 540, 470);
      }
      if (play) {
        fill(#278AA8,150);
        rect(540,460,120,40);
      }
      fill(0);
      String score = "SCORE: " + " " + nf(SCORE,8);
      text(score,500,30);
      String money = "UANG: " + " " + nf(MONEY,4) + " rupiah";  
      text(money, 140, 30);
      String lives = "LIVES: " + " " + nf(LIVES,2);
      text(lives, 325, 30);
    }
    
    if(play) {
      fr++;
      if(fr == 25) {
        squares.add(new Square(buayaHealth));
        if(squares.size() < jmlbuaya) {
          fr = 0;
        }
        if(squares.size() == jmlbuaya) {
          fr = 30;
        }
      }
  
      for(int j=0; j<squares.size(); j++) {
        if(squares.size()>0)
          ((Square)squares.get(j)).squareDisplay();
      }
  
      if(squares.size() == 0) {
        timer++;
        if(timer == 120) {
          fr = 0;
          buayaHealth += 35;
          jmlbuaya += 1;
          timer = 0;
        }
      }
    }
  
    if(LIVES == 0) {
      play = false;
      end = true;
    }
  
  
    for(int i=0; i<towers.size(); i++) {
  
      ((Tower)towers.get(i)).tower_display(); 
      ((Tower)towers.get(i)).shoot(); 
    }
  
    if(end) {
      for(int z = 0; z<towers.size(); z++) {
        towers.remove(z);
      }
      lose();
    }
  }
  
  
  void mousePressed() {
    
    if(intro) {
      if((mouseX >= 480 && mouseX <= 600) && (mouseY >= 425 && mouseY <= 465)) {
        intro = false;
        dualtimer = 0;
      }
    }
  
    if(!play && !intro) {
      if((mouseX >= 480 && mouseX <= 600) && (mouseY >= 425 && mouseY <= 465)) {
        if(dualtimer > 1)
          play = true;
      } 
    }
  
    if(!end && !intro && !title) {
      if((mouseX <= 480) || (mouseX> 600) || ((mouseX >= 480 && mouseX <= 600) && mouseY >= 465) || ((mouseX >= 480 && mouseX <= 600) && mouseY <= 425)) {
        if(MONEY >= 250) {
          placeX = current_buttonX(maptestX,maptestY);
          placeY = current_buttonY(maptestX,maptestY);
          towers.add(new Tower(placeX, placeY));
          MONEY -= 250;
        }    
      }
    }
  }
  
  
  int current_buttonX (int x, int y) {
   int xpos = 0;
   int buttonChoice = gridAccess[x][y];
   xpos = b[buttonChoice].rectX;
   return xpos;  
  }
  
  int current_buttonY (int x, int y) {
   int ypos = 0;
   int buttonChoice = gridAccess[x][y];
   ypos = b[buttonChoice].rectY;
   return ypos;  
  }
  
  void lose() {
    fill(255);
    text("GAME OVER", width/2, height/2);
    text("SCORE: " + SCORE, width/2, height/2 + 40);
    keyPressed();
  }
  
  void keyPressed(){
    if (key == ' ') {
    reset();
    }
  }
  
  void reset(){
    intro = true;
    play = false;
    end = false;
    timer = 0;
    fr = 0;
    dualtimer = 0;
    MONEY = 700;
    LIVES = 10;
    SCORE = 0; 
    jmlbuaya = 4;
    buayaHealth = 100;
  }

Amo :

class Amo {
  PVector loc = new PVector();
  Tower t;
  int time = 0;
  PVector center;
  PVector turret;
  float dirX, dirY;
  PImage bullet;

  Amo (float x, float y) {
    loc.x = x;
    loc.y = y;
    turret = new PVector(loc.x, loc.y);
    bullet = loadImage("bullet.png");
  }

  void run(float a, float b) {
    dirX = a;
    dirY = b;
    center = new PVector(dirX, dirY);
    image(bullet,loc.x,loc.y);
    PVector velocity = PVector.sub(center,turret);
    loc.add(new PVector(velocity.x/2, velocity.y/2));
  }
}

Grid :


  class Button {
  
    int rectX = 0;
    int rectY = 0;
    int testX, testY;
    int rectSize = 40; 
    color rectColor,  baseColor;
    color rectHighlight;
    color rectRed;
    color currentColor;
    boolean rectOver = false;
    boolean rectOn = false;
  
    Button() {
      rectHighlight = color(175,100);
      rectRed = color(#278AA8,25);
      baseColor = color(102);
      currentColor = rectRed;
    }
  
    void button_display (int x, int y) {
      rectX = x;
      rectY = y;
      rectColor = color(currentColor);
  
      update(mouseX,mouseY);
      testX = posX(mouseX,mouseY);
      testY = posY(mouseX,mouseY);
  
      if (rectOn) {
        fill (rectRed);
      }
      else if (rectOver) {
        fill(rectHighlight);
      } 
      else {
        fill (rectColor);
      }
      
      stroke(255,10);
      rect(rectX, rectY, rectSize, rectSize);
    }
  
    void update (int x, int y) {
      
      if (overRect(rectX, rectY, rectSize, rectSize)) {
        rectOver = true;
      } 
      else {
        rectOver = false;
      }
      
      if (mousePressed && rectOver) {
        rectOn = true;
      }
      else {
        rectOn = false;
      }
    }
    
   int posX (int x, int y) {
      int a = 0;
      if (mousePressed && rectOn) {
        a = rectX;
      } 
      return a;
    }
    
    int posY (int x, int y) {
      int a = 0;
      if (mousePressed && rectOn) {
        a = rectY;
      } 
      return a;
    }

    boolean overRect (int x, int y, int width, int height) 
    {
      if (mouseX >= x-20 && mouseX <= x+20 && mouseY >= y-20 && mouseY <= y+20) {
        return true;
      } 
      else {
        return false;
      }
    }  
  }

Squere :

class Square {

  float xpos = -5;
  float ypos = 100;
  int speed = 2;
  int health;
  PImage see;

  Square (int HEALTH) {
    health = HEALTH;
    see = loadImage("see_enemy.png");
  }

  void hurt() {
    health -= 3;
  }

  void squareDisplay() {

    if (xpos < 100) {
      xpos += speed;
    }

    else if (ypos < 300 && xpos < 260) {
      ypos += speed;
    }

    else if (xpos < 260) {
      xpos += speed;
    }

    else if (ypos > 100 && ypos < 350 && xpos < 300) {
      ypos -= speed;
    }

    else if (xpos < 380) {
      xpos += speed;
    }

    else if (ypos < 380 && xpos < 450) {
      ypos += speed;
    }

    else if (xpos < 460 && ypos > 370) {
      xpos += speed;
    }

    else if (xpos > 450 && xpos < 470 && ypos <= 380 && ypos > 220) {
      ypos -= speed;
    }

    else
      xpos += speed;

    pushMatrix();
    translate(xpos,ypos);
    image(see,0,0,60,75);
    popMatrix();

    if(xpos > width + 25) {
      LIVES -= 1;
      squares.remove(this);
    }

    if (health < 0) {
      squares.remove(this);
      SCORE += (100 + int(SCORE*.07));
      MONEY += 60;
    }
  }
}

Tower :


class Tower {

  ArrayList amos;
  PVector location = new PVector();
  float r = 40;
  float aX = r;
  float aY = r;
  int radius = 100;
  int Tfr = 0;
  int inReach = 160;
  PImage towerbase, towereye;


  float angle;

  Tower (float x, float y) {
    location.x = x;
    location.y = y;
    amos = new ArrayList(); 
    towerbase = loadImage("towerbase.png");
    towereye = loadImage("towereye.png");
  }

  void tower_display() {
    for (int i=0; i < squares.size(); i++) {
      if(dist(((Square)squares.get(0)).xpos, ((Square)squares.get(0)).ypos,location.x,location.y) < inReach) {        
        angle = atan2((((Square)squares.get(0)).ypos)-location.y, (((Square)squares.get(0)).xpos)-location.x);
        aX = (r * cos(angle)) + location.x;
        aY = (r * sin(angle)) + location.y;
      }
    }

    image(towerbase,location.x,location.y);
    pushMatrix();
    translate(location.x,location.y+1);
    rotate(angle+PI-PI/13);  
    image(towereye,0,0);
    popMatrix();


  }

  void shoot() {

    if(squares.size()>0) {
      if(dist(((Square)squares.get(0)).xpos, ((Square)squares.get(0)).ypos,location.x,location.y) < inReach) {
        Tfr++;
        if(Tfr == 5){
          amos.add(new Amo(location.x,location.y));  
          Tfr = 0;
        }
      }

      for(int k=0; k<amos.size(); k++) {

        image(towerbase,location.x,location.y);
        ((Amo)amos.get(k)).run(aX, aY);
        pushMatrix();
        translate(location.x,location.y+1);
        rotate(angle+PI-PI/13);  
        image(towereye,0,0);
        popMatrix();


        if(dist(((Square)squares.get(0)).xpos, ((Square)squares.get(0)).ypos, ((Amo)amos.get(k)).loc.x, ((Amo)amos.get(k)).loc.y) < 25) {
          amos.remove(k);
          ((Square)squares.get(0)).hurt();
        }
        else if(((Amo)amos.get(k)).loc.x > width || ((Amo)amos.get(k)).loc.x < 0 || ((Amo)amos.get(k)).loc.y > height || ((Amo)amos.get(k)).loc.y < 0) {
          amos.remove(k);
        }
      }
    }
  }
  
  
  
}


Selanjunya untuk melihat game Castle Deffense ini dapat diakses pada link berikut ini :