Você está na página 1de 10

Andi Novianto

Simulasi dan
Komunikasi C1
Digital

untuk
SMK/MAK Kelas X

Semua Kompetensi Keahlian


Source Code pada Bab 1

• Kode Program Awal pada Jendela Editor


import greenfoot.*;
import javax.swing.JOptionPane;
/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class bg extends World
{
Counter counter = new Counter(”Nilai Skor Anda: ”);
skor skor = new skor();
player player = new player();
ball ball = new ball();
tembok tembok = new tembok();
tembok tembok1 = new tembok();
tembok tembok2 = new tembok();
tembok tembok3 = new tembok();
tembok tembok4 = new tembok();
/**
* Constructor for objects of class bg.
*
*/
public bg()
{
// Create a new world with 600x400 cells with a
cell size of 1x1 pixels.
super(600, 400, 1);
setPaintOrder(Counter.class, player.class, skor.class,
tembok.class, ball.class);
addObject(counter,155,380); //meletakkan posisi
caption skor
addObject(player,321,360); //meletakkan posisi tembok
pemantul
addObject(ball,320,335); //meletakkan posisi bola
addObject(tembok,100,35); //meletakkan posisi tembok
addObject(tembok1,170,75); //meletakkan posisi tembok
addObject(tembok2,200,135); //meletakkan posisi tembok
addObject(tembok3,400,135); //meletakkan posisi tembok
addObject(tembok4,500,35); //meletakkan posisi tembok

prepare();
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


2
public void act(){
if(Greenfoot.getRandomNumber(1000)<4){
addObject(new tembok(),Greenfoot.
getRandomNumber(100),Greenfoot.getRandomNumber(170)); //menampilkan
class tembok agar tampil secara acak
}

if(Greenfoot.isKeyDown(”space”)){ //menggunakan tombol


spasi untuk menghentikan sementara game
Greenfoot.stop();
}
}

public void tambah(){


counter.add(5);
}

/**
* Called when game is up. Stop running and display
score.
*/
public void selesai()
{
addObject(new skor(counter.getValue()), getWidth()/2,
getHeight()/2); //menampilkan pesan ”Game Over dan skor terakhir
yang diperoleh”
}

/**
* Prepare the world for the start of the program. That
is: create the initial
* objects and add them to the world.
*/
private void prepare()
{
}
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


3
• Kode Program pada Class Ball
import greenfoot.*;

/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class ball extends Actor
{
int x=3;
int y=3;
/**
* Act - do whatever the ball wants to do. This method
is called whenever
* the ’Act’ or ’Run’ button gets pressed in the
environment.
*/
public void act()
{
// Add your action code here.
gerak();
kanan();
kiri();
atas();
pemain();
}
public void gerak()
{
setLocation(getX()+x,getY()+y);
}
public void kanan()
{
if(getX()>=getWorld().getWidth()-getImage().
getWidth()/2){
x=x-1;
}
}
public void kiri()
{
if(getX()<=getImage().getWidth()/2){
x=x+1;
}
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


4
public void atas()
{
Actor poin=getOneIntersectingObject(tembok.class);
if(getY()<=getImage().getHeight()/2){
y=y+1;
}
if(poin !=null){
((bg)getWorld()).tambah(); //jika subclass ball
berhasil menabrak tembok dan pecah, akan ditambahkan poinnya
getWorld().removeObject(poin);
}
}
public void pemain()
{
Actor box=getOneIntersectingObject(player.class);
if(box !=null){
y=y-1;
}
if(getY()>=getWorld().getHeight()-getImage().
getHeight()/2){
Greenfoot.stop();
((bg)getWorld()).selesai(); //digunakan untuk
memanggil method selesai yang berada di subclass bg (World
classes)
}
}
}

• Kode Program Pada Class Player


import greenfoot.*;

/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class player extends Actor
{
/**
* Act - do whatever the player wants to do. This
method is called whenever
* the ’Act’ or ’Run’ button gets pressed in the
environment.
*/

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


5
public player()
{
GreenfootImage img=getImage();
img.scale(img.getWidth()+30,img.getHeight()-60); //
mengatur skala image subclass player
setImage(img);
}

public void act()


{
// Untuk menggerakkan player
if(Greenfoot.isKeyDown(”left”)){
move(-3); //menggerakkan subclass player ke
kiri
}
if(Greenfoot.isKeyDown(”right”)){
move(3); //menggerakkan subclass player ke
kanan
}
if(Greenfoot.mouseMoved(null)){
MouseInfo mouse = Greenfoot.getMouseInfo();
setLocation(mouse.getX(), 360); //menggerakkan
player dengan mouse ke kanan atau ke kiri
}
}
}

• Kode Program pada Class Tembok


import greenfoot.*;

/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class tembok extends Actor
{
/**
* Act - do whatever the tembok wants to do. This
method is called whenever
* the ’Act’ or ’Run’ button gets pressed in the
environment.
*/

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


6
public tembok()
{
GreenfootImage img=getImage();
img.scale(img.getWidth()-70,img.getHeight()-70); //
mengatur skala image tembok
setImage(img);
}

public void act()


{
// Add your action code here.
}
}

• Kode Program pada Class Skor


import greenfoot.*;
import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;

/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class skor extends Actor
{
/**
* Act - do whatever the skor wants to do. This method
is called whenever
* the ’Act’ or ’Run’ button gets pressed in the
environment.
*/
public static final float FONT_SIZE = 48.0f;
public static final int WIDTH = 400;
public static final int HEIGHT = 300;

/**
* Create a score board with dummy result for testing.
*/
public skor(){
this(25);
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


7
/**
* Create a score board for the final result.
*/
public skor(int score){
makeImage(”Game Over”, ”Skor Anda : ”, score);
}

/**
* Make the score board image.
*/
private void makeImage(String title, String prefix, int
score){
GreenfootImage image = new GreenfootImage(WIDTH,
HEIGHT);

image.setColor(new Color(14, 14, 89, 160));


image.fillRect(0, 0, WIDTH, HEIGHT);
image.setColor(new Color(255, 255, 255, 100));
image.fillRect(5, 5, WIDTH-10, HEIGHT-10);
Font font = image.getFont();
font = font.deriveFont(FONT_SIZE);
image.setFont(font);
image.setColor(Color.WHITE);
image.drawString(title, 60, 100);
image.drawString(prefix + score, 60, 200);
setImage(image);
}
public void act()
{
// Add your action code here.
}
}

• Kode Program pada Class Counter


import greenfoot.*;
import java.awt.Font; //Tambahkan Font
/**
* Write a description of class bg here.
*
* @author Andi Novianto@smkbisa2018
* @version trial
*/
public class Counter extends Actor
{

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


8
private int value = 0;
private int target = 0;
private String text;
private int stringLength;

public Counter()
{
this(“”);
}

public Counter(String prefix)


{
text = prefix;
stringLength = (text.length() + 2) * 16;

setImage(new GreenfootImage(stringLength, 24));


GreenfootImage image = getImage();
Font font = image.getFont();
image.setFont(font.deriveFont(24.0F)); // use larger
font

updateImage();
}

public void act() {


if(value < target) {
value++;
updateImage();
}
else if(value > target) {
value--;
updateImage();
}
}

public void add(int score)


{
target += score;
}

public void subtract(int score)


{
target -= score;
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


9
public int getValue()
{
return value;
}

/**
* Make the image
*/
private void updateImage()
{
GreenfootImage image = getImage();
image.clear();
image.drawString(text + value, 1, 18);
}
}

Simulasi dan Komunikasi Digital untuk SMK/MAK Kelas X


10

Você também pode gostar