Pierwszy program w Greenfoot
2017-11-10 / Krzysztof Kozłowski

Poznajemy środowisko programistyczne Greenfoot. Zapoznamy się z podstawowymi funkcjami Greenfoot-a, a przy okazji napiszemy w nim pierwszy program i to nie byle jaki, bo wprawiający w ruch samochód, utworzony przy pomocy klasy Samochód, od której zaczęliśmy zabawę w programowanie.

Po zainstalowaniu środowiska Greenfoot na pulpicie i ew. w menu Start powinniśmy mieć ikonę, umożliwiającą uruchomienie środowiska.

Po uruchomieniu Greenfoot-a zobaczymy główne okno programu, na razie puste.

Zanim zaczniemy pisać program, to kilka słów, co znajduje się w oknie głównym i do czego służą klawisze i suwak na dole okna.

Suwak Speed służy do określenia prędkości wykonywania programu. Dzięki niemu będzie można spowolnić lub przyspieszyć ruch obiektów na ekranie.

Nowy projekt

Wszystkie pliki potrzebne do uruchomienia programu nazywać będziemy projektem. Jako, że na każdy projekt składa się zazwyczaj wiele plików, to każdy nowy projekt rozpoczynamy od utworzenia na dysku folderu, w którym przechowywane będą pliki projektu.

Aby zachować porządek warto też najpierw stworzyć sobie folder, w którym przechowywane będą wszystkie projekty greenfoot-owe. Folder o nazwie greenfoot tworzymy np. w swoim katalogu domowym (C:/Użytkownicy/). Ważne, żeby był to folder, w którym mamy uprawnienia do zapisu i możemy zapisywać pliki bez problemu.

Po utworzeniu folderu na nowy projekt w Greenfoot klikamy w menu Scenario → New Java Scenario i wybieramy utworzony wcześniej folder.

Biały prostokąt widoczny na środku okna to tzw. świat (ang. world), czyli przestrzeń, w której będą poruszały się nasze obiekty, np. samochody. Poruszać się będą one mogły tylko w granicach świata, czyli jeśli nasz samochód dojedzie do jednej z krawędzi, to zatrzyma się i nie będzie mógł się poruszać dalej.

Świat ma także swoje odbicie w klasach utworzonych przez Greenfoot-a automatycznie podczas tworzenia nowego projektu.

Po prawej stronie (w ramce World classes) zobaczyć można klasę MyWorld. To właśnie ta klasa odpowiada za wszystko, co się dzieje w naszym sztucznym świecie. Klasa ta nie jest nam na początku do niczego potrzebna. Przyda nam się ona w późniejszym czasie, kiedy np. będziemy chcieli wyświetlić na ekranie jakiś napis (patrz artykuł Samochód z licznikiem kilometrów).

To co dla nas najważniejsze znajduje się niżej w ramce Actor classes. Aktorami w Greenfoot nazywać będziemy te klasy, dla których możemy utworzyć obiekty, które będą potrafiły wykonywać różne akcje na ekranie, np. poruszać się.

Nie jest to istotne, ale na marginesie dodam, że klasy aktorów, które będziemy tworzyć to zwykłe klasy java’owe wyprowadzone z nadrzędnej klasy Actor. Czyli jak zajrzymy do kodu klasy, to będą to klasy rozszerzające klasę Actor.

1
class Samochod extends Actor

Nowa klasa

Aby utworzyć nową klasę, klikamy prawym klawiszem myszy na prostokącie symbolizującym klasę Actor i wybieramy opcję New subclass… (czyli Nowa podklasa).

Po wybraniu opcji New subclass… pojawi się okienko, w którym podajemy nazwę nowej klasy (w polu New class name). Niech nowa klasa nazywa się Samochod (nazwa celowo bez polskich liter typu „ó”).

Poniżej wybieramy obrazek, który będzie symbolizował każdy obiekt klasy Samochod. Wybierzmy w tym celu kategorię obrazków transport, a w niej któryś z obrazków, np. car.png i klikamy klawisz OK.

Po utworzeniu nowa klasa powinna być widoczna tuż pod klasą Actor. Strzałka wskazuje, że klasa Samochod to klasa pochodna w stosunku do klasy Actor.

Od tej pory za każdym razem kiedy utworzymy obiekt klasy Samochod i umieścimy go w naszym świecie, to zobaczymy czerwonego sedana.

Nowy obiekt klasy Samochod

Aby utworzyć nowy obiekt klasy Samochod klikamy prawym klawiszem myszy i wybieramy opcję new Samochod().

new Samochod() to tzw. konstruktor klasy, czyli specjalna metoda wywoływana w momencie tworzenia nowego obiektu. Kontruktorami klas nie będziemy się jednak teraz zajmować szczegółowo.

Po kliknięciu opcji tworzenia nowego obiektu umieszczamy przy pomocy myszy obiekt w naszym świecie.

Moglibyśmy w tym momencie uruchomić program klawiszem Run, ale z samochodem nic się nie będzie działo. Pozostanie w miejscu, w którym go upuszczono. Spróbujmy więc go nieco ożywić…

Poruszanie obiektu

Zanim wprawimy w ruch obiekt klasy Samochod, zobaczmy jak wygląda klasa Samochod. Klikamy w tym celu dwukrotnie w klasę Samochod. To spowoduje, że otwarte zostanie nowe okienko, a w nim kod klasy.

Sporo miejsca w kodzie zajmują komentarze, czyli opisy przeznaczone dla programistów, nie mające wpływu na działanie programu. Dla przejrzystości usuniemy je (ale w przyszłości nauczymy się z nich korzystać i będziemy je wykorzystywać w swoich programach). Po usunięciu komentarzy kod klasy powinien wyglądać, jak na poniższym obrazku.

Zwróćmy uwagę, że Greenfoot sam automatycznie dodał w klasie metodę act():

1
2
3
public void act() {

}

Metoda ta jest na razie pusta (nie licząc komentarza Add your action code here), ale nie usuwajmy jej. To w tej metodzie napiszemy coś, co spowoduje, że samochód będzie się poruszał.

Metoda act() to metoda, którą Greenfoot będzie wywoływał wielokrotnie po uruchomieniu programu klawiszem Run. Suwak określający szybkość działania ma wpływ na to, jak często wykonywana będzie przez Greenfoot-a metoda act().

No to czas na uruchomienie samochodu:

1
2
3
public void act() {
move(50);
}

Do wprawienia obiektu w ruch skorzystamy z metody move(), przygotowanej przez autorów Greenfoot-a. W nawiasach – jako argument – podajemy odległość, o jaką ma zostać przesunięty obiekt. Podana liczba to po prostu liczba pikseli na ekranie, czyli move(50) przesunie nasz samochód o 50 pikseli do przodu.

Po dokonaniu zmiany kod klasy powinien wyglądać tak:

1
2
3
4
5
6
7
8
import greenfoot.*;

public class Samochod extends Actor
{
public void act() {
move(50);
}
}

Dla upewnienia się, że kod jest poprawny i nie zawiera błędu, klikamy klawisze Compile (Kompiluj) na górze okna. Jeśli wszystko jest w porządku, to na dole ekranu zostanie wyświetlony komunikat Class compiled – no syntax error.

Zamykamy okno z kodem klasy albo przełączamy się na główne okno środowiska Greenfoot. Niestety jakakolwiek zmiana w klasie i kompilacja kodu powoduje, że obiekt musimy utworzyć raz jeszcze i umieścić go na ekranie. Klikamy klawisz Run, aby uruchomić program.

Po uruchomieniu ekranu samochód dojedzie do krawędzi ekranu i zatrzyma się. Warto poeksperymentować z szybkością działania programu tak, by z jednej strony samochód poruszał się płynnie, z drugiej jednak by nie jechał zbyt szybko.

Sterowanie samochodem

Samochód jeździ do przodu, ale nie da się nim kierować. Aby móc nim sterować, musisz poznać instrukcję warunkową IF i to, jak ją wykorzystać w programie. Dowiesz się tego z dwóch poniższych artykułów:

PermaLink: https://java.kozlowski.photos/2017/11/pierwszy-program-greenfoot/