The Last Airbender - Aang

acmilan

Rabu, 02 Juni 2010

PEMBUATAN APLIKASI GAME CATUR

Catur merupakan sebuah permainan yang sudah tidak asing lagi bagi kita semua. Kita sudah mengetahui bagaimana cara bermain catur. Permainan catur pada masa sekarang ini tidak hanya dapat kita mainkan dengan menggunakan papan catur, melainkan juga kita dapat memainkannya dengan menggunakan komputer. Namun banyak dari kita sekarang tidak mengetahui bagaimana permainan catur itu dibuat pada komputer. Catur pada komputer dibuat dengan menggunakan coding (bahasa pemrograman).


Berikut saya jelaskan bagaimana coding (bahasa Pemrograman) yang digunakan untuk menjelaskan bagaimana “bidak-bidak” catur bisa bergerak atau bahkan untuk “memakan” lawannya. Dalam hal ini saya menggunakan bahasa pemrograman Java.

Soldier (pion)
package MainFrame.ChessFrame.players.Pieces;
import java.awt.Color;
import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
public class Solider {
    /** Creates a new instance of Solider */
    private int  X,Y;
    private Point pixelPoint=new Point();
    private int pixelX,pixelY;
    private boolean havelife=true;
    private boolean movedbefore=false;
    private pieceIcon PieceIcon;
    private Point p=new Point();
    private Point old=new Point();
    private boolean myseen=false;
    public Solider(String NameIcon,int startX,int startY) {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Image returnPieceImage() {
        return PieceIcon.returnPieceIcon();
    }
    public boolean returnLife() {
        return  havelife ;
    }
    public int  returnX() {
        return X;
    }
    public void setPoint(Point newPoint) {
        old.x=p.x;
        old.y=p.y;
        X=p.x=newPoint.x;
        Y=p.y=newPoint.y;
        p.x=X;
        p.y=Y;
        movedbefore=true;
        myseen=false;
    }
    public Point returnOld() {
        return old;
    }
    public void setX(int newX) {
        X=newX;
        p.x=X;
    }
    public void setY(int newY) {
        Y=newY;
        p.y=Y;
    }
    public void setPixels(int newpixelX,int newpixelY) {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX() {
        return pixelX;
    }
    public int getPixelY() {
        return pixelY;
    }
    public Point getpixelPoint() {
        return  pixelPoint;
    }
    public int  returnY() {
        return Y;
    }
    public Point returnPostion() {
        return (Point)p.clone();
    }
    public boolean Inthispostion(int x,int y) {
        if(p.x==x&&p.y==y)
            return true;
        return false;
    }
    public boolean Canmove(int x, int y,String typeColor ) {
        if((typeColor.equals("black"))) {
            if((((y-1==Y)&&(x==(X)))) /*&&!Check_Solider_Sees(x,y)*/) {
            return true;
            } else if((((y-2==Y)&&(x==(X))))&&!movedbefore ) {
                return true;
            } else if((y-1==Y&&x+1==(X)||(y-1==Y&&x-1==(X)))&&myseen ) {
                return true;
            }
            else  return false;
        }
        else if (typeColor=="white") {
            if(((y+1==Y)&&(x==(X))) /*&&!Check_Solider_Sees(x,y)*/) {
                return true;
            } else if((((y+2==Y)&&(x==(X)))) &&!movedbefore) {
                return true;
            } else if((y+1==Y&&x+1==(X)||(y+1==Y&&x-1==(X)))&& myseen  ) {
                return true;
            }
            else
                return false;
        }
        return false;
    }
    public boolean PieceInMYway(int x, int y,Point othersPostion ,String typeColor ) {
        if(Y-y==2||Y-y==-2) {
            if((typeColor.equals("black"))) {
                if((((y-1==othersPostion.y)&&(x==(othersPostion.x))))&&!movedbefore ) {
                    return true;
                } else  return false;
            }
            else  if (typeColor.equals("white")) {
               
                if(((y+1==othersPostion.y)&&(x==(othersPostion.x)) &&!movedbefore)) {
                    return true;
                } else
                    return false;
            }
        }
       
        return false;
    }
    public void toOld(Point Old) {
        p.x=Old.x;
        p.y=Old.y; 
    }
    public void setMYseen(boolean newBoolean) {
        myseen=newBoolean;
    }
    public boolean returnMyseen() {
        return myseen;
    }
    public boolean setSeenbychecking(Point newP,String Color) {
        myseen=false;
        if((Color.equals("black"))) {
            if((newP.y-1==Y&&newP.x+1==(X)||(newP.y-1==Y&&newP.x-1==(X)))) {
             myseen=true;
                return true;
            } else return false;
        } else if(Color.equals("white")) {
            if((newP.y+1==Y&&newP.x+1==(X)||(newP.y+1==Y&&newP.x-1==(X)))) {
                myseen=true;
                return true;
            } else return false;
        }
        return false;
    }
    public Point GeneratePossible_Moves() {
        return new Point();
    }
    public String Tell_me() {
        return "Soldier= ("+p.x+','+p.y+")";
    }
}
logika si soldier disini sama juga untuk meload gambar terbaru posisi pion dan untuk melakukan cara pion memakan lawannya diama bila pion memakan jalannya bisa mengarah ke diagonal kiri atau kanan.



Castel  (Benteng)
package MainFrame.ChessFrame.players.Pieces;
 import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
 public class Castle {
    private int  X,Y;
    private int pixelX,pixelY;
    private Point pixelPoint=new Point();
    private boolean havelife=true;
    private pieceIcon PieceIcon;
    private Point p=new Point();
    private Point old=new Point();
    public Castle(String NameIcon,int  startX,int startY) {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Image returnPieceImage() {
        return PieceIcon.returnPieceIcon();
    }
    public int  returnX() {
        X=p.x;
        return X;
    }
    public void setPixels(int newpixelX,int newpixelY) {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX() {
        return pixelX;
    }
    public int getPixelY() {
        return pixelY;
    }
    public Point getpixelPoint() {
        return  pixelPoint;
    }
    public int  returnY() {
        Y=p.y;
        return Y;
    }
    public void toOld(Point Old) {
        p.x=Old.x;
        p.y=Old.y;
    }
    public void setPoint(Point newPoint) {
        old.x=p.x;
        old.y=p.y;
        X=p.x=newPoint.x;
        Y=p.y=newPoint.y;
    }
    public void setX(int newX) {
        X=newX;
        p.x=newX;
    }
    public void setY(int newY) {
        Y=newY;
        p.y=newY;
    }
    public Point returnOld() {
        return old;
    }
    public Point returnPostion() {
        return (Point)p.clone();
    }
    public boolean returnLife() {
        return  havelife ;
    }
    public boolean Inthispostion(int x,int y) {
        if(p.x==x&&p.y==y)
            return true;
        return false;
    }
    public boolean Canmove(int x, int y) {
        if(((y==Y)&&(x>(X)||(x<(X))))) {
            return true;
        } else if((((y>Y)||(y
            return true;
        } else {
            return false;
        }
    }
    public boolean PieceInMYway(int x, int y,Point othersPostion) {
        int j=y;
        int i=x;
        if(((y==Y)&&(x>(X)||(x<(X))))) {
            if((X
                while( (i!=X+1)) {
                i--;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))//there Same Color piece
                {
                    return true;
                }
                }
            else  if((X>i)) {
                while( (i!=X-1)) {
                    i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            }
        } else if((((y>Y)||(y
            if((Y
                while((j!=Y+1)) {
                    j--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            } else  if((Y>j)) {
                while((j!=Y-1)) {
                    j++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public boolean checkKing(int x, int y,Point othersPostion) {
        int j=y;
        int i=x;
        if(((y==Y)&&(x>(X)||(x<(X))))) {
            if((X
                while( (i!=X )) {
                i--;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))//there Same Color piece
                {
                    return true;
                }
                }
            else  if((X>i)) {
                while( (i!=X )) {
                    i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            }
        } else if((((y>Y)||(y
            if((Y
                while((j!=Y )) {
                    j--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            } else  if((Y>j)) {
                while((j!=Y )) {
                    j++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i))) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public Point GeneratePossible_Moves() {
        return new Point();
    }
    public String Tell_me() {
        return "Castle= ("+p.x+','+p.y+")";
    }
}
Pada Castel (Benteng) logikanya diatas adalah untuk menggerakkan benteng berjalan lurus ke arah vertikal dan Horizontal. Selain itu koding di atas bertujuan untuk meload gambar ke posisi terbaru.



Horse (kuda)
package MainFrame.ChessFrame.players.Pieces;
 import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
 public class Horse {
    /** Creates a new instance of Horse */
    private int  X,Y;
    private Point pixelPoint=new Point();
    private int pixelX,pixelY;
    private boolean havelife=true;
    private Point old=new Point();
    private pieceIcon PieceIcon;
    private Point p=new Point();
    public Horse(String NameIcon,int startX,int startY) {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Point returnPostion() {
        return (Point)p.clone();
    }
    public Image returnPieceImage() {
        return PieceIcon.returnPieceIcon();
    }
    public int  returnX() {
        return X;
    }
    public void setPoint(Point newPoint) {
        old.x=p.x;
        old.y=p.y;
        X=p.x=newPoint.x;
        Y=p.y=newPoint.y;
    }
    public Point returnOld() {
        return (Point)old.clone();
    }
    public void setPixels(int newpixelX,int newpixelY) {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX() {
        return pixelX;
    }
    public int getPixelY() {
        return pixelY;
    }
    public Point getpixelPoint() {
        return  pixelPoint;
    }
    public void setX(int newX) {
        X=newX;
        p.x=X;
    }
    public void setY(int newY) {
        Y=newY;
        p.y=Y;
    }
    public int  returnY() {
        return Y;
    }
    public boolean returnLife() {
        return  havelife ;
    }
    public boolean Inthispostion(int x,int y) {
        if(p.x==x&&p.y==y)
            return true;
        return false;
    }
    public void toOld(Point Old) {
        p.x=Old.x;
        p.y=Old.y;
    }
    public boolean Canmove(int x, int y) {
        if((x+1==X)&&(y+2==Y)||(x+1==X)&&(y-2==Y)||(x-1==X)&&(y+2==Y)||(x-1==X)&&(y-2==Y)||(x+2==X)&&(y+1==Y)
        ||(x+2==X)&&(y-1==Y)||(x-2==X)&&(y+1==Y)||(x-2==X)&&(y-1==Y)) {
            return true;
        } else {
            return false;}
    }
    public Point GeneratePossible_Moves() {
        return new Point();
    }
    public String Tell_me() {
        return "Horse= ("+p.x+','+p.y+")";
    }
}

Disini logika  sikuda merupakan paling unik karena kuda bergerak berbentuk "L".  Sama seperti yang lain di sini juga untuk meload gambar posisi terbatu si kuda.



Elephent (Peluncur atau Rencong)
 package MainFrame.ChessFrame.players.Pieces;
 import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
 public class Elephent
{
    /** Creates a new instance of Elephent */
    private int  X,Y;
    private Point pixelPoint=new Point();
    private int pixelX,pixelY;
    private boolean havelife=true;
    private pieceIcon PieceIcon;
    private Point p=new Point();
    private Point old=new Point();
    public Elephent(String NameIcon,int startX,int startY)
    {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Point returnPostion()
    {
        return (Point)p.clone();
    }
    public Image returnPieceImage()
    {
        return PieceIcon.returnPieceIcon();
    }
    public int  returnX()
    {
        return X;
    }
    public void setPoint(Point newPoint)
    {
        old.x=p.x;
        old.y=p.y;
        p.x=newPoint.x;
        p.y=newPoint.y;
        X=p.x;
        Y=p.y;
    }
    public void setX(int newX)
    {
        X=newX;
        p.x=newX;
    }
    public Point returnOld()
    {
        return old;
    }
    public void setPixels(int newpixelX,int newpixelY)
    {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX()
    {
        return pixelX;
    }
    public void toOld(Point Old)
    {
        p.x=Old.x;
        p.y=Old.y;
    }
    public int getPixelY()
    {
        return pixelY;
    }
    public Point getpixelPoint()
    {
        return  pixelPoint;
    }
    public void setY(int newY)
    {
        Y=newY;
        p.y=Y;
    }
    public int  returnY()
    {
        return Y;
    }
    public boolean returnLife()
    {
        return  havelife ;
    }
    public boolean Inthispostion(int x,int y)
    {
        if(p.x==x&&p.y==y)
            return true;
        return false;
    }
    public boolean Canmove(int x, int y)
    {
        int j=y;
        int i=x;
        if((x-y)==(X-Y))
        {
            return true;
        }
        //////////////////////////////////////////////////////////////////////////////////////////
        else if((x+y)==(X+Y))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public boolean PieceInMYway(int x, int y,Point othersPostion)
    {
        int j=y;
        int i=x;
        if((x-y)==(X-Y))
        {
            if(x>X&&y>Y)
            {
                while((j!=Y+1)&&(i!=X+1))
                {
                    j--;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else if(x
                while((j!=Y-1)&&(i!=X-1))
                {
                j++;i++;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                {
                    return true;
                }
                }
        }
        else if(((x+y))==((X+Y)))
        {
            if((Xj))
            {
                while(((j!=Y-1))&&((i!=X+1)))
                {
                    j++;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else  if((X>i)&&(Y
            {
                while((j!=X+1)&&(i!=X-1))
                {
                    j--;i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public boolean checkKing(int x, int y,Point othersPostion)
    {
        int j=y;
        int i=x;
        if((x-y)==(X-Y))
        {
            if(x>X&&y>Y)
            {
                while((j!=Y )&&(i!=X ))
                {
                    j--;i--;
                   
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else if(x
                while((j!=Y )&&(i!=X ))
                {
                j++;i++;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                {
                    return true;
                }
                
                }
        }
        else if(((x+y))==((X+Y)))
        {
            if((Xj))
            {
                while(((j!=Y ))&&((i!=X )))
                {
                    j++;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else  if((X>i)&&(Y
            {
                while((j!=X )&&(i!=X ))
                {
                    j--;i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }
   
    public Point GeneratePossible_Moves()
    {
        return new Point();
    }
    public String Tell_me()
    {
        return "Elephent= ("+p.x+','+p.y+")";
    }
}
Disini pada Peluncur digambarkan bagaimana si peluncur bisa berjalan miring dan sama seperti yg lain logika diatas juga berfungsi untuk meload gambar ke posisi terakhir.



Queen (Ratu)
package MainFrame.ChessFrame.players.Pieces;
 import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
 public class Queen
{
    /** Creates a new instance of Queen */
    private int  X,Y;
    private Point pixelPoint=new Point();
    private int pixelX,pixelY;
    private boolean havelife=true;
    private pieceIcon PieceIcon;
    private Point p=new Point();
    private Point old=new Point();
    public Queen(String NameIcon,int startX,int startY)
    {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Image returnPieceImage()
    {
        return PieceIcon.returnPieceIcon();
    }
    public Point returnPostion()
    {
        return (Point)p.clone();
    }
    public int  returnX()
    {
        return X;
    }
    public void setPixels(int newpixelX,int newpixelY)
    {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX()
    {
        return pixelX;
    }
    public int getPixelY()
    {
        return pixelY;
    }
    public Point getpixelPoint()
    {
        return  pixelPoint;
    }
    public int  returnY()
    {
        return Y;
    }
    public void setPoint(Point newPoint)
    {
        old.x=p.x;
        old.y=p.y;
        X=p.x=newPoint.x;
        Y=p.y=newPoint.y;
    }
    public void setX(int newX)
    {
        X=newX;
        p.x=X;
    }
    public Point returnOld()
    {
        return old;
    }
    public void setY(int newY)
    {
        Y=newY;
        p.y=Y;
    }
    public void toOld(Point Old)
    {
        p.x=Old.x;
        p.y=Old.y;
    }
    public boolean returnLife()
    {
        return  havelife ;
    }
    public boolean Inthispostion(int x,int y)
    {
        if(p.x==x&&p.y==y)
            return true;
        return false;
    }
    public boolean Canmove(int x, int y)
    {
        if(((y==Y)&&(x>(X)||(x
        {
            return true;
        }
        else if((((y>Y)||(y
        {
            return true;
        }
        else   if((x-y)==(X-Y))
        {
            return true;
        }
        else if((x+y)==(X+Y))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public boolean PieceInMYway(int x, int y,Point othersPostion)
    {
        int j=y;
        int i=x;
        if(((y==Y)&&(x>(X)||(x<(X)))))
        {
            if((X
                while( (i!=X+1))
                {
                i--;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))//there Same Color piece
                {
                    return true;
                }
                }
            else  if((X>i))
            {
                while( (i!=X-1))
                {
                    i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        else if((((y>Y)||(y
        {
            if((Y
            {
                while((j!=Y+1))
                {
                    j--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else  if((Y>j))
            {
                while((j!=Y-1))
                {
                    j++;
                   
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
               
            }
        }
        else   if((x-y)==(X-Y))
        {
            if(x>X&&y>Y)
            {
                while((j!=Y+1)&&(i!=X+1))
                {
                    j--;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else if(x
                while((j!=Y-1)&&(i!=X-1))
                {
                j++;i++;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                {
                    return true;
                }
                }
        }
        else if((x+y)==(X+Y))
        {
            if((Xj))
            {
                while((j!=Y-1)&&(i!=X+1))
                {
                    j++;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }           
            else     if((X>i)&&(Y
            {
                while((j!=Y+1)&&(i!=X-1))
                {
                    j--;i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public boolean checkKing(int x, int y,Point othersPostion)
    {
        int j=y;
        int i=x;
        if(((y==Y)&&(x>(X)||(x<(X)))))
        {
            if((X
                while( (i!=X ))
                {
                i--;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))//there Same Color piece
                {
                    return true;
                }
                }
            else  if((X>i))
            {
                while( (i!=X ))
                {
                    i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        else if((((y>Y)||(y
        {
            if((Y
            {
                while((j!=Y ))
                {
                    j--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else  if((Y>j))
            {
                while((j!=Y ))
                {
                    j++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        else   if((x-y)==(X-Y))
        {
            if(x>X&&y>Y)
            {
                while((j!=Y )&&(i!=X ))
                {
                    j--;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else if(x
                while((j!=Y  )&&(i!=X ))
                {
                j++;i++;
                if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                {
                    return true;
                }
                }
        }
        else if((x+y)==(X+Y))
        {
            if((Xj))
            {
                while((j!=Y )&&(i!=X ))
                {
                    j++;i--;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
            else     if((X>i)&&(Y
            {
                while((j!=Y )&&(i!=X ))
                {
                    j--;i++;
                    if(((othersPostion.y)==j)&&((othersPostion.x==i)))
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public Point GeneratePossible_Moves()
    {
        return new Point();
    }
    public String Tell_me()
    {
        return "Queen= ("+p.x+','+p.y+")";
    }
}
logik queen disini sama untuk meload gambar dimana queen berada bila di gerakkan. Terdapat metode gerak yang berguna untuk menggerakkan queen yang dimana Queen bisa bergerak ke arah mana saja dan bisa memakan apa saja.



King (Raja)
package MainFrame.ChessFrame.players.Pieces;
import java.awt.Image;
import java.awt.Point;
import java.io.IOException;
 public class king
{
    /** Creates a new instance of king */
    private int  X,Y;
    private Point pixelPoint=new Point();
    private int pixelX,pixelY;
    private boolean havelife=true;
    private pieceIcon PieceIcon;
    private Point old=new Point();
    private Point p=new Point();
    public king(String NameIcon,int startX,int startY)
    {
        PieceIcon=new pieceIcon(NameIcon);
        X=startX;
        Y=startY;
        p.x=X;
        p.y=Y;
    }
    public Image returnPieceImage()
    {
        return PieceIcon.returnPieceIcon();
    }
    public Point returnPostion()
    {
        return  (Point)p.clone();
    }
    public int  returnX()
    {
        X=p.x;
        return X;
    }
    public void setPixels(int newpixelX,int newpixelY)
    {
        pixelPoint.x=newpixelX;
        pixelPoint.y=newpixelY;
    }
    public int getPixelX()
    {
        return pixelX;
    }
    public int getPixelY()
    {
        return pixelY;
    }
    public Point getpixelPoint()
    {
        return  pixelPoint;
    }
    public int  returnY()
    {
        Y=p.y;
        return Y;
    }
    public void setPoint(Point newPoint)
    {
        old.x=p.x;
        old.y=p.y;
        p.x=newPoint.x;
        p.y=newPoint.y;
        X=p.x;
        Y=p.y;
    }
    public void toOld(Point Old)
    {
        p.x=Old.x;
        p.y=Old.y;
    }
    public Point returnOld()
    {
        return old;
    }
    public void setX(int newX)
    {
        X=newX;
        p.x=X;
    }
    public void setY(int newY)
    {
        Y=newY;
        p.y=Y;
    }
    public boolean Inthispostion(int x,int y)
    {
        if(p.x==x&&p.y==y)
            return true;//cant kill the king anymore;
        return false;
    }
    public boolean returnLife()
    {
        return  havelife ;
    }
    public boolean Canmove(int x, int y)
    {
        if(((y==Y)&&(x==(X-1)))||((y==Y-1)&&(x==(X+1)))
        ||((y==Y-1)&&(x==(X-1)))||((y==Y+1)&&(x==(X+1)))
        ||(((y==Y+1)&&x==(X-1)))||((y==Y)&&(x==(X+1)))
        ||((y==Y-1)&&x==((X)))||((y==Y+1)&&(x==(X))))
        {
            return true;
        }
        return false;
    }
    public Point GeneratePossible_Moves()
    {
        return new Point();
    }
    public String Tell_me()
    {
        return "King= ("+p.x+','+p.y+")";
    }
}

Disini letak logika bagaimana jalannya king. logika yang terdapat di sini adalah untuk melakukan pergerakan dan meload gambar king dimana seharusnya king berada dan bila king dalam keadaan check/skak maka bagian yang lain tidak dapat di gerakkan harus menyelamatkan king dahulu.

Begitulah bagaimana cara pergerakan “Bidak-bidak” Catur bergerak. Yang apabila kita ingin membuat caturnya keseluruhan kita tinggal menambahkan beberapa hal lain seperti penambahan frame atau bahkan menggunakan waktu. Tetapi untuk coding pergerakannya bisa menggunakan coding diatas dalam pemrograman Java.


Berikut merupakan contoh program catur setelah di masukkan frame dan ditambahan waktu dan aksesoris lainnya pendukung permainan.


Gambar pada saat aplikasi dijalankan:






Gambar dimana Aplikasi memulai permainan baru dengan dua pemain :






Gambar dimana proses awal permainan catur baru dimainkan :






Gambar pada saat permainan berakhir atau Check Mate :








Selamat mencoba membuat aplikasi permainan anda sendiri dengan menggunakan kreasi-kreasi unik lainnya.


  Rizal Darmawan
  50407739
  3IA07
 

Senin, 12 April 2010

Bahasa Pemrograman Lingo

Mengenal Dasar Lingo
   Lingo adalah bahasa pemrograman Director yang berguna untukmenciptakan interaksi antara pemakai dengan movie yang istilah populernyadisebut movie interaktif. Dengan Lingo Kita dapat mengontrol movie agarmemberikan respon dari suatu kondisi dan kejadian tertentu. Sebagai contoh,Lingo dapat membuat tombol navigasi untuk berpindah antar halamanpresentasi atau movie dengan mudah, menggerakkan objek, mengontrolvolume suara, dan masih banyak lagi.Saat ini Director dan Lingo mulai banyak digunakan untuk keperluanmultimedia interaktif seperti membuat CD Pembelajaran, Tutorial, game,presentasi produk, company profile sampai CD menu interaktif yang adadalam bonus majalah dan buku komputer


1. Mengenal Tipe Script Lingo
Script Lingo terbagi menjadi 4 tipe, yaitu :

   -Behavior script
adalah script yang ditulis untuk mengontrol propertiesdan gerakan sprite. Tipe script ini memudahkan pemrograman yangberorientasi pada objek atau lebih dikenal dengan istilah OOP (Object-oriented programming)

    -Movie script
adalah script yang tidak ditulis untuk sprite melainkan untukmengontrol movie. Tipe script ini dapat digunakan untuk mengontrolberbagai aspek pads movie, khususnya ketika mulai dan akhir dari sebuahmovie. Tipe script ini juga dapat disesuaikan dengan script lain untukpenggunaan handle pada instance

   -Parent script
adalah script yang digunakan untuk membuat ataumelahirkan sebuah objek ke dalam Global Uariabel dengan perintah °new". Objek-objek ini nantinya dapat mengontrol sprite dan media kontrollainnya tanpa dihubungkan langsung dengan sprite menggunakan scriptatau bahkan dapat digunakan untuk mengontrol data atau objek yang tidakterlihat.Untuk Behavior, Movie, dan Parent script, cast member script akan berdirisendiri.

   -Cast member script 
adalah script yang ditulis secara langsung pada castmember di dalam Cast window tanpa membuat cast member baru sepertitipe script lainnya. Ketika cast member ditempatkan pada stage danberubah menjadi sprite, scat itu pula script yang ada pada cast memberdiaktilkan. Cast member yang diberi script akan menampilkan ikon script di pojok kiribawah thumbnail cast member


2. Menggunakan Script Dasar
     2.1 go the frame
go the frame berguna untuk melakukan looping pada frameyang dilewati playback head. Sebagai contoh, berikut ini Kita akanmenggunakan he ri pt go the frame untuk melakukan looping padaframe gambar, playback head tidak akan berjalan ke frame berikutnyayang berisi movie flash sebelum diberi perintah untuk melanjutkan.Script go the frame sama dengan go to the frame.
Contoh : On exitFrame me
              go the frame end 
Maksud instruksi tersebut di atas adalah, bahwa pada saat headsampai pada frame yang diberi script, maka head tidak akan bergeraklagi, atau menetap pada frame tersebut.

     2.2 go
berguna untuk menuju ke frame yang telah ditentukan.Playback head akan berpindah ke suatu frame lalu memainkan moviehingga batas frame yang telah ditentukan.
Contoh : On mouseUp me
               go 11 end 
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan pergi ke frame 11

     2.3 pause
berguna amok menghentikan sejenak playback head ataumovie yang sedang dimainkan. Sebagai contoh, berikut ini Kita akanmembuat tombol pause yang akan diberi script pause agar moviedapat dihentikan sejenak.
Contoh : On mouseUp me
                pause  end
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan berhenti sementara pada frame tempat script.

     2.4 continue
berguna untuk melanjutkan pemutaran movie yangdihentikan sejenak. Sebagai contoh, berikut ini Kita akan membuattombol continue yang akan diberi script continue.
Contoh : On mouseUp me
               continue end
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan bergerak kembali ke frame berikutnya.


3. Menggunakan Frame Label
     Frame label akan mempermudah Kita untuk menuju ke frame tertentuyang telah diberi tanda atau nama frame. Jika sebelumnya Kitamenggunakan nomor frame misalnya 1,3 atau 8, kali ini dengan framelabel Kita harus memasukkan nama frame yang telah diberi script go.Untuk movie dengan jumlah sprite yang banyak dan terpisah, penggunaanframe label jauh lebih efisien dan mudah tanpa harus mencari nomor framedi many animasi sprite dimulai. Sebagai contoh, berikut ini Kita akanmenggunakan frame label untuk berpindah antar frame pada movie slideshow.
Contoh : On mouseUp me
               go to frame (“BAB I”)end 
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan melompat ke frame dengan label “BAB I”


4. Script untuk Berpindah Antar Frame Label
     4.1 go next 
berguna untuk maju ke frame label berikutnya. Sebagaicontoh, berikut ini Andy akan membuat tombol Next yang diberi scriptgo next agar Kita dapat maju ke frame label berikutnya satu per satu.
Contoh : On mouseUp me
              go nex tend 
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan bergeak ke frame label berikutnya

     4.2 go previous
berguna amok mundur ke frame label berikutnya.Sebagai contoh, berikut ini Kita akan membuat tombol Previous yangdiberi script go previous agar Kita dapat mundur ke frame labelsebelumnya sate persatu.
Contoh : On mouseUp me
              Go previous end
Maksud instruksi tersebut di atas adalah, bahwa pada mouse diklik,maka head akan kembali pada frame sebelumya.


5. Script go loop
    berguna untuk melakukan looping atau memutar ulangmovie dari frame awal. Script ini biasanya ditulis pada channel script.
Contoh : On exitFrame me
               Go loop end
Maksud instruksi tersebut di atas adalah, bahwa pada saat keluar dariframe lokasi script ditempatkan, maka movie akan diulang kembalidari awal secara terus menerus


6. ScriptAlert
     berguna untuk membuat komentar berupa teks yang akanditampilkan dalam kotak dialog. Script ini biasanya ditulis pada spritelangsung atau channel script.
Contoh : On exitFrame me
              Alert “Maaf..!Movie akan diputar ulang”end
Maksud instruksi tersebut di atas adalah, bahwa pada saat keluar dariframe lokasi script ditempatkan, maka akan muncul peringatan.


7. Script beepScript beep
     berguna untuk mengeluarkan suara beep pada komputer.
Contoh : On mouseuP me
              Beep Go 12end
Maksud instruksi tersebut di atas adalah, bahwa pada saat mousediklik, maka keluar bunyi “beep”, kemudian dilanjutkan ke frame 12.


8. Script puppet Sound
     berguna untuk memainkan suara atau cast membersuara yang ada di Cast window.
Contoh : On mouseEnter me
              puppetSound “drip end
Maksud instruksi tersebut di atas adalah, bahwa pada saat mouseberada di atas objek, maka keluar bunyi suara file dengan nama“drip”..


9. Script quit
    berguna untuk mengakhiri dan menutup tampilan movie.Apabila movie dalam format projector (exe) maka movie akan ditutup dankembali ke windows desktop.
Contoh : On mouseUp me
              Quitend
Maksud instruksi tersebut di atas adalah, bahwa pada saat mousediklik, maka kita akan keluar dari aplikasi multimedia.

 

Selasa, 09 Maret 2010

Prinsip Desain User Interface

Desain User Interface adalah suatu desain yang merancang interface efektif untuk sistem perangkat lunak (software).
Efektif artinya siap digunakan, dan hasilnya sesuai dengan kebutuhan.
Kebutuhan disini adalah kebutuhan penggunanya


Prinsip-prinsip desain UI terdiri dari beberapa kategori, yaitu :
1.Learnability
kemampuan pembelajaran.
berarti dukungan untuk pembelajaran bagi pengguna dari semua tingkat supaya mendapat hasil yang baik. Prinsip pembelajaran diperlukan secara efektif untuk mencapai kinerja yang maksimal Diantaranya :
a. Seberapa mudah seseorang dapat mempelajari suatu sistem
b. Seberapa seseorang dapat mempelajari sesuatu sampai menjadi mahir.
c. Bagaimana kemampuan seseoang mempertahankan pengetahhuan yang sudah didapatkan setelah jangka waktu tertentu.

Prinsip yang Mempengaruhi Learnability, adalah :
- Prediktabilitas
dapat mendukung user untuk dapat menentukan efek dari future action berdasarkan catatan interaksi yangs udaj pernah dillakukan sebelumnya.
Prinsip yang terkait pada prediktabilitas adalah operation visibility. Contohnya : pendapat ketika saya berpikir bahwa tindakan ini akan dilakukan oleh operasi visibilitas serta dapat melihat tindakan yang sia-sia seperti menu perintah vs shell item menu berwarna abu-abu.

- Synthesizability (Peniruan)
Prinsip ini dapat membantu user untuk memperkirakan efek dari proses yang dilakukan sebelumnya pada keadaan saat sekarang. Prinsip yang terkait pada synthesizability adalah immediate atau eventual honesty. Contohnya seperti memindahkan file di UNIX shell vs Mac / Windows.

- Keakraban(familiarity)
merupakan pengalaman atau pengetahuan seseorang dalam domain berbasis komputer. Contohny : apakah tugas UI mendayagunakan dunia nyata atau domain pengetahuan?

- Generalisasi
Prinsip generalisasi ini dapat membantu user untuk menambah pengetahuan dari interaksi spesifik didalam atau diluar aplikasi. Contohnya seperti pengoperasian cut & paste pada aplikasi yang berbeda.

- Konsistensi
adalah Kemiripan perilaku antara tugas-tugas serupa / operasi /situasi yang sama tapi dalam hal yang berbeda seperti berinteraksi dengan output. Contohnya : mendapatkan output serta mengatur tata letak layar.



2. Flexibility (Kesesuaian)
yaitu dukungan beberapa cara untuk melakukan tugas-tugas. Dimana yang dilihat seberapa besar kecocokan antara sistem dengan keahlian seorang pemakai sistem dan Fleksibilitas sistem diubah untuk memenuhi jalan kerja yang berbeda atau perbedaan level dari suatu keahlian yang dimilki seseorang.

prinsip yang mempengaruhi Fleksibilitas antara lain :
- Dialog Initiative
merupakan kemungkinan dimana user dapat terbebas dari kendala-kendala buatan yang dipaksakan oleh sistem. Disini pengguna dapat memprakarsai tindakan yang lebih fleksibel dan diiginkannya. Prinsip yang terkait adalah sistem. tidak menghambat pengguna dengan menempatkan batasan tentang bagaimana dialog dilakukan.

Yang dilakukan adalah
1. Pengguna pre-emptive
2. Pengguna memprakarsai tindakan
3. Lebih fleksibel, umumnya lebih diinginkan
4. Sistem pre-emptive
5. Sistem melakukan semua petunjuknya, pengguna merespon kadang-kadang diperlukan.

- Multithreading
memungkinkan pengguna untuk melakukan lebih dari satu tugas pada waktu yang bersamaan.

Multithreading terbagi menjadi 2 jenis yaitu
• Concurrent merupakan input yang dilakukan kepada beberapa tugas secara simultan.
• Interleaved merupakan banyak nya tugas yang ada tapi memasukkannya harus satu persatu.

-Tugas migrability
merupakan kemampuan untuk memindahkan tugas kinerja untuk entitas (user atau sistem) agar dapat melakukan tugas tersebut dengan lebuh baik. Contohnya Spell-checking, kontrol keamanan di pabrik.

- Customizability
merupakan kemampuan yang dimiliki user untuk merubah interface. Disini dilihat bagaimana kemampuan user untuk dapat beradaptasi dengan system.

- Substitutivity
yaitu fleksibilitas dalam rincian operasi yang memungkinkan pengguna untuk memilih metode interaksi yang cocok dan membiarkan cara yang berbeda untuk melakukan tindakan, tentukan data, konfigurasi dan membiarkan berbagai cara untuk menyajikan output sesuai tugas & pengguna.



3.Ketahanan Prinsip(Robustness)
Merupakan tingkat dukungan yang diberikan agar user dapat menentukan keberhasilan atau tujuan yang ingin dicapai. Dari ketiga kategori inilah yang akan digunakan dalam mendesain user interface.Tujuan dari Ketahanan Prinsip yaitu mendukung pengguna dalam menentukan keberhasilan dan tujuan penilaian.

prinsip yang mempengaruhi Robustness antara lain:
- Observability
pengguna dapat menentukan keadaan internal sistem dari apa yang dimengerti oleh pengguna tersebut.
Prinsip yang terkait adalah
• Browsability(jelajahi apa yang pengguna cari untuk kelancaran tugasnya)
• Reachability(menavigasi melalui negara dibutuhkan kegigihan)

- Recoverability
Kemampuan untuk mengambil tindakan korektif atas mengakui kesalahan, kesulitan prosedur pemulihan harus berhubungan dengan kesulitan tugas asli.
Maju pemulihan adalah kemampuan untuk memperbaiki ketika kita tidak dapat membatalkan backward atau pemulihan.

- Responsif
merupakan Persepsi pengguna laju komunikasi dengan system. Response time adalah waktu untuk sistem untuk menanggapi dalam beberapa cara untuk pengguna tindakan.
Dimana responsif terhadap waktu sangat lah berpengaruh karena waktu untuk sistem untuk menanggapi dalam beberapa cara untuk pengguna tindakan (s). disini persepsi pengguna tidak selalu benar dan konsistensi penting maka respon OK jika pengguna sesuai harapan.

- Task conformance
merupakan tingkatan dimana sistem pelayanan mendukung semua task yang diinginkan oleh user dengan cara yang diketahiu oleh user tersebut. Seperti tugas kelengkapan(dimana sistem dapat melakukan tugas yang dibutuhkan user) dan tugas kecukupan(dimana pengguna dapat melakukan tugas dengan baik melalui sistem).


RIZAL DARMAWAN(50407739)
3IA07

Pengikut gw

kursor