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

2016/11/14

How to jump more in a curve?

Jochends Jochends

2016/11/14

#
Hi, I can let my object jump vertically but he comes down immediately and i want to let him jump more in a curve ( over the X-as ). What is a short code for adding this?
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
 
/**
 * Write a description of class mannetje here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class mannetje extends Actor
{
     
    private int speed = 3; //snelheid( in pixels ) waarmee het mannetje horizontaal loopt.
    private int vSpeed = 0; //V staat voor verticale speed, dus springen en vallen.
    private int acceleration = 1; //het mannetje gaat hierdoor vallen zoals bij de zwaartekracht.
    private boolean jumping;
    private int jumpStrength = 16;
    private int frame = 1;
    private int animationCounter = 0;
        
    private GreenfootImage manRechts2 = new GreenfootImage("manRechts2.png");
    private GreenfootImage manRechts3 = new GreenfootImage("manRechts3.png");
    private GreenfootImage manRechts4 = new GreenfootImage("manRechts4.png");
    private GreenfootImage manRechts5 = new GreenfootImage("manRechts5.png");
    private GreenfootImage manRechts6 = new GreenfootImage("manRechts6.png");
    
    private GreenfootImage manLinks2 = new GreenfootImage("manLinks2.png");
    private GreenfootImage manLinks3 = new GreenfootImage("manLinks3.png");
    private GreenfootImage manLinks4 = new GreenfootImage("manLinks4.png");
    private GreenfootImage manLinks5 = new GreenfootImage("manLinks5.png");
    private GreenfootImage manLinks6 = new GreenfootImage("manLinks6.png");
     

public void act() // controleert mijn toetsenbord inputs en doe de act precies.
{
   checkKeys();
   vallen();
   checkVallen();
   animationCounter++;
}
 
public void checkKeys()
{
if (Greenfoot.isKeyDown("left") ) // Als ik de linker keyarrow indruk gaat de afbeelding van het man-links laden en de methode moveLeft aanroepen
{
   moveLeft();
}
 
if (Greenfoot.isKeyDown("right") ) // Als ik de rechter keyarrow indruk gaat de afbeelding van het man-rechts laden en de methode moveRight aanroepen
{
   moveRight();
}
 
if (Greenfoot.isKeyDown("space") && jumping == false){ // Het laten springen van het mannetje.
     jump();
}
}
 
public void checkVallen() // Controleert of hij op de grond staat, en anders valt hij.
{
    if(onGround()) {
        vSpeed = 0;
    }
    else {
        vallen();
    }
}
 
public boolean onGround() /* De plaats waar het object( mannetje ) zich gaat plaatsen */
{
    Actor ground = getOneObjectAtOffset (0, getImage().getHeight() / 2, Hoofdplatform.class);
    if(ground == null)
        {
            jumping = true;
            return false;
        }
        else
        {
            moveToGround(ground);
            return true;
        }
}
 
public void moveToGround(Actor ground)
{
        int groundHeight = ground.getImage().getHeight();
        int newY = ground.getY() - (groundHeight /2 + getImage().getHeight())/2;
        setLocation(getX(), newY);
        jumping = false;
}
     
public void vallen() // de speed staat nu bij de Y-as wat verticaal is
{
        setLocation(getX(), getY() + vSpeed);
        if(vSpeed <=9)
        {
            vSpeed = vSpeed + acceleration; // hierdoor gaat het mannetje realistischer vallen( zwaartekracht en niet zwevend )
        }
        jumping = true;
}
 
public void jump(){ // Het mannetje laten springen( jumpStrength = hoe hoog hij kan springen ).
        vSpeed = - jumpStrength;
        jumping = true;
}
 
public void moveLeft() // de speed staat bij de X-as wat horizontaal is
{
    setLocation (getX() - speed, getY());
    if(animationCounter %5 == 0)
    {
        animateLeft();
    }
}

public void moveRight() // naar rechts bewegen + de animatie van het bewegen.
{
    setLocation (getX() + speed, getY());
    if(animationCounter %5 == 0)
    {
        animateRight();
    }
}

public void animateLeft() // naar links bewegen + de animatie van het bewegen per afbeelding.
{
    if(frame == 1)
        {
            setImage(manLinks2);
        }
        else if(frame == 2)
        {
            setImage(manLinks3);
        }
        else if(frame == 3)
        {
            setImage(manLinks4);
        }
        else if(frame == 4)
        {
            setImage(manLinks5);
        }
        else if(frame == 5)
        {
            setImage(manLinks6);
            frame = 1;
            return;
        }
    frame++;
}

public void animateRight() // naar rechts bewegen + de animatie van het bewegen per afbeelding.
{
    if(frame == 1)
        {
            setImage(manRechts2);
        }
        else if(frame == 2)
        {
            setImage(manRechts3);
        }
        else if(frame == 3)
        {
            setImage(manRechts4);
        }
        else if(frame == 4)
        {
            setImage(manRechts5);
        }
        else if(frame == 5)
        {
            setImage(manRechts6);
            frame = 1;
            return;
        }
    frame++;
}
}
Thx
danpost danpost

2016/11/14

#
On lines 43 and 48 add the following after the first parenthesis ( '(' ): ! jumping && or try: ! onGround() &&
Jochends Jochends

2016/11/15

#
If i try the following code he doesn't recognize it
if (Greenfoot.isKeyDown("right") ! jumping && ) or if (Greenfoot.isKeyDown("right") ! onGround() && ) 
danpost danpost

2016/11/15

#
Jochends wrote...
If i try the following code he doesn't recognize it
if (Greenfoot.isKeyDown("right") ! jumping && ) or if (Greenfoot.isKeyDown("right") ! onGround() && ) 
You placed the portion of code after the wrong character.
You need to login to post a reply.