Rabu, 23 Juli 2014

listing program game


//////////////////////////////


//     Global
Variables     //


//////////////////////////////


private Game
game = new
 Game();


private Question
question = new
 Question();


private Answer[]
answers = new
 Answer[3];


  


// Coordinates for where to draw
the buttons


private static final int[] buttonXCoords = {40, 240, 440};


  


// Limits for generating the
random numbers in the questions


private static final int[] limits = {1, 301};


  


// To store the coordinates of the
mouse when clicked


private float[]
mouseCoordsOnClick = new
 float[2];


  


// Flag for whether we need a new
question for the user


private boolean newQuestion = true;


  


// Flag for whether the game has
been started


private boolean gameStarted = false;


  


// Flag for winning or losing the
game


private int gameWon = 0;


  


// Create new object for the class
Cars


private Cars
cars = new
 Cars();


  


/////////////////////////////


//     
Setup method       //


/////////////////////////////


void setup(){


  frameRate(30);


  size(600, 600);


  smooth();


  


  // Initialise the
Answer objects


  for(int i=0; i<3; i++){


    answers[i]
= new
 Answer();


      


    // Set
each answer box's x-coordinate


    answers[i].setXCoord(buttonXCoords[i]);


  }


}


  


//////////////////////////////


//     Main
draw method     //


//////////////////////////////


void draw(){


    // Draw
background


    fill(255);


    rect(0,
0, width, 250);


      


    // If the
button has been pressed to start the game


    if(gameStarted
== true){


      //
Game lost


      if(gameWon==1){


        fill(0);


        textSize(35);


        text("YOU
LOST!", 215, 200);


      }


      else if(gameWon==2){


        fill(0);


        textSize(35);


        text("YOU
WON!", 215, 200);


      }


      if(gameWon==0){


        //
If a new question is needed (user answered)


        if(newQuestion
== true){


          //
No new questions until the user has answered


          newQuestion
= false;


        


          //
Draw background


          fill(255);


          rect(0,
250, width, 350);


      


          //
New question!


          game.newQuestion();


        }


        cars.moveCars();


        cars.drawCars();


        cars.checkWin();


      }


    }


    else{


      fill(0);


      rect(200,
200, 200, 100);


      fill(255);


      textSize(25);


      text("Start
Game", 235, 255);


    }


}


  


//////////////////////////////


//       
Game class        //


//////////////////////////////


class Game{


  // Constructor


  public void Game(){


      


  }


    


  // Sets up and
initiates the Question and Answer classes,


  // creating a new
question and answer selection for the user


  public void newQuestion(){


    int rand=0;


    // Draw a
new question to the screen


    question.drawQuestion();


  


    // Reset
the 'correct' answer box


    for(int i=0; i<3; i++){


      answers[i].setCorrect(false);


    }


  


    //
Randomly designate an answer box as the 'correct' one


    answers[int(random(0,
3))].setCorrect(true);


    


    for(int i=0; i<3; i++){


      if(answers[i].isCorrect()==true){


        //
Give the 'correct' answer box the value of the answer that was worked out earlier


        answers[i].setValue(question.getAnswer());


      }


      else{


        //
Give the two other answer boxes random numbers in the possible range


        do{


          rand
= int(random(-149, 301));


        } while(rand==question.getAnswer());


        answers[i].setValue(int(random(-149,
301)));


      }


      


      //
Draw the box that the answer sits in


      answers[i].drawButton();


      


      //
Draw the answer text in the box


      answers[i].drawText();


    }


  }


}


  


//////////////////////////////


//     
Question class      //


//////////////////////////////


class Question{


  private int num1;


  private int num2;


  private int operator;


  private int answer;


  private String questionString;


    


  // For use in building
questionString


  private final String[] operators =
{"+", "-", "*", "/"};


    


  // Constructor


  public void Question(){


      


  }


    


  // Used by
drawQuestion to build a question to display to the


  // user and set fields
we'll need later such as the answer


  private void createQuestion(){


    // Create
the two random numbers


    num1
= int(random(limits[0], limits[1]));


    num2
= int(random(limits[0], limits[1]));


      


    // Select
a random operator (multiplication and division aren't used)


    int opSelect = int(random(0, 2));


      


    switch(opSelect){


      case 0:


        answer
= num1 + num2;


        break;


      case 1:


        answer
= num1 - num2;


        break;


      case 2: // Unused


        answer
= num1 * num2;


        break;


      case 3: // Unused


        answer
= num1 / num2;


        break;


    }


    // Build
the question string we want to display to the user


    questionString
= num1 + " "
 + operators[opSelect] + " " + num2 + " = ?";


  }


    


  // Create and display
the question string to the user


  public void drawQuestion(){


    createQuestion();


    fill(0);


    textSize(30);


    text(questionString,
175, 300);


  }


    


  // Used for returning
the correct answer to the random question


  public int getAnswer(){


    return answer;


  }


    


  // Use the mouse
coordinates stored by the mouseclicked event handler


  // and the known
coordinates of the answer boxes to find which answer


  // the user actually
clicked on, returns -1 if no box was clicked.


  public int getAnswerChoice(){


    // For
simplicity


    float x = mouseCoordsOnClick[0];


    float y = mouseCoordsOnClick[1];


      


    if((y>=475)
&& (y<=550)){ // Check if mouse is on the right level
(y-coordinates)


      if((x>=40)
&& (x<=165)){ // Leftmost box


        //print("First
answer\n");


        return 0;


      }


      else if((x>=240) && (x<=365)){ // Middle box


        //print("Second
answer\n");


        return 1;


      }


      else if((x>=440) && (x<=565)){ // Rightmost
box


        //print("Third
answer\n");


        return 2;


      }


      else{


        return -1;


      }


    }


    else{


      return -1;


    }


  }


    


  // Check if the user's
answer pick was the correct one


  public void checkAnswer(){


    int choice = getAnswerChoice();


    // A
return value of -1 indicates that the user


    // did not
click within any of the answer boxes


    if(choice==-1){


      print("Not
a button\n");


      return;


    }


    else if(answers[choice].isCorrect()==true){


      print("Correct
answer\n");


      cars.speedUp();


    }


    else if(answers[0].isCorrect()==false){


      print("Wrong
answer\n");


      cars.slowDown();


    }


    // Set the
flag to start a new question


    newQuestion
= true;


  }


}


  


  


//////////////////////////////


//      
Answer class       //


//////////////////////////////


class Answer{


  // X-coordinate of the
box to draw


  private int xCoord;


  // Value of the answer
to display


  private int value = 0;


  // Whether this answer
box is the 'correct' one


  private boolean correct = false;


    


  // Constructor


  public void Answer(){


        


  }


    


  // Draw the box in
which the answer text sits


  public void drawButton(){


    fill(0);


    rect(xCoord,
475, 125, 75);


  }


    


  // Draw the text onto
the box


  public void drawText(){


    fill(255);


    text(value,
xCoord+35, 525);


  }


    


  // Mutator for the
x-coordinate


  public void setXCoord(int newXCoord){


    xCoord =
newXCoord;


  }


    


  // Mutator for the
answer value


  public void setValue(int newValue){


    value =
newValue;


  }


    


  // Accessor for the
answer value


  public int getValue(){


    return value;


  }


    


  // Mutator for the
'correct answer box' boolean


  public void setCorrect(boolean isCorrect){


    correct =
isCorrect;


  }


    


  // Accessor for the
'correct answer box' boolean


  public boolean isCorrect(){


    return correct;


  }


}


  


//////////////////////////////


//       
Cars Class        //


//////////////////////////////


class Cars{


  float car1speed;


  float car2speed;


  float x1;


  float x2;


  boolean value;


  boolean correct;


  boolean win;


    


  //Initialise Variables


  public Cars(){


    x1 = 0;


    x2 = 0;


  }


    


  public void drawCars(){


    //Draw two
cars


    fill(#FF0000);


    rect(x1,
120, 50, 20);


    fill(#03FF04);


    rect(x2,
180, 50, 20);


     


    // To
indicate that the green car is the player's


    fill(0);


    textSize(13);


    text("Player",
x2+10, 195);


  }


  


  public void moveCars(){


    x1 += 0.4;


    x2 +=
0.25;


  }


      


  public void speedUp(){


    x2 += 15;


  }


    


  public void slowDown(){


    x2 -= 25;


  }


    


  public void checkWin(){


    if(x1>=550){


      gameWon=1;


    }


    else if(x2>=550){


      gameWon=2;


    }


  }


}


////////////////////////////////


//  Mouseclick event
handler  //


////////////////////////////////


void mouseClicked(){


  // Store the mouse's
current coordinates


  // for use in another
method


  if(gameStarted==true){


    mouseCoordsOnClick[0]
= mouseX;


    mouseCoordsOnClick[1]
= mouseY;


    question.checkAnswer();


  }


  else{


    if(mouseX>200
&& mouseX<400 && mouseY>200
&& mouseY<300){


      gameStarted
= true;


    }


  }


}




Selasa, 14 Januari 2014

TUGAS EBOOK SOFTSKILL DESAIN PEMODELAN GRAFIK

Kelompok 8 Kelas 3IA05
Andri Dwi Saputra
Andrie Syahriandy
Annisa Tri Handayani
Dedi
M. Eko Darwanto
Nur Aisyah Setyorini


Ebook Halaman 21-25


Kemampuan Pemodelan Sistem

Kemampuan pemodelan sistem sangat menjanjikan. Gambar 21 dan gambar 22 menunjukkan objek yang dihasilkan oleh sistem. Objek yang ditunjukkan pada gambar 21 adalah objek berbentuk kepala yang dihasilkan dari objek dasar berbentuk bola. Objek dibuat dalam waktu kurang dari satu jam oleh tester yang belum berpengalaman menggunakan sistem. Alat inputan yang digunakan adalah mouse dan keyboard standar. Untuk mengulang membuat objek yang serupa, dapat dilakukan dalam waktu kurang dari tiga puluh menit. Objek yang ditunjukkan pada gambar 22 adalah objek berbentuk relief dinding. Objek ini dihasilkan dari bentuk dasar berupa bidang segiempat. Relief dibentuk dengan menggunakan beberapa tool dengan berbagai bentuk, yang dihasilkan dari gambar. Objek dapat dibuat dalam waktu sekitar 10 menit.




Gambar  22. Objek berbentuk kepala yang dihasilkan oleh sistem. Objek dihasilkan dari objek dasar berbentuk bola











Gambar 23. Objek berbentuk relief pada dinding yang dihasilkan dari bentuk dasar berbentuk bidang segiempat.







Kecepatan Deformasi

Kecepatan deformasi yang dihasilkan sangat mendukung proses pemodelan yang real-time. Kecepatan deformasi diukur dalam kondisi jumlah vertex objek yang berada dalam ROI berbeda-beda. Tabel 1 menunjukkan kecepatan deformasi berdasarkan jumlah vertex yang berada di dalam ROI. Kecepatan deformasi diukur pada lingkungan notebook dengan sistem operasi Microsoft Windows XP, proccessor Pentium DualCore 2.0GHz, RAM 1GB, dan GPU Intel GMA4500 dengan memori share.

Tabel 1. Kecepatan proses deformasi berdasarkan jumlah vertex objek yang berada di dalam ROI.



Dengan kecepatan yang didapatkan, seperti yang terlihat pada tabel 1, proses sculpting menjadi bisa dilakukan secara benar-benar real-time. Pada jumlah vertex lebih kecil dari 5000, kecepatan deformasi bahkan mecapai lebih besar dari 60 kali/detik, yang merupakan frekuensi standar refresh rate monitor LCD. Pada jumlah vertex sebesar 50000, kecepatan turun sampai mencapai 4.5 kali/detik. 




BAB III
TOOLS

Ultra Fractal adalah cara mudah dan fleksibel untuk membuat seni fraktal. Ketika siap untuk lebih banyak daya, Ultra Fractal adalah paket profesional mengagumkan yang mendukung animasi, fraktal sewenang-wenang dalam dan resolusi sangat tinggi.
Gambar Fractal diciptakan dengan berulang kali menghitung rumus fraktal. Meskipun formula ini adalah murni matematika, gambar-gambar yang dihasilkan seringkali sangat indah dan kompleks.
Ultra Fractal pergi jauh ke arah menyembunyikan hal-hal matematika. Sebaliknya, berfokus pada fraktal sendiri, cara mereka digabungkan dan bagaimana mereka berwarna. Hal ini memungkinkan untuk mengubah fraktal menjadi karya seni sejati.
Sangat mudah dan menyenangkan untuk mulai menggunakan Ultra Fractal dengan tutorial built-in. Dimulai dengan dasar-dasar, akan segera belajar cara membuat fraktal sendiri, mengubah warna, menambahkan lapisan, menggunakan masker dan bahkan membuat animasi.
Dalam Ultra Fractal 5, formula sekarang dapat menggunakan plug-in yang memungkinkan dengan mudah mencampur dan fitur pertandingan. Dengan menggabungkan berbagai plug-in, kemungkinan benar-benar menjadi tak terbatas. Untuk informasi lebih lanjut, lihat Plug-in dalam file bantuan Ultra Fractal.



BAB IV
CONTOH PENGGUNAAN TOOLS

A.  Contoh Membuat Citra Fraktal
Pertama kali membuka Ultra Fractal, default Mandelbrot set ditampilkan. Karena akan membuat fraktal baru dari awal, tutuplah fraktal tersebut. Pada menu bar klik File - Close untuk menutup jendela fraktal.




Gambar 24. Tampilan awal Ultra Fractal.

Sekarang, ruang kerja kosong kecuali deretan Tool Windows pada sisi kanan layar. Tool Windows tersebut digunakan untuk memasukkan dan mengedit informasi yang menciptakan gambar fraktal pada layar . Tool Windows adalah pusat informasi program dan itu akan tetap terbuka  setiap saat.
Langkah pertama dalam menciptakan fraktal baru adalah memilih Fractal Formula yang menentukan struktur fraktal yang akan bekerja.
Untuk membuka jendela fraktal baru, pada menu bar klik File - New - Fractal.
Ini akan membuka “Select Fractal Formula” Browser. Panel kiri menunjukkan tiga folder (Compatibility, My Formulas dan Public) dan sebuah file bernama "Standard.ufm". Ketika klik Standard.ufm, konten tersebut berisi daftar formula-formula, yang muncul di sisi kanan jendela browser. Masing-masing formula muncul sebagai thumbnail yang menunjukkan tampilan gambar yang akan menghasilkan formula.



                                                     Gambar 25. File - New - Fractal.

Gambar 26. Jendela Browser.

Pilihlah salah satu gambarnya, pada contoh ini gambar yang dipilih yaitu Slope (Newton). Nah, terlihat di jendela bawahnya terdapat 2 jendela yaitu di sisi kiri jendela merupakan suatu algoritma dari gambar yang dipilih, sedangkan di sisi kanan jendela tampak gambar yang dipilih. Lalu klik Open.
Mengubah Formula Parameter
Lihatlah Tool Windows pada sisi kanan layar dan klik pada tab Formula yang paling atas (Layer Properties) window. Bawah formula nama di atas (dalam hal ini, Newton) akan melihat  pengaturan (Drawing Method, Periodicity Checking, Additional Precision dan Maximum Iterations) yang muncul untuk setiap fraktal formula. Khusus parameter-parameter untuk fakta formula ini tercantum di bawah garis pemisah (dalam hal ini : Exponent (Re), Exponent (Im), Root (Re), Root (Im) dan Bailout value).


Sabtu, 30 November 2013

Digital Sculptin



Digital Sculpting ini menggunakan software Blender , Blender ini digunakan untuk membuat animasi-animasi 3D , disini saya akan membuat sebuah cangkir di dalam Blender.

Langkah pertama kita membuka aplikasi blendernya dan langsung membuat didalamnya , tampilan awal pada aplikasi ini , seperti gambar dibawah ini ;

Kemudian untuk membuat awalnya kita masukkan cylinder , ini ada didalam Add – Mesh – dan pilih Cylinder , disini kita ganti ukuran yang awalnya 32 menjadi 17 di dalam Vertices

Kemudian kita klik object mode dan kita pilih edit mode , lalu kita ke pengaturan dan kita pilih solidify, disini untuk memberikan ketebalan cap atasnya , kita ganti menjadi 0,1. Selanjutnya kita pilih view untuk mengubah tampilannya, kita pilih front. Tampilannya seperti dibawah ini ;

Selanjutnya kita membuat jarak untuk tempat gagang cangkirnya , caranya ctrl+r dan kita mainkan rool yang ada dimouse, lalu klik sembarang , untuk membuat gagang cangkirnya kita klik 2 untuk tempatnya dan lalu pilih tombol E untuk menariknya , bisa dilihat seperti gambar dibawah ini ;
Kemudian kita pencet ctrl+r untuk mengubah siku gagang ata +45 dan bawah -45 , lalu shift+klik kanan untuk menutup gagangnya dan lalu kita masuk ke pengaturan ke subdivision suface untuk membuat cupnya dan ganti menjadi 3 semua , hasilnya seperti dibawah ini :


Ini adalah digital scuplting pada sebuah cangkir .

Digital Sculpting ini menggunakan software Blender , Blender ini digunakan untuk membuat animasi-animasi 3D , disini saya akan membuat sebuah cangkir di dalam Blender.
Add caption
Langkah pertama kita membuka aplikasi blendernya dan langsung membuat didalamnya , tampilan awal pada aplikasi ini , seperti gambar dibawah ini ;
Kemudian untuk membuat awalnya kita masukkan cylinder , ini ada didalam Add – Mesh – dan pilih Cylinder , disini kita ganti ukuran yang awalnya 32 menjadi 17 di dalam Vertices
Kemudian kita klik object mode dan kita pilih edit mode , lalu kita ke pengaturan dan kita pilih solidify, disini untuk memberikan ketebalan cap atasnya , kita ganti menjadi 0,1. Selanjutnya kita pilih view untuk mengubah tampilannya, kita pilih front. Tampilannya seperti dibawah ini ;
Selanjutnya kita membuat jarak untuk tempat gagang cangkirnya , caranya ctrl+r dan kita mainkan rool yang ada dimouse, lalu klik sembarang , untuk membuat gagang cangkirnya kita klik 2 untuk tempatnya dan lalu pilih tombol E untuk menariknya , bisa dilihat seperti gambar dibawah ini ;
Kemudian kita pencet ctrl+r untuk mengubah siku gagang ata +45 dan bawah -45 , lalu shift+klik kanan untuk menutup gagangnya dan lalu kita masuk ke pengaturan ke subdivision suface untuk membuat cupnya dan ganti menjadi 3 semua , hasilnya seperti dibawah ini :

Ini adalah digital scuplting pada sebuah cangkir .


Minggu, 10 November 2013

Digital Sculpting 2

Digital Sculpting
Digital sculpting, Virtual sculpting atau sering disebut computer sculpting merupakan suatu pemodelan geometrik. Bill dan Lodha (Bill and Lodha, 1994) memberikan definisi  virtual sculpting sebagai pemodelan geometrik yang interaktif dimana tujuan dan cara-cara sculpture tradisional diemulasikan. Tujuan yang dimaksud adalah mendesain objek 3D yang  free-form. Sedangkan cara-cara yang dimaksud adalah manipulasi secara langsung terhadap bahan dengan menggunakan tangan atau manipulasi secara tidak langsung dengan menggunakan peralatan sculpting (sculpting tools). Pada  Virtual sculpting, ada beberapa hal yang harus dipenuhi. Yang pertama, representasi objek yang digunakan haruslah memiliki karakteristik yang semirip-miripnya dengan bahan-bahan pada kehidupan nyata, dan bisa membentuk bentuk yang sebebas-bebasnya. Kedua, representasi objek yang digunakan memungkinkan objek dapat dirender dengan cepat, agar tidak menjadi hambatan dalam proses sculpting yang real-time. Ketiga, desain dan mekanisme kerja  virtual sculpting tools (untuk selanjutnya,  virtual sculpting  tools akan disebut dengan  tool) harus seintuitif mungkin dan dapat digunakan untukmelakukan manipulasi bentuk serumit mungkin. Keempat, komputasi yang dilakukan untuk proses  sculpting tidak terlalu komplek, sehingga proses sculpting bisa dilakukan secara real-time. Beberapa sistem  virtual sculpting telah dikembangkan sebelumnya. Sederberg dan Parry mengenalkan  Free-Form Deformation (FFD) untuk melakukan solid modeling (Sederberg and Parry, 1986). Pada FFD, penggunaan  tool sulit diterapkan karena manipulasi objeknya bersifat tidak langsung. Hsu, Huges, dan Kaufman mengenalkan  Direct Manipulation Free-Form Deformation (DMFFD), yang merupakan pengembangan dari FFD (Hsu, Huges, dan Kaufman, 1992). Pada DMFFD, penerapan  tool menjadi lebih mudah. Hsu menggunakan  tool sederhana untuk melakukan operasi pushing dan pulling pada vertex-vertex yang dipilih. Hilton dan Egbert (Hilton dan Egbert, 1994) mengenalkan tool berbasis vector field. Collision detection antara  tool dan objek ditentukan dengan melihat apakah titik-titik objek berada didalam wilayah  tool. Disini bentuk-bentuk  tool yang dapat diterapkan terbatas pada bentuk-bentuk sederhana. Bill dan Lodha (Bill and Lodha, 1994) pada sistem yang dinamai SAM-IAM, memanfaatkan persamaan superkudratik untuk mendefinisikan  tool, yang digunakan untuk melakukan pemodelan pada polygon mesh.
Sculpting Technology
Suatu sistem  virtual sculpting telah dibangun dengan menggunakan metode yang diajukan. Dengan model  tool yang diajukan,  tool dapat dibentuk dalam bentuk-bentuk yang rumit dan dapat dengan mudah dibuat dari gambar sketsa. Kemampuan pemodelan sistem sangat baik. Pemodelan dapat dilakukan secara intuitif dan real-time. Dengan menggunakan sistem yang dibangun, pengguna yang belum berpengalaman dapat menciptakan model yang cukup rumit dalam waktu yang cukup singkat. Kecepatan deformasi yang dihasilkan oleh metode yang diajukan sangat baik. Kecepatan yang dihasilkan memungkinkan pengguna dapat melakukan pemodelan secara  real-time dengan benar-benar nyaman.

Sumber : http://digilib.its.ac.id/public/ITS-Master-15742-Paper-489023.pdf