This site requires JavaScript, please enable it in your browser!
Greenfoot back
Maecky
Maecky wrote ...

2014/6/23

I am following a tutorial to do a TicTacToe-game but I aint able to get it running.

Maecky Maecky

2014/6/23

#
Here is my world:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Spielfeld here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Spielfeld extends World
{
    /**
     * Constructor for objects of class Spielfeld.
     * 
     */
    public Spielfeld()
    {    
        // Macht ein Spielfeld mit der Größe 3x3 Felder á 60 Pixeln Breite
        super(3,3,60);
        //setPaintOrder(player.class,Spielball.class);
        Spielball zelle1 = new Spielball();
        addObject(zelle1,0,0);
        Spielball zelle2 = new Spielball();
        addObject(zelle2,1,0);
        Spielball zelle3 = new Spielball();
        addObject(zelle3,2,0);
        Spielball zelle4 = new Spielball();
        addObject(zelle4,0,1);
        Spielball zelle5 = new Spielball();
        addObject(zelle5,1,1);
        Spielball zelle6 = new Spielball();
        addObject(zelle6,2,1);
        Spielball zelle7 = new Spielball();
        addObject(zelle7,0,2);
        Spielball zelle8 = new Spielball();
        addObject(zelle8,1,2);
        Spielball zelle9 = new Spielball();
        addObject(zelle9,2,2);
    }
}
and here my actor:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
 * Write a description of class Spielball here.
 * 
 * @author Marc-André Lülsberg 
 * @version 17.6.14
 */
public class Spielball extends Actor
{
    enum BallState { 
        UNCLICKED, GOLD, STEEL 
    }
    BallState state = BallState.UNCLICKED;
    /*SpielBall(){
    setImage("cell.jpg");
    }*/

    /**
     * Act - do whatever the Spielball wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {   
        //Wenn 3 gleiche Bälle in einer Reihe sind,dann...
        if((getWorld().zelle1.isSteel()&&getWorld().zelle2.isSteel()&&getWorld().zelle3.isSteel())||
        (getWorld().zelle4.isSteel()&&getWorld().zelle5.isSteel()&&getWorld().zelle6.isSteel())||
        (getWorld().zelle7.isSteel()&&getWorld().zelle8.isSteel()&&getWorld().zelle9.isSteel())||
        (getWorld().zelle1.isSteel()&&getWorld().zelle4.isSteel()&&getWorld().zelle7.isSteel())||
        (getWorld().zelle2.isSteel()&&getWorld().zelle5.isSteel()&&getWorld().zelle8.isSteel())||
        (getWorld().zelle3.isSteel()&&getWorld().zelle6.isSteel()&&getWorld().zelle9.isSteel())||
        (getWorld().zelle1.isSteel()&&getWorld().zelle5.isSteel()&&getWorld().zelle9.isSteel())||
        (getWorld().zelle3.isSteel()&&getWorld().zelle5.isSteel()&&getWorld().zelle7.isSteel())){
            getWorld().zelle1.gewonnwnWennSteel();
            getWorld().zelle2.gewonnwnWennSteel();
            getWorld().zelle3.gewonnwnWennSteel();
            getWorld().zelle4.gewonnwnWennSteel();
            getWorld().zelle5.gewonnwnWennSteel();
            getWorld().zelle6.gewonnwnWennSteel();
            getWorld().zelle7.gewonnwnWennSteel();
            getWorld().zelle8.gewonnwnWennSteel();
            getWorld().zelle9.gewonnwnWennSteel();
            getWorld().player.setPlayer1();
            Greenfoot.stop();   //... wird das Spiel gestoppt
        }
        else{
            if((getWorld().zelle1.isGold()&&getWorld().zelle2.isGold()&&getWorld().zelle3.isGold())||
            (getWorld().zelle4.isGold()&&getWorld().zelle5.isGold()&&getWorld().zelle6.isGold())||
            (getWorld().zelle7.isGold()&&getWorld().zelle8.isGold()&&getWorld().zelle9.isGold())||
            (getWorld().zelle1.isGold()&&getWorld().zelle4.isGold()&&getWorld().zelle7.isGold())||
            (getWorld().zelle2.isGold()&&getWorld().zelle5.isGold()&&getWorld().zelle8.isGold())||
            (getWorld().zelle3.isGold()&&getWorld().zelle6.isGold()&&getWorld().zelle9.isGold())||
            (getWorld().zelle1.isGold()&&getWorld().zelle5.isGold()&&getWorld().zelle9.isGold())||
            (getWorld().zelle3.isGold()&&getWorld().zelle5.isGold()&&getWorld().zelle7.isGold())){
                getWorld().zelle1.gewonnwnWennGold();
                getWorld().zelle2.gewonnwnWennGold();
                getWorld().zelle3.gewonnwnWennGold();
                getWorld().zelle4.gewonnwnWennGold();
                getWorld().zelle5.gewonnwnWennGold();
                getWorld().zelle6.gewonnwnWennGold();
                getWorld().zelle7.gewonnwnWennGold();
                getWorld().zelle8.gewonnwnWennGold();
                getWorld().zelle9.gewonnwnWennGold();
                player.setPlayer2();
                Greenfoot.stop();
            }
        }
    }

    public void setGold(){  //macht ein angeklicktes Feld golden
        setImage("gold-ball.png");
        state = BallState.GOLD;
    }

    public void setSteel(){ //macht ein angeklicktes Feld silber
        setImage("steel-ball.png");
        state = BallState.STEEL;
    }

    public void reset(){    //ist der Urzustand
        setImage("cell.jpg");
        state = BallState.UNCLICKED;
    }

    public boolean isUnclicked(){   //gibt wieder, ob ein Feld schon angeklickt wurde oder nicht
        return(state==BallState.UNKLICKED);
    }

    public boolean isGold(){    //gibt wieder, ob ein Feld schon angeklickt wurde oder nicht
        return(state==BallState.GOLD);
    }

    public boolean isSteel(){   //gibt wieder, ob ein Feld schon angeklickt wurde oder nicht
        return(state==BallState.STEEL);
    }

    public void gewonnenWennGold(){ //Kennzeichnet die Felder, mit denen gewonnen wurde
        if (state==BallState.GOLD){
            setImage("Ball.png");
        }
    }

    public void gewonnenWennSteel(){//Kennzeichnet die Felder, mit denen gewonnen wurde
        if (state==BallState.STEEL){
            setImage("ball.jpg");
        }
    }

}
While compiling Greenfoot always gives the errorcode
cannot find symbol- variable zelle1
(on line 25 of my actor) Can you please help me? P.s. Ihr könnt auch auf Deutsch antworten, das würde es einfacher machen, auch wenn ich dem englischen mächtig bin ;)
erdelf erdelf

2014/6/23

#
die zellen werden nur lokal in der world klasse erstellt du mussst auf sie zugreifen können und sie dann so abfragen hier ein offizielles tutorial dafür
Maecky Maecky

2014/6/25

#
Ich werde daraus irgendwie nicht schlau :( Are there any other hints?
danpost danpost

2014/6/25

#
Please refer to the page on Classes and Objects of the Java tutorials.
You need to login to post a reply.