Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


[java] Map isn't drawing properly.


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Captain Goatse   Banned   -  Reputation: 100

Like
Likes
Like

Posted 03 April 2000 - 12:45 AM

My map is not drawing properly. You can add yuor own pics to it because I don''t have web page where I could put it up =( So I have to copy all here...

Moving doesn''t work and it''s not needed

import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;

public class rpg
{
public static void main(String args[])
{
smallwindow editor = new smallwindow();
editor.requestFocus();
editor.addWindowListener(new close());

}
}

class smallwindow extends Frame
{
Engine engine= new Engine();



public smallwindow()
{
super("Pieni Editori");
setSize(800, 600);
addKeyListener(new KeyEventHandler());
add(engine);
show();

}
class KeyEventHandler extends KeyAdapter
{

public void keyPressed(KeyEvent ke)
{
switch(ke.getKeyCode())
{

case KeyEvent.VK_NUMPAD1: PC.moveSouthWest();
break;
case KeyEvent.VK_NUMPAD2: PC.moveSouth();
break;
case KeyEvent.VK_NUMPAD3: PC.moveSouthEast();
break;
case KeyEvent.VK_NUMPAD4: PC.moveWest();
break;
case KeyEvent.VK_NUMPAD5: PC.moveHold();
break;
case KeyEvent.VK_NUMPAD6: PC.moveEast();
break;
case KeyEvent.VK_NUMPAD7: PC.moveNorthWest();
break;
case KeyEvent.VK_NUMPAD8: PC.moveNorth();
break;
case KeyEvent.VK_NUMPAD9: PC.moveNorthEast();
break;
case KeyEvent.VK_ESCAPE: System.exit(0);
break;
}
// check bounds
if(PC.focusX < 0) PC.focusX = 0;
if(PC.focusY < 0) PC.focusY = 0;
if(PC.collisionbox().intersects(engine.westEdge)) PC.focusX = PC.focusX + 1;
if(PC.collisionbox().intersects(engine.northEdge)) PC.focusY = PC.focusY + 1;
if(PC.collisionbox().intersects(engine.eastEdge)) PC.focusX = PC.focusX - 1;
if(PC.collisionbox().intersects(engine.southEdge)) PC.focusY = PC.focusY -1;
engine.repaint(0,0,608,544);
}
}


} // smallwindow ends


class close extends WindowAdapter
{
public void windowClosing(WindowEvent event) {
System.exit( 0 );
}
}

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

public class Engine extends Canvas
{
public int viewX, viewY;
//ImageManager
ImageManager imgMgr;
//Declaration of images
Image grassImages;
Image grassTiles[] = new Image[40];
Image PCImages;
Image PCTiles[]=new Image[8];
//Declaration of offscreen buffer
Graphics offScreen;
Image buffer;
//Test map
MapData map[][] = new MapData[32][32];
//Scroll borders
public final static Rectangle eastEdge = new Rectangle(512,0,94,544);
public final static Rectangle southEdge = new Rectangle(0,448,608,94);
public final static Rectangle westEdge = new Rectangle(0,0,94,544);
public final static Rectangle northEdge = new Rectangle(0,0,608,94);
//Map border
protected final static Rectangle mapBorder = new Rectangle(96,96,1076,916);

//Personal Character
PC pc;
//Loaded
private boolean loaded;
//Movement area
Dimension Area = new Dimension(13,11);



public Engine()
{

System.out.println("GoDEngine intialized");
viewX = 0;
viewY =0;





}

protected void loadMap()
{
int i,j;
int transform_map[][] = {
//Map {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,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},
{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,1,1,1,1,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,1,1,1,1,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,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,1,1,1,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,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,6,6,6,6,5,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,6,6,6,6,5,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0},
{0,6,6,6,6,5,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,6,6,6,6,6,5,0,1,0,0,0,0,0,0,0,6,6,6,5,0,0,0,0,0,0,0,0,0,0,0,0},
{0,6,6,6,6,6,8,1,1,0,0,0,0,0,0,0,6,6,6,5,0,0,0,0,0,0,0,0,0,0,0,0},
{0,4,4,4,4,4,3,0,0,0,0,0,0,0,0,0,4,4,4,3,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{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,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,2,2,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,2,2,0,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,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,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,2,2,0,0,0,0,0,0,0,0,0,0}};

//Transform the map into map structure
for(i=0;i<32;i++)
{
for(j=0;j<32;j++)
{
map[j] = new MapData();
switch(transform_map[i][j])
{
case 0: map[i][j].num = 1;
//map[i][j].tile[0] = 0;

break;
case 1: map[i][j].num = 1;
map[i][j].tile[0] = 1;

break;
case 2: map[i][j].num = 1;
map[i][j].tile[0] = 2;

break;
case 3: map[i][j].num = 3;
map[i][j].tile[0] = 3;

break;
case 4: map[i][j].num = 2;
map[i][j].tile[0] = 3;

break;
case 5: map[i][j].num = 2;
map[i][j].tile[0] = 4;

break;
case 6: map[i][j].num = 1;
map[i][j].tile[0] = 5;

break;
case 7: map[i][j].num = 4;
map[i][j].tile[0] = 5;

break;
case 8: map[i][j].num = 3;
map[i][j].tile[0] = 4;

break;

}

}

}


}




public void init()
{
imgMgr = new ImageManager(this);
grassImages = getToolkit().getImage(getClass().getResource("images/tiles.gif"));
PCImages = getToolkit().getImage(getClass().getResource("images/pc.gif"));
//Loading graphics
loadImages();
//Intialization of Personal Character
pc = new PC(PCTiles, offScreen,this);
//Map
loadMap();
//Intialization of double buffering
buffer= createImage(608,544);
offScreen = buffer.getGraphics();


loaded = true;
}

public void update(Graphics g)
{

if (loaded == false)
{
init();
}


drawMap(viewX, viewY);
pc.paint(offScreen);

g.drawImage(buffer,0,0,this);
}

final public void paint(Graphics g)
{

update(g);
}

protected void loadImages()
{
int num=0;
for(int i=0; i<4; i++)
{
for(int j=0;j<10;j++)
{
grassTiles[num++] = imgMgr.getCroppedImage(grassImages, j*32,i*32,32,32);
}
}
num=0;
for(int i=0; i<4; i++)
{
for(int j=0;j<2;j++)
{
PCTiles[num++] = imgMgr.getCroppedImage(PCImages, j*32,i*32,32,32);
}
}
for(int i= 0; i <39; i++)
{
imgMgr.trackImage(grassTiles[i], this);
}
for(int i= 0; i <7; i++)
{
imgMgr.trackImage(PCTiles[i], this);
}
System.out.println("Images are loaded");

}

protected void drawMap(int x, int y)
{
int i,j,k;
int mapx,mapy,mx,my,tx,ty,xo,yo,xa,ya,screenx,screeny;
int length;
int tile_to_draw,height_to_draw;
int sprite_mx,sprite_my,spritex,spritey,xx,yy;
mapx = x;
xo = x;
mapy = y;
yo = y;


while(true)
{

mx = mapx;
my = mapy;
screeny = 32;
//for each row
for(i=0;i<38;i++)
{
tx = mx;
ty = my;

screenx = 32;
length = 19;

//Check to see if this is an odd row
if((i & 0) == 0)
{

screenx-=32;
}
if((i & 1) == 0)
{

screeny-=32;
}

//For each tile in row
for(j=0;j {
//for each tile in cell
for(k=0;k {
tile_to_draw = map[ty][tx].tile[k];
offScreen.drawImage(grassTiles[tile_to_draw], screenx, screeny, this);
}//for each tile
screenx+=32;

// map update and wrap around
if((tx+=1) > 31)
tx = 0;
if((ty-=1) < 0)
ty = 31;
}//for each tile in row

screeny+=32;

if((i & 1) == 1)
{
if((mx+=1) > 31)
mx = 32;
} else
{
if((my+=1) > 31)
my = 32;
}
}//for each row

break;
}//while

repaint();


}//drawMap

}
import java.awt.*;
import java.awt.image.*;
import java.net.URL;

/*****************************************************************
Handles opening / retrieving of images from disk

*****************************************************************/
public class ImageManager
{
Canvas canvas;

public ImageManager(Canvas c)
{
this.canvas = c;
}

public Image getCroppedImage(Image img, int x, int y, int width, int height)
{
ImageProducer cropped = new FilteredImageSource(img.getSource(),
new CropImageFilter(x,y,width,height));

return canvas.createImage(cropped);
}


public void trackImage(Image img, Component cmp)
{
MediaTracker tracker = new MediaTracker(cmp);
tracker.addImage(img, 0);
try
{
tracker.waitForID(0);
if(tracker.isErrorAny())
{
System.out.println("Error loading image");
}
}
catch (Exception ex) { ex.printStackTrace(); }
}
}
public class MapData
{
public int num;
public int tile[];
public int height[];
public int layer[];
public MapData(){
tile = new int[10];
height = new int[10];
layer = new int[10];
}
}
import java.awt.*;
import java.awt.Image.*;

public class PC
{

static Image faceUP, faceDOWN, faceLEFT, faceRIGHT, faceUP2, faceDOWN2, faceLEFT2, faceRIGHT2;
static Image PC;
Canvas canvas;
public static int focusX = 9; // which tile gets the hilite
public static int focusY = 8;

public PC(Image PCImages[], Graphics offScrn, Canvas c)
{

faceUP = PCImages[0];
faceUP2 = PCImages[1];
faceDOWN = PCImages[4];
faceDOWN2 = PCImages[5];
faceLEFT = PCImages[6];
faceLEFT2 = PCImages[7];
faceRIGHT = PCImages[2];
faceRIGHT2 = PCImages[3];




PC=faceDOWN;
canvas = c;
System.out.println("GoDPC intialized");
}

final public static void moveNorthWest()
{
focusX--;
focusY--;
if(PC==faceUP){
PC=faceUP2;
}
else{
PC=faceUP;
}
}

final public static void moveNorth()
{
focusY--;
if(PC==faceUP){
PC=faceUP2;
}
else{
PC=faceUP;
}

}

final public static void moveNorthEast()
{
focusX++;
focusY--;
if(PC==faceUP){
PC=faceUP2;
}
else{
PC=faceUP;
}

}

final public static void moveEast()
{
focusX++;
if(PC==faceRIGHT){
PC=faceRIGHT2;
}
else{
PC=faceRIGHT;
}


}

final public static void moveSouthEast()
{
focusY++;
focusX++;
if(PC==faceDOWN){
PC=faceDOWN2;
}
else{
PC=faceDOWN;
}
}

final public static void moveSouth()
{
focusY++;
if(PC==faceDOWN){
PC=faceDOWN2;
}
else{
PC=faceDOWN;
}
}

final public static void moveSouthWest()
{
focusY++;
focusX--;
if(PC==faceDOWN){
PC=faceDOWN2;
}
else{
PC=faceDOWN;
}
}

final public static void moveWest()
{
focusX--;
if(PC==faceLEFT){
PC=faceLEFT2;
}
else{
PC=faceLEFT;
}
}

final public static void moveHold()
{
PC=faceDOWN;
}


public void update(Graphics offScreen)
{

offScreen.setClip(0, 0, 608, 544);
offScreen.drawImage(PC ,focusX * 32, focusY * 32,
canvas);
}


public final void paint(Graphics offScreen)
{
update(offScreen);
}
public final static Rectangle collisionbox()
{
return new Rectangle((int)(focusX * 32 ),
(int)(focusY * 32 ),
32, 32 );
}


}








It should draw in line but now it draws - 45 degrees to wrong way =(...


Sponsor:

#2 Jim_Ross   Members   -  Reputation: 122

Like
Likes
Like

Posted 05 April 2000 - 08:20 AM

That''s way too much code to look at on a web page. Howsabout you get a free web acount, put up a screenshot, and just the code that you feel is problematic...?


#3 Captain Goatse   Banned   -  Reputation: 100

Like
Likes
Like

Posted 05 April 2000 - 06:35 PM

Yeah, maybe, but I don''t know where are these free web accounts?

Time comes, time goes and I only am.

#4 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 05 April 2000 - 07:23 PM

xoom.com, 50megs.com, homestead.com, yahoo.com the list could go on forever

#5 Captain Goatse   Banned   -  Reputation: 100

Like
Likes
Like

Posted 06 April 2000 - 03:22 AM

Now I have it it''s all in here

http://www.geocities.com/opv99/


Time comes, time goes and I only am.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS