You are on page 1of 77

44

programare java cu greenfoot


PROF DR BOGDAN CONSTANTIN

PROF BUJOR MARIA MIHAELA

Componentele scenriului unui joc


C:\Program Files
Descarc un joc
https://www.greenfoot.org/scenarios

Dublu click pe el
Daca apare eraoare

Si
Apare pagina principala de creare a interfetei

Crearea claselor
Fundalul cuclick dreapta
Deschiderea unuia facut
Crearea unei clase

Import clase

Pot schimba obiectul


Cu dublu click pe ele vedem codul
Il inchid programul

C:\Program Files\Greenfoot\scenarios\stride\pengu
Pot vedea si continutul claselor care pot fi contruite in dreamwever
Run

Sau executie pas cu pas

Cu dublu click aflu detaliu despre obiect


Package greenfoot

Class World
java.lang.Object

greenfoot.World

public abstract class World


extends java.lang.Object

Class Actor
java.lang.Object

greenfoot.Actor

public abstract class Actor


extends java.lang.Object
avem mai multi actori in scena

norul care se misca pe orizontal

Vedem codul java de inceput al clasei scene

// WARNING: This file is auto-generated and any changes to it will be overwritten

import java.util.*;

import greenfoot.*;

/**

* This is the whole scene. It creates and contains the objects that are in it.

*/

public class Scene extends World


{

/**

*/

public Scene()

super(750, 500, 1);

addObject( new Cliff(false), 85, 441);

addObject( new Cliff(true), 665, 441);

addObject( new Cloud(), 369, 315);

addObject( new Pengu(), 66, 244);

Clasa cliff
Esc
// WARNING: This file is auto-generated and any changes to it will be overwritten

import java.util.*;

import greenfoot.*;

/**

* It's just a cliff.

*/

public class Cliff extends Actor

/**

* Default consrtuctor - nothign to do

*/

public Cliff()

/**
* Create a horizontally mirrored cliff face.

*/

public Cliff(boolean flip)

if (flip) {

getImage().mirrorHorizontally();

/**

* Act: nothing to do here (the cliff does not do anything)

*/

public void act()

/* nothing to do*/

Se inchide fiecare pagina

Dublu click pe el sa vedem sursa


// WARNING: This file is auto-generated and any changes to it will be overwritten

import java.util.*;

import greenfoot.*;

/**

* A cloud that moves back and forth between two defined points.

*/

public class Cloud extends Actor

private int speed = 4;

private int leftTurn = 270;

private int rightTurn = 480;

/**

* Move in the direction we are currently moving in. Turn if we reach a turning point.

*/

public void act()

{
setLocation(getX() + speed, getY());

Actor actor = getOneIntersectingObject(null);

if (actor != null) {

actor.setLocation(actor.getX() + speed, actor.getY());

if (atTurningPoint()) {

speed = - speed;

/**

* Test if we are at one of the turning points.

*/

public boolean atTurningPoint()

return getX() <= leftTurn || getX() >= rightTurn;

Dublu click pe el sa I introcuc clasa

Click sa I vad importul de biblioteci


Deci

Am initializat numar de sarituri


Esc

Pot introduce comenzi din dreapta


Miscarea se face prin functie sau procedura numita metoda

Dublu click pe ea sa I vedem continutul sau

// WARNING: This file is auto-generated and any changes to it will be overwritten

import java.util.*;

import greenfoot.*;
/**

* A little penguin that wants to get to the other side.

*/

public class Pengu extends Mover

private static final int jumpStrength = 16;

/**

* Check keyboard input and react accordingly.

*/

public void act()

checkKeys();

checkFall();

/**

*/

private void checkKeys()

if (Greenfoot.isKeyDown("left")) {

setImage("pengu-left.png");

moveLeft();

if (Greenfoot.isKeyDown("right")) {

setImage("pengu-right.png");

moveRight();
}

if (Greenfoot.isKeyDown("space")) {

if (onGround()) {

jump();

/**

* Start a jump action.

*/

private void jump()

setVSpeed( - jumpStrength);

fall();

/**

* Check whether we are falling. If so, fall. If we're on ground, stop the fall.

*/

private void checkFall()

if (onGround()) {

setVSpeed(0);

else {

fall();

}
}

Declar metodele

Creez calasa cu costante


Pot vedea codul
Deschiderea celorlate fisiere din aplicatie
Da o eroare dar o salvez altfel
Apas close

Imaginile din desen se salveaza aici

Aplicatia 2

COPIEZ AICI SCENARIILE din directorul unde s a instalat softul


Procedurile aferente fiecarui buton de mai sus ,cu dublu click pe ele se vede continutul

import greenfoot.*;

public class Credits extends World

{
public Credits()

super(800, 550, 1);

public void act()

String key = Greenfoot.getKey();

if("enter".equals(key))

Greenfoot.setWorld(new Startscreen());

import greenfoot.*;

public class EndWorld extends World

public EndWorld(boolean won)

super(800, 550, 1);

if(won)

addObject(new Endgood(), 400, 200);

else

addObject(new Endbad(), 400, 200);


}

addObject(new Back(), 400, 400);

public void act()

String key = Greenfoot.getKey();

if("enter".equals(key))

Greenfoot.setWorld(new Startscreen());

import greenfoot.*;

public class How extends World

public How()

super(800, 550, 1);

public void act()

String key = Greenfoot.getKey();

if("enter".equals(key))

{
Greenfoot.setWorld(new Startscreen());

import greenfoot.*;

public class MyWorld extends World

int timer, newtime, suntimer, timeprogress;

Actor dia, progress;

int dias;

boolean dead = false;

int[] spiderlogs = new int[8];

public MyWorld()

super(800, 550, 1);

addObject(new shop(), 350, 40);

showText("100", 350, 90);

addObject(new redshop(), 450, 40);

showText("300", 450, 90);

addObject(new greenshop(), 550, 40);

showText("500", 550, 90);

addObject(new minershop(), 650, 40);

showText("50", 650, 90);

progress = new progress();

addObject(progress, 400, 525);


progress.getImage().scale(700, 25);

showText("Progress", 400, 525);

timer = 250 + Greenfoot.getRandomNumber(200); //250

newtime = 400;

suntimer = Greenfoot.getRandomNumber(100);

dias = 0;

timeprogress = 0;

Greenfoot.setSpeed(45);

public void act()

timer--;

suntimer--;

timeprogress++;

progress.getImage().setColor(Color.MAGENTA);

progress.getImage().fillRect(0, 0, (int)(timeprogress/10), 50);

showText("Diamonds: " + dias, 200, 50);

if(!dead)

if(timer < 0 && timeprogress < 7000)

int y = Greenfoot.getRandomNumber(8) * 50 + 125;

Actor zomb;
if(timeprogress >= 3000)

if(timeprogress >= 5000)

if(Greenfoot.getRandomNumber(5) == 1)

addObject(new Spiderpink(), 750, y);

else if(Greenfoot.getRandomNumber(2) == 1)

zomb = new Spiderblue();

addObject(new Spiderblue(), 750, y);

else

zomb = new Spiderblack();

addObject(new Spiderblack(), 750, y);

else if(Greenfoot.getRandomNumber(2) == 1)

zomb = new Spiderblue();

addObject(new Spiderblue(), 750, y);

else

zomb = new Spiderblack();

addObject(new Spiderblack(), 750, y);

}
}

else

zomb = new Spiderblack();

addObject(new Spiderblack(), 750, y);

y = (y-125)/50;

spiderlogs[y] = spiderlogs[y] + 1;

timer = newtime;

if(newtime > 60)

newtime -= 20;

else

if(newtime > 40)

newtime--;

if(suntimer < 0)

addObject(new dia(), Greenfoot.getRandomNumber(800), Greenfoot.getRandomNumber(500));

suntimer = Greenfoot.getRandomNumber(100) + 100;

if(timeprogress > 7000 && checkwon())

{
Greenfoot.setWorld(new EndWorld(true));

public void clickeddia()

dias += 25;

public int getdias()

return dias;

public void setsol(int costs)

dias -= costs;

public boolean gibdead()

return dead;

public boolean checkwon()

for(int i = 0; i < 8; i++)


{

if(spiderlogs[i] != 0)

return false;

return true;

import greenfoot.*;

public class Startscreen extends World

int auswahl;

boolean pushed;

public Startscreen()

super(800, 550, 1);

Greenfoot.setSpeed(50);

auswahl = 1;

pushed = true;

public void act()

String key = Greenfoot.getKey();

if(("s".equals(key) || "down".equals(key)))
{

if(auswahl == 3)

auswahl = 1;

else

auswahl++;

setBackground("start"+auswahl+".png");

pushed = true;

if("w".equals(key) || "down".equals(key))

if(auswahl == 1)

auswahl = 3;

else

auswahl--;

setBackground("start"+auswahl+".png");

pushed = true;

if("enter".equals(key))
{

switch(auswahl)

case 1:

Greenfoot.setWorld(new MyWorld());

break;

case 2:

Greenfoot.setWorld(new How());

break;

case 3:

Greenfoot.setWorld(new Credits());

break;

Sectiunea actor

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**

* Write a description of class Back here.

* @author (your name)

* @version (a version number or a date)

*/

public class Back extends Actor

{
/**

* Act - do whatever the Back wants to do. This method is called whenever

* the 'Act' or 'Run' button gets pressed in the environment.

*/

public void act()

import greenfoot.*;

public class Endbad extends Actor

public void Endbad()

getImage().scale(800, 550);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Endgood extends Actor

public void Endgood()

getImage().scale(800, 550);

}
SPIDER

import greenfoot.*;

import java.util.*;

public class Spider extends Actor

int leben, speed;

boolean start;

Actor healthbar;

double scale;

public Spider()

leben = 100;

public void setup()

getImage().scale(50, 50);

start = false;

healthbar = new healthbar();


scale = 1/(double)(leben);

public void loop()

if(!start)

getWorld().addObject(healthbar, getX(), getY() - 20);

healthbar.getImage().drawRect(0, 0, 69, 6);

healthbar.getImage().setColor(Color.RED);

healthbar.getImage().fillRect(1, 1, 68, 5);

start = !start;

if(!getWorldOfType(MyWorld.class).gibdead())

move(-speed);

if(getX() < 49)

Greenfoot.setWorld(new EndWorld(false));

Actor hit = getOneIntersectingObject(egg.class);

if(isTouching(whiteegg.class))

leben -= 25;
getWorld().removeObject(hit);

changehealthbar();

if(isTouching(redegg.class))

leben -= 34;

getWorld().removeObject(hit);

changehealthbar();

if(isTouching(greenegg.class))

leben -= 20;

getWorld().removeObject(hit);

changehealthbar();

healthbar.setLocation( getX() , getY() - 20);

if(leben <= 0)

int y = (getY()-125)/50;

getWorldOfType(MyWorld.class).spiderlogs[y] = getWorldOfType(MyWorld.class).spiderlogs[y] -
1;

getWorld().removeObject(healthbar);

getWorld().removeObject(this);

}
public int health()

return leben;

public void changehealthbar()

if(leben > 0)

healthbar.getImage().clear();

healthbar.getImage().setColor(Color.BLACK);

healthbar.getImage().drawRect(0, 0, 69, 6);

healthbar.getImage().setColor(Color.RED);

healthbar.getImage().fillRect(1, 1, (int)(68 * scale * leben), 5);

//healthbar.getImage().scale((int)(70 * scale * leben + 1), 7);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Spiderblack extends Spider

public Spiderblack()

leben = 100;

setup();

speed = 1;

}
public void act()

loop();

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Spiderblue extends Spider

public Spiderblue()

leben = 100;

setup();

speed = 3;

public void act()

loop();

import greenfoot.*;

public class Spiderpink extends Spider

public Spiderpink()

{
leben = 200;

setup();

speed = 2;

public void act()

loop();

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class cooldown extends Actor

public cooldown()

GreenfootImage image = getImage();

image.scale(7, 70);

image.clear();

image.setColor(Color.BLACK);
setRotation(180);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class dia extends Actor

int timer;

public dia()

getImage().scale(50, 50);

timer = 150;

public void act()

timer--;

setLocation(getX(), getY() + 1);

if(Greenfoot.mouseClicked(this) && timer > 1)

getWorldOfType(MyWorld.class).clickeddia();

getWorld().removeObject(this);

if(timer < 0)

getWorld().removeObject(this);

}
}

import greenfoot.*;

public class egg extends Actor

public egg()

public void loop()

if(!getWorldOfType(MyWorld.class).gibdead())

setLocation(getX() + 5, getY());

if(getX() > 790)

getWorld().removeObject(this);

import greenfoot.*;
public class greenegg extends egg

public greenegg()

getImage().scale(50, 50);

public void act()

loop();

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class redegg extends egg

public redegg()

getImage().scale(50, 50);

public void act()

loop();

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)


public class whiteegg extends egg

public whiteegg()

getImage().scale(50, 50);

public void act()

loop();

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class healthbar extends Actor

public healthbar()

{
GreenfootImage image = getImage();

getImage().scale(70, 7);

image.clear();

image.setColor(Color.BLACK);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class progress extends Actor

public progress()

getImage().scale(1, 25);

public void act()

// Add your action code here.

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class shooter extends Actor

boolean pressed;

int timer, oldtimer, y;

public shooter()

{
timer = 70;

setup();

public void act()

place();

shoot(new whiteegg());

public void setup()

getImage().scale(50, 50);

pressed = false;

oldtimer = timer;

public void place()

MouseInfo mouse = Greenfoot.getMouseInfo();

if(mouse != null)

if(mouse.getButton() == 1 && mouse.getY() > 100 && mouse.getX() > 50 && mouse.getY() < 500)

if(getOneIntersectingObject(shooter.class) == null)

pressed = true;

y = (getY()-125)/50;

}
}

if(!pressed)

setLocation(calcX(mouse), calcY(mouse));

public void shoot(Actor egg)

if(pressed)

if(getWorldOfType(MyWorld.class).spiderlogs[y] > 0)

timer --;

if(timer < 0 && !getWorldOfType(MyWorld.class).gibdead())

timer = oldtimer;

getWorld().addObject(egg, getX(), getY());

public int calcX(MouseInfo mouse)

int x = mouse.getX();

int y = mouse.getY();
if(y > 100 && x > 50 && y < 500)

return (int)Math.ceil(x / 50) * 50 + 25;

else

return x;

public int calcY(MouseInfo mouse)

int y = mouse.getY();

int x = mouse.getX();

if(y > 100 && x > 50 && y < 500)

return (int)Math.ceil(y / 50) * 50 + 25;

else

return y;

}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class greenshooter extends shooter

public greenshooter()

timer = 30;

setup();

public void act()

place();

shoot(new greenegg());

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class miner extends shooter

int timer;

public miner()
{

setup();

timer = 100;

public void act()

place();

timer--;

if(timer < 0)

//getWorld().addObject(new dia(), getX(), getY());

getWorldOfType(MyWorld.class).clickeddia();

timer = 100;

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class redshooter extends shooter

public redshooter()

timer = 70;

setup();

public void act()

{
place();

shoot(new redegg());

import greenfoot.*;

public class shop extends Actor

MouseInfo mouse;

int cooldown, oldcooldown;

double scale;

Actor display;

boolean start;

public shop()

oldcooldown = 100;

setup();

public void act()

loop(new shooter(), 100);

public void setup()

scale = 1/(double)(oldcooldown);

getImage().scale(60, 60);
mouse = Greenfoot.getMouseInfo();

cooldown = 0;

display = new cooldown();

start = false;

public void loop(Actor buyedshooter, int costs)

if(!start)

start = true;

getWorld().addObject(display, getX() + 40, getY());

display.getImage().clear();

display.getImage().fillRect(0, 0, 6,(int)(70 * scale * cooldown));

display.getImage().drawRect(0,0,6,69);

if(cooldown > 0)

cooldown--;

mouse = Greenfoot.getMouseInfo();

if(Greenfoot.mouseClicked(this) && getWorldOfType(MyWorld.class).getdias() >= costs &&


cooldown <= 0)

getWorld().addObject(buyedshooter, mouse.getX(), mouse.getY());

getWorldOfType(MyWorld.class).setsol(costs);
cooldown = oldcooldown;

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class greenshop extends shop

public greenshop()

cooldown = 100;

setup();

public void act()

loop(new greenshooter(), 500);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class minershop extends shop

{
public minershop()

oldcooldown = 350;

setup();

public void act()

loop(new miner(), 50);

import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class redshop extends shop

public redshop()

setup();

public void act()

loop(new redshooter(), 300);

APAS ENTER SI SE VA EXECUTA


CU ENTER SE REIA
DIRECTORUL care contine datele

You might also like