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

2016/11/18

Bounded moving in tilebased world

katenech katenech

2016/11/18

#
Please, help me with this code:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Hero here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Hero extends Actor
{
        //скорость по оси х
    int speedX=0;
    int speedY=0;
    
        int[][] map = new int[][]{
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1},
{0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,139,0,0},
{0,0,0,0,0,0,0,0,0,23,23,0,23,0,0,0,139,0,139,0},
{0,0,0,0,0,0,0,0,23,0,23,0,0,0,0,23,0,305,0,0},
{0,0,0,0,0,0,0,0,0,23,0,0,23,0,0,0,0,0,0,0},
{0,0,0,0,0,442,0,23,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,23,0,0,23,0,0,0,0,0,0},
{0,0,0,0,0,0,0,442,0,0,0,0,442,0,0,0,0,27,27,27},
{0,0,0,0,0,0,0,0,0,420,420,282,420,420,420,420,0,27,2,27},
{0,0,0,0,0,0,0,0,0,420,420,420,420,420,420,420,0,27,2,27},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,2,27},
{0,0,0,0,0,0,0,27,27,27,27,27,27,27,27,27,27,27,2,27},
{0,0,0,0,0,0,0,27,2,2,2,2,2,2,2,2,2,2,2,27},
{0,0,0,0,0,0,0,27,2,2,2,2,2,2,2,2,2,2,2,27},
{0,0,0,0,0,0,0,99,2,2,2,2,2,2,2,2,2,2,2,27},
{0,0,0,0,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	    };
	    
int i,j;
    
    public void act() 
    {
        keyboardControls();
        
    }    
    
    public void keyboardControls(){
        if(Greenfoot.isKeyDown("left")){
            speedX=-2;
            speedY=0;
            boundMove();
        }
        if(Greenfoot.isKeyDown("right")){
            speedX=2;
            speedY=0;
            boundMove();
        }
        if(Greenfoot.isKeyDown("up")){
            speedY=-2;
            speedX=0;
            boundMove();
        }
        if(Greenfoot.isKeyDown("down")){
            speedY=2;
            speedX=0;
            boundMove();
        }
        
    }
    
        public void boundMove(){
        i=Math.round((getX())/32);
        j=Math.round((getY())/32);
        System.out.println(i+ " "+j+" "+map[j][i]);
        if(map[j][i]==0){
            setLocation(getX()+speedX, getY()+speedY);
        }else
        setLocation(getX()-speedX, getY()-speedY);
        }
    }     

It works, but not correctly)
Super_Hippo Super_Hippo

2016/11/18

#
Why did you create a new discussion here?
You need to login to post a reply.