Rabu, 07 Desember 2016

ANIMASI BERGERAK (UAS GRAFIKA KOMPUTER)

HASIL KERJA KERAS SELAMA 2 HARI UNTUK MEMBUAT CODE DIBAWA INI

BY : YULENZ



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gambarpemandangan;

import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.applet.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

class GambarPemandangan extends JApplet{
public static void main (String [] args){
JFrame frame= new JFrame ();
frame.setTitle("yulenz | 14110322 | grafika komputer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet= new GambarPemandangan ();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
public void init () {  
JPanel panel4 = new Panel2D ();
getContentPane().add(panel4);
}
class Panel2D extends JPanel {
int awal = 0;
int mulai = 0; 
public Panel2D (){
setPreferredSize(new Dimension(1010, 570));
setBackground(Color.blue); //BACKGROUND
}
public void paintComponent (Graphics g) {
super.paintComponent (g);
Graphics2D g2= (Graphics2D) g; 
//Gambar Gunung, jalan ke gunung dan matahari
g.setColor(Color.gray); //latar
g.fillRect(0, 320,1020 ,300 );
g.setColor(Color.blue); //langit
g.fillRect(0, 0,1020 ,320 ); //langit
g.setColor(Color.orange); //matahari
g.fillOval(490,120,170 ,170 ); //matahari

//========= GUNUNG LINGKARAN =============
g.setColor(Color.darkGray); //gunung
g.fillArc(200, 150, 400, 400, 0, 180); //gunung
g.fillArc(0, 175, 600, 350, 90,90 ); //gunung
g.fillArc(550, 75, 500, 550, 0, 180); //gunung

//Gambar Tanaman
g.setColor(Color.green);
g.fillOval(0, 500, 30,30);
g.fillOval(25, 500, 30,30);
g.fillOval(50, 500, 30,30);
g.fillOval(15, 480, 30,30);
g.fillOval(32, 480, 30,30);
g.fillOval(90, 500, 30,30);
g.fillOval(115, 500, 30,30);
g.fillOval(140, 500, 30,30);
g.fillOval(105, 480, 30,30);
g.fillOval(122, 480, 30,30);
g.fillOval(180, 500, 30,30);
g.fillOval(205, 500, 30,30);
g.fillOval(230, 500, 30,30);
g.fillOval(195, 480, 30,30);
g.fillOval(212, 480, 30,30);
g.fillOval(270, 500, 30,30);
g.fillOval(295, 500, 30,30);
g.fillOval(320, 500, 30,30);
g.fillOval(285, 480, 30,30);
g.fillOval(302, 480, 30,30);
g.fillOval(510, 500, 30,30);
g.fillOval(535, 500, 30,30);
g.fillOval(560, 500, 30,30);
g.fillOval(525, 480, 30,30);
g.fillOval(542, 480, 30,30);
g.fillOval(600, 500, 30,30);
g.fillOval(625, 500, 30,30);
g.fillOval(650, 500, 30,30);
g.fillOval(615, 480, 30,30);
g.fillOval(632, 480, 30,30);
g.fillOval(690, 500, 30,30);
g.fillOval(715, 500, 30,30);
g.fillOval(740, 500, 30,30);
g.fillOval(705, 480, 30,30);
g.fillOval(722, 480, 30,30);
g.fillOval(780, 500, 30,30);
g.fillOval(805, 500, 30,30);
g.fillOval(830, 500, 30,30);
g.fillOval(795, 480, 30,30);
g.fillOval(812, 480, 30,30);
g.fillOval(870, 500, 30,30);
g.fillOval(895, 500, 30,30);
g.fillOval(920, 500, 30,30);
g.fillOval(885, 480, 30,30);
g.fillOval(902, 480, 30,30);
g.fillOval(960, 500, 30,30);
g.fillOval(985, 500, 30,30);
g.fillOval(1010, 500, 30,30);
g.fillOval(975, 480, 30,30);
g.fillOval(992, 480, 30,30); 
//pohon
g.setColor(Color.green);
g.fillOval(600,220, 30,40);
g.fillOval(590, 240, 30,30);
g.fillOval(610, 240, 30,30);
g.fillRect(610,260,9 ,60 ); 
g.setColor(Color.green);
g.fillOval(660,220, 30,40);
g.fillOval(650, 240, 30,30);
g.fillOval(670, 240, 30,30);
g.fillRect(670,260,9 ,60 ); 
//Membuat jalan
g.setColor(Color.black);
g.fillRect(0, 300, 1020, 50); 
//Membuat garis jalan
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.white);
float[] dash = {20.0f};
BasicStroke strok = new BasicStroke(3.0f, BasicStroke.CAP_SQUARE,
BasicStroke.JOIN_MITER, 1.0f, dash, 0.0f);
g2d.setStroke(strok);
g2d.draw(new Line2D.Double(10, 320, 1000, 320));

//pohon
g.setColor(Color.green);
g.fillOval(720,250, 30,40);
g.fillOval(710, 270, 30,30);
g.fillOval(730, 270, 30,30);
g.fillRect(730,290,9 ,60 ); 
g.setColor(Color.green);
g.fillOval(780,250, 30,40);
g.fillOval(770, 270, 30,30);
g.fillOval(790, 270, 30,30);
g.fillRect(790,290,9 ,60 ); 

//========== mobil
g.setColor(Color.red);
g.fillRect(205,305,100,30 ); //badan bawah
g.fillOval(207,278,104,45); //badan atas 
g.setColor(Color.blue);
g.fillRect(210,305,100,30 ); //badan bawah
g.fillOval(210,280,100,45); //badan atas
g.fillArc (180,298,60,70,0,180);// atas ban
g.fillArc (285,298,60,70,0,180);// atas ban
g.setColor(Color.yellow);
g.fillArc (318,301,23,23,0,80);// atas ban 
g.setColor(Color.black); //ban
g.fillOval(198, 313, 32,32); //ban
g.fillOval(298, 313, 32,32); //ban
g.setColor(Color.white); //ban
g.fillOval(204, 319, 20,20); //ban
g.fillOval(304, 319, 20,20); //ban 
g.setColor(Color.red);
g.fillArc (230,285,70,40,0,90);// atas ban
g.setColor(Color.black);
g.fillArc (234,286,64,36,0,90);// atas ban 
g.setColor(Color.red);
g.fillArc (220,285,70,40,90,90);// atas ban
g.setColor(Color.black);
g.fillArc (223,286,68,36,90,90);// atas ban
g.setColor(Color.red);
g.fillRect(258,286,10,18 ); 


//==============Gambar Awan
g.setColor(Color.white);
g.fillOval(30+mulai,70,90,40);
g.fillOval(70+mulai,70,90,40);
g.fillOval(40+mulai, 60, 50,50);
g.fillOval(90+mulai, 60, 50,50);
g.fillOval(210+awal,90,90,40);
g.fillOval(250+awal,90,90,40);
g.fillOval(220+awal, 80, 50,50);
g.fillOval(270+awal, 80, 50,50);
g.fillOval(820-awal,50,90,40);
g.fillOval(860-awal,50,90,40);
g.fillOval(830-awal,40, 50,50);
g.fillOval(880-awal,40, 50,50);

//bendera
g.setColor(Color.red);
g.fillRect(100,120,100 ,35 );
g.setColor(Color.white);
g.fillRect(100,150,100 ,35 );
g.fillRect(100,150,5 ,150 ); 

//:
g.fillRect(880,542,3,3 ); //atas
g.fillRect(880,550,3,3 ); //bawah 
//S
g.fillRect(890,548,3,8 ); //berdiri
g.fillRect(899,540,3,8 ); //berdiri
g.fillRect(890,540,12,3 ); //atas
g.fillRect(890,546,12,3 );//tengah
g.fillRect(890,553,12,3 );//bawah
//A
g.fillRect(910,540,3,15 ); // berdiri
g.fillRect(920,540,3,15 ); //berdiri
g.fillRect(910,540,10,3 ); //atas
g.fillRect(910,547,10,3 );//tengah
g.fillRect(910,553,12,3 );//bawah 
}
}
}

HASI OUTPUT



2. ANIMASI TEKS BERJALAN 

CODENYA


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package animasisederhana;


import java.awt.*;
import java.awt.event.*;
class animasiSederhana extends Frame implements Runnable {
Thread animation;
// Mengatur waktu delay
int frameDelay = 100;
// Objek yang akan ditampilkan
String frames[] = {"yulenz","amarzel","taek","nim","14110322","semester","lima","kulia","di stikom artha buana"};

// Menentukan variabel yang diperlukan
int numFrames = frames.length;
int currentFrame = 0;
long lastDisplay = 0;
int screenWidth = 400; //lebar layar
int screenHeight = 500; //tinggi layar
public static void main(String args[]) {
animasiSederhana app = new animasiSederhana();
}
public animasiSederhana() {
super("Animasi Sederhana");
setup();
setSize(screenWidth,screenHeight);
addWindowListener(new WindowEventHandler());
show();
animation = new Thread(this);
animation.start();
}
void setup() {
setupMenuBar();
setFont(new Font("default",Font.BOLD,25)); //mengatur font
}
void setupMenuBar() {
MenuBar menuBar = new MenuBar();
Menu fileMenu = new Menu("File");
MenuItem fileExit = new MenuItem("Tutup");
fileExit.addActionListener(new MenuItemHandler());
fileMenu.add(fileExit);
menuBar.add(fileMenu);
setMenuBar(menuBar);
}
public void paint(Graphics g) {
g.drawString(frames[currentFrame],80,80); //membuat frame
}
public void run() {



do {
long time = System.currentTimeMillis();
if(time - lastDisplay > frameDelay) {
repaint();
try {
Thread.sleep(frameDelay); //berhenti selama frameDelay=100
}catch(InterruptedException ex){
}
++currentFrame;
currentFrame %= numFrames;
lastDisplay = time;
}
} while (true);
}
class MenuItemHandler implements ActionListener, ItemListener {
public void actionPerformed(ActionEvent ev){
String s=ev.getActionCommand();
if(s=="Exit"){
System.exit(0);
}
}
public void itemStateChanged(ItemEvent e){
}
}
//Kelas yang digunakan agar tombol close pada frame bisa berfungsi
class WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}

}

HASI OUTPUT TEKS BERJALAN

 
      

Kamis, 24 November 2016

TUGAS GRAFIKA KOMPUTER 3 ( POLYLINE)

PolyLine...
Coding dibawah ini membentuk hasil seperti gambar dibawahnya...

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author yulenz
 */
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class polyline extends JPanel {

  public void paint(Graphics g) {
      int[] xs = {25, 75, 125, 85, 125, 75, 25, 65, 25};
      int[] ys = {50, 90, 50, 100, 150, 110, 150, 100, 50};
      g.drawPolyline(xs, ys, 9);
      }
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new polyline());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200,200);
    frame.setVisible(true);
  }
}


Apabila ......Polyline dengan jumlah 9 
Pada coding ---->   g.drawPolyline(xs, ys, 9);
maka hasilnya sperti gambar berikut...

 












Apabila ......Polyline dengan jumlah 8 
Pada coding ---->   g.drawPolyline(xs, ys, 8);
maka hasilnya sperti gambar berikut...

ini membuktikan garis tidak terhubung (putus)
















Apabila ......Polyline dengan jumlah 5 
Pada coding ---->   g.drawPolyline(xs, ys, 5);
maka hasilnya sperti gambar berikut...

ini membuktikan garis tidak terhubung (putus)














Apabila ......Polyline dengan jumlah lebih (>9)
Pada coding ---->   g.drawPolyline(xs, ys,12);
maka hasilnya sperti gambar adalah kosong
mengapa demikian karena jumlah titik x dan y yang terbentuk tidak sama dengan 12 (>9)

Mengapa sampai terjadi demikian
dari gambar dengan jumlah titik 9 maka dihasilakn gambar yang utuh dimana saling terhubung dan apabila salah satu titik dihilangkan saja atau jumlah titik nol maka ada bagian atau sisi-sisi yang tidak terhubung sehingga tidak membentukPolyLine....

Membuat lingkaran { bentuk smile}
Membuat lingkaran seperti gambar dibawah ini.......
dengan menggunakan Java Netbeans....
















berikut kodingnya.....
ngga gampang bro butuh konsentrasi tinggi

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package smile;

/**
 *
 * @author yulenz
 */
 import java.awt.*;
 class smile extends Panel{
    smile(){
    setBackground(new Color(227, 227, 227));// warna background
    }
    public void paint(Graphics A){
    A.setColor(Color.white);
    A.drawArc(229,29, 152, 151, 0, 360);//draw lingkaran kepala
    A.setColor(new Color(237, 202, 39));
    A.fillArc(230,30, 150, 150, 0, 360);//warnai lingkaran kepala
    A.setColor(Color.blue);
    A.fillArc(265,70, 20, 40, 0, 360);//mata biru kiri
    A.setColor(Color.blue);
    A.fillArc(325,70, 20, 40, 0, 360);//mata biru kanan
    A.setColor(Color.red);
    A.fillArc(325,75, 20, 30, 0, 360);//mata merah kanan
    A.setColor(Color.red);
    A.fillArc(265,75, 20, 30, 0, 360);//mata merah kiri
    A.setColor(Color.black);
    A.fillArc(275,100, 65, 60, 0, -180);//fill mulut warna hitam
    }   
    public static void main(String[] args) {
        // TODO code application logic here
        Frame f1 = new Frame();
        smile H = new smile();
        f1.add(H);
        f1.setSize(600, 300);
        f1.setVisible(true);
    }
}

Sedikit penjelasan untuk koding diatas
Penjelasannya 
 Super ("Lingkaran") nama untuk form projectnya 
setSize (600,400) Ukuran tampilan formnya 
G.setColor(color.blue) merupakan membuat warna bulatannya menjadi biru
g.drawoval (untuk membuat object yang nntinya menjadi lingkaran atau berbentuk oval


Selasa, 08 November 2016

METODE PARSING (TOP DOWN AND BOTTOM UP)

1. top-down parsing?
Mengapa pada proses top down parsing, kita harus menghilangkan recursive kiri, karena Compiler secara khusus menggunakan metode top-down parsing. Karena itu, jika dalam sebuah grammar terdapat adanya rekursif kiri, maka compiler akan melakukan infinite loop pada grammar tersebut.
Left factoring diawali karena adanya sebuah masalah yang dikenal dengan nama First/First Conflict. First/First Conflict adalah sebuah kondisi dimana grammar tersebut memiliki 2 variabel yang sama yang menjadi First dari sebuah variabel. Contoh :
S -> E | E T
Untuk menyelesaikan First/First Conflict tersebut dilakukanlah proses left factoring sehingga dapat menjadi :
S -> E (epsilon | T)
S -> S'(epsilon | T)
dimana
S’ -> E
 Perbedaan top down parsing dengan bottom up parsing
top down parsing adalah langkah dalam membentuk/membangun sebuah parse tree berdasarkan input dimulai dari root dan membuat nodes untuk parse tree secara preorder(depth first).
Bentuk umum dari top down parsing adalah recursive descent parsing.
Sebuah recursive descent parsing adalah top down parsing technique yang melaksanakan serangkaian prosedur rekursif untuk memproses input, yang melibatkan backtracking (berarti pemindaian input berulang-ulang).
Backtracking memakan waktu dan karena itu, tidak efisien. Itu sebabnya kasus khusus dari parsing top down dikembangkan, disebut predictive parsing, di mana tidak ada backtracking diperlukan.
Sebuah dilema dapat terjadi jika ada left recursion grammar. Bahkan dengan backtracking, Anda dapat menemukan parser untuk pergi ke infinite loop.
contoh infinite loop pada top down parsing:
Sebuah konteks tata bahasa bebas dikatakan dibiarkan rekursif jika memiliki derivasi dari bentuk A Aα. Sebuah tata bahasa kiri-rekursif dapat menyebabkan loop tak terbatas dalam parser top-down
S → Aa
A → Sb
→ b
S Aa Sba Aaba Sbaba …
Ada algoritma untuk menghapus kiri rekursi dari konteks tata bahasa bebas
bottom up parsing adalah sebuah langkah parsing menggunakan langkah shift-reduce parsingShift reduce parsing bekerja berdasarkan namanya, “Shift” dan “Reduce” sehingga setiap kali stack memegang simbol-simbol yang tidak dapat dikurangi lagi, kita menggeser masukan lain, dan ketika itu cocok, kita mengurangi.
contoh:
urutan yang di baca terlebih dahulu





Menurut kelompok kami bottom-up parsing lebih baik untuk digunakan karena recursive-descent parsing mencoba untuk berhipotesis struktur umum dari string input, yang berarti banyak trial-and-error terjadi sebelum akhir string tercapai. Hal ini membuat mereka kurang efisien daripada bottom-up parsing.
Selain itu Top-down parsing bisa lambat. Parser recursive-keturunan mungkin memerlukan waktu eksponensial untuk menyelesaikan pekerjaan mereka. Itu akan menempatkan keterbatasan parah pada skalabilitas dari sebuah kompiler yang menggunakan parser top-down dan top down parsing ketika di aplikasikan ke mesin, tidak akan bisa menyelesaikan sebagian besar kasus-kasus umum, seperti left recursive karena akan terjadi looping terus menerus.
Kelebihan top down parsing hanya lebih “intuitif,” sehingga mereka lebih mudah untuk debug dan memelihara, dan lebih mudah dipelajari dan ditulis ke dalam tools mesin. Namun secara performa dan efisiensi bottom up parsing lebih baik dibandingkan dengan top down parsing.
2. Bottom up parsing
Bottom up merupakan salah satu metode yang digunakan untuk melakukan parsing. Operasi yang terdapat pada bottom up parser adalah shift dan reduce, sehingga seringkali bottom up parser disebut dengan shift-reduce parser. Pada setiap tahapan reduksi, substring yang berada disisi kanan dari sebuah production rule (RHS) digantikan dengan symbol dari pada LHS. Untuk membuat sebuah parsing table maka dibutuhkan DFA dari grammar tersebut. Ada beberapa jenis parsing table, antara lain LR(0), LR(1), dan SLR.
Bottom-up Versus Top-down
The bottom-up name comes from the concept of a parse tree, in which the most detailed parts are at the bottom of the (upside-down) tree, and larger structures composed from them are in successively higher layers, until at the top or "root" of the tree a single unit describes the entire input stream. A bottom-up parse discovers and processes that tree starting from the bottom left end, and incrementally works its way upwards and rightwards.[1] A parser may act on the structure hierarchy's low, mid, and highest levels without ever creating an actual data tree; the tree is then merely implicit in the parser's actions. Bottom-up parsing lazily waits until it has scanned and parsed all parts of some construct before committing to what the combined construct is.
Description: https://upload.wikimedia.org/wikipedia/en/thumb/f/fc/Parse_Tree_Example.svg/263px-Parse_Tree_Example.svg.png
Typical parse tree for
A = B + C*2;  D = 1

Bottom-up parse steps

Top-down parse steps
The opposite of this are top-down parsing methods, in which the input's overall structure is decided (or guessed at) first, before dealing with mid-level parts, leaving the lowest-level small details to last. A top-down parser discovers and processes the hierarchical tree starting from the top, and incrementally works its way downwards and rightwards. Top-down parsing eagerly decides what a construct is much earlier, when it has only scanned the leftmost symbol of that construct and has not yet parsed any of its parts. Left cornerparsing is a hybrid method which works bottom-up along the left edges of each subtree, and top-down on the rest of the parse tree.
If a language grammar has multiple rules that may start with the same leftmost symbols but have different endings, then that grammar can be efficiently handled by a deterministicbottom-up parse but cannot be handled top-down without guesswork and backtracking. So bottom-up parsers handle a somewhat larger range of computer language grammars than do deterministic top-down parsers.

SUMBER : 
http://cs.stackexchange.com/questions/9963/why-is-left-recursion-bad
http://en.wikipedia.org/wiki/LL_parser#FIRST.2FFIRST_Conflict
http://en.wikipedia.org/wiki/Left_recursion




Jumat, 14 Oktober 2016

CODING UNNTUK MEMBUAT RUMAH ENGGUNAKAN JAVA NEETBEANS ( GRAFIKA KOMPUTER)


hahahaha ini contoh kecil tentang koding,,, untuk membuat RUMAH menggunakan JAVA NEETBEANS
coba kalian lihat dan  buktikan di laptop kalian

SELAMAT MENCOBA 


package rumah.grafika.komputer;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 *
 * @author yulenz
 */
public class RumahGrafikaKomputer extends JPanel{

    /**
     * @param args the command line arguments
     */
   public void paint(Graphics g) {


{       //g.fillRect(100, 100, 10, 10); // membuat titik (10x10)
        //g.setColor(Color.red);
        //g.fillRect(100, 120, 10, 10); // membuat titik (1x1)
}
g.setColor(Color.red);
int yulenz = 0;
    while (yulenz <=100){
        g.fillRect(300 , 180+yulenz, 4, 4);
        yulenz++; }
    g.setColor(Color.blue);
int yulenz1 = 0;
    while (yulenz1 <=200){
        g.fillRect(300+yulenz1 , 280, 4, 4);
       yulenz1++; }
    g.setColor(Color.red);
int yulenz2 = 0;
    while (yulenz2 <=200){
        g.fillRect(300+yulenz2,180, 4, 4);
        yulenz2++; }  
int yulenz3 = 0;
    while (yulenz3 <=100){
        g.fillRect(500 , 180+yulenz3, 4, 4);
        yulenz3++; }  
    g.setColor(Color.black);
int yulenz4 = 0;
    while (yulenz4 <=100){
        g.fillRect(400+yulenz4 , 80+yulenz4, 4, 4);
        g.fillRect(400-yulenz4 , 80+yulenz4, 4, 4);
        yulenz4++; }
int yulenz5 = 0;
    while (yulenz5 <=50){
        g.fillRect(400 , 230+yulenz5, 4, 4);
        yulenz5++; }
    int yulenz6 = 0;
    while (yulenz6 <=50){
        g.fillRect(425 , 230+yulenz6, 4, 4);
        yulenz6++; }
int yulenz7 = 0;
    while (yulenz7 <=25){
        g.fillRect(399+yulenz7,230, 4, 4);
        yulenz7++; }
int yulenz8 = 0;
    while (yulenz8 <=20){
        g.fillRect(350 , 230+yulenz8, 4, 4);
       yulenz8++; }
    int yulenz9 = 0;
    while (yulenz9 <=20){
        g.fillRect(375 , 230+yulenz9, 4, 4);
        yulenz9++; }
int yulenz10 = 0;
    while (yulenz10 <=25){
        g.fillRect(350+yulenz10,230, 4, 4);
        yulenz10++; }
i nt yulenz11 = 0;
    while (yulenz11 <=25){
        g.fillRect(350+yulenz11,250, 4, 4);
        yulenz11++; } 
}
    public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new RumahGrafikaKomputer());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800,800);
    frame.setVisible(true);
  }
}

INI HASIL OUTPUT NYA ( RUN)

COBA ANDA BUKTIKAN