the world generation works again (i guess they were still set too high), but i still cant move weirdly enough
setLocation(MyWorld.playerX, MyWorld.playerY);
import greenfoot.*;
public class MyWorld extends World
{
static final int WIDE = 27, HIGH = 15, CELL = 40;
static final int BIG_X = 50, BIG_Y = 30;
int[][] grid = new int[BIG_Y][BIG_X];
int scrollX, scrollY;
Actor player = new Player();
public MyWorld()
{
super(WIDE, HIGH, CELL);
setPaintOrder(Player.class);
setup();
addObject(player, WIDE/2, HIGH/2);
}
/** Populates the world */
private void setup()
{
// building grid
for (int y=8; y<BIG_Y; y++) for (int x=0; x<BIG_X; x++) grid[y][x] = 1;
for (int y=10; y<BIG_Y; y++) for (int x=0; x<BIG_X; x++)
if (Greenfoot.getRandomNumber(5) == 0) grid[y][x] = 2;
// populating world as per grid
for (int y=0; y<HIGH; y++) for (int x = 0; x<WIDE; x++) genActor(x, y);
}
/** Adds an actor at given location if one should exist there */
private void genActor(int x, int y)
{
switch(grid[y+scrollY][x+scrollX])
{
case 1: addObject(new Dirt(), x, y); break;
case 2: addObject(new Mineral(2), x, y); break;
}
}
/** Performs player movement and scrolling */
public void act()
{
// check moving
int dx = 0, dy = 0;
if (Greenfoot.isKeyDown("D")) dx++;
if (Greenfoot.isKeyDown("A")) dx--;
if (Greenfoot.isKeyDown("S")) dy++;
if (Greenfoot.isKeyDown("W")) dy--;
if (dx*dy != 0 || dx+dy == 0) return;
// do no more if trying to move past edge
int x = player.getX(), y = player.getY();
if (x+dx < 0 || x+dx > WIDE-1) return;
if (y+dy < 0 || y+dy > HIGH-1) return;
// move player
player.setLocation(player.getX()+dx, player.getY()+dy);
// scroll, if able
if (!(dx == -1 && scrollX == 0) &&
!(dy == -1 && scrollY == 0) &&
!(dx == 1 && scrollX == BIG_X-WIDE) &&
!(dy == 1 && scrollY == BIG_Y-HIGH)) scroll(dx, dy);
// time delay when moving
Greenfoot.delay(20);
}
/** Scrolls the actors, if needed (removing and adding as required) */
private void scroll(int dx, int dy)
{
// do not scroll if player is not moving away from center
if (dx == 1 && player.getX() <= WIDE/2) return;
if (dx == -1 && player.getX() >= WIDE/2) return;
if (dy == 1 && player.getY() <= HIGH/2) return;
if (dy == -1 && player.getY() >= HIGH/2) return;
// scroll all actor (including player -- toward center)
for (Object obj : getObjects(null))
{
Actor actor = (Actor) obj;
int newX = actor.getX()-dx, newY = actor.getY()-dy;
actor.setLocation(newX, newY);
// remove the actor if leaving world view
if (newX < 0 || newX > WIDE-1 || newY < 0 || newY > HIGH-1)
removeObject(actor);
}
// adjust scroll values
scrollX += dx;
scrollY += dy;
// adds actors coming into world view
if (dx == 1) for (int y=0; y<HIGH; y++) genActor(WIDE-1, y);
if (dx == -1) for (int y=0; y<HIGH; y++) genActor(0, y);
if (dy == 1) for (int x=0; x<WIDE; x++) genActor(x, HIGH-1);
if (dy == -1) for (int x=0; x<WIDE; x++) genActor(x, 0);
}
}if(Greenfoot.isKeyDown("S") && world[playerX][playerY + 1] == 0)...if(Greenfoot.isKeyDown("S") && world[playerX][playerY + 1] == 0)...if (Greenfoot.isKeyDown("S") && getY() < 15 && world[playerX}[playerY + 1] == 0)...if (Greenfoot.isKeyDown("S") && getY() < 15 && world[playerX}[playerY + 1] == 0)...