super(30,20,35,false);


super(30,20,35,false);
if (getX() < 0) setLocation(getX()+getWorld().getWidth(), getY(); if (getY() < 0) setLocation(getX(), getY()+getWorld().getHeight()); if (getX() >= getWorld().getWidth()) setLocation(getX()-getWorld().getWidth(), getY()); if (getY() >= getWorld().getHeight()) setLocation(getX(), getY()-getWorld().getHeight());
int w = getWorld().getWidth(), h = getWorld().getHeight(); if (getX() < 0) setLocation(getX()+w, getY()); if (getY() < 0) setLocation(getX(), getY()+h); if (getX() >= w) setLocation(getX()-w, getY()); if (getY() >= h) setLocation(getX(), getY()-h);
setLocation((getX()+getWorld().getWidth())%getWorld().getWidth(), (getY()+getWorld().getHeight())%getWorld().getHeight());
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Point; import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Arrays; /** * Write a description of class Ular here. * * @author * @version 1.0 */ public abstract class Ular extends Actor implements BisaDiikuti { /** * Membuat enumerasi arah. */ enum Arah { ATAS, BAWAH, KIRI, KANAN; private static final List<Arah> VALUES = Collections.unmodifiableList(Arrays.asList(values())); private static final int SIZE = VALUES.size(); private static final Random RANDOM = new Random(); public static Arah arahAcak() { return VALUES.get(RANDOM.nextInt(SIZE)); } } /** * posisiAkhir, menunjukan posisi terakhir dari ular ini. * arah, menunjukan arah ular ini. * bagianBadan, bagian bagian badan yang akan bertambah bila ular ini makan. * * kita buat semua variabel disini private (privat) karena * variabel ini tidak digunakan oleh kelas lainnya (hanya digunakan oleh kelas ini). * hal ini bisa mengurangi penggunaan memori. */ protected Point posisiAkhir; protected boolean bisaDiikuti; public Point posisiAkhir() { return posisiAkhir; } public boolean bisaDiikuti() { return bisaDiikuti; } protected void move(Arah arah) { switch(arah) { case ATAS: setLocation(getX(), getY()-1); break; case BAWAH: setLocation(getX(), getY()+1); break; case KIRI: setLocation(getX()-1, getY()); break; case KANAN: setLocation(getX()+1, getY()); break; default: arah=Arah.KANAN; } if (getX() < 0) setLocation(getX()+getWorld().getWidth(), getY()); if (getY() < 0) setLocation(getX(), getY()+getWorld().getHeight()); if (getX() >= getWorld().getWidth()) setLocation(getX()-getWorld().getWidth(), getY()); if (getY() >= getWorld().getHeight()) setLocation(getX(), getY()-getWorld().getHeight()); } }
enum Arah { ATAS, BAWAH, KIRI, KANAN; public static Arah arahAcak() { return values()[Greenfoot.getRandomNumber(values().length)]; } }