1
PacMan i netbeans.. Hjälp!
Postat av Jonsus den 1 Juni 2009, 14:10
7 kommentarer · 73 träffar
Behöver lite hjälp, klarar inte att fixa kollisionskontroll mellan matrisen och objektet.
Board klassen:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
public class Board {
public int board[][] = {
{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},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,1},
{1,0,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,0,1},
{1,0,0,0,0,1,0,0,0,1,0,0,0,1 ,0,0,0,0,1},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,1,1,0,1,0,0,0,0,0,0,0,1 ,0,1,1,0,1},
{1,0,1,1,0,1,0,1,1,0,1,1,0,1 ,0,1,1,0,1},
{0,0,0,0,0,0,0,1,0,0,0,1,0,0 ,0,0,0,0,0},
{1,1,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,1,1},
{1,1,1,1,0,1,0,0,0,0,0,0,0,1 ,0,1,1,1,1},
{1,1,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,1,1},
{1,0,0,0,0,1,0,0,0,1,0,0,0,1 ,0,0,0,0,1},
{1,0,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,1},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,1,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} };
int size = 35;
int row=0;
int col=0;
int xmat = 0;
int ymat = 0;
private Player p;
Image img = Toolkit.getDefaultToolkit().ge tImage("img/pac.PNG");
public Board()
{
}
public void paint (Graphics g)
{
for(row=0; row < board.length; row++)
{
for(col=0; col < board.length; col++)
{
switch (board[row][col])
{
case 0:
{
g.setColor(Color.BLACK);
g.fillRect(xmat,ymat,size,si ze);
g.setColor(Color.BLACK);
g.drawRect(xmat,ymat,size,si ze);
}
break;
case 1:
{
g.setColor(Color.blue);
g.fillRect(xmat,ymat,size,si ze);
g.setColor(Color.blue);
g.drawRect(xmat,ymat,size,si ze);
}
break;
}
xmat = xmat + 35;
}
ymat = ymat + 35;
xmat = 0;
}
ymat = 0;
}
}
PLAYER KLASSEN:
public class Player {
int xpos=40;
int ypos=40;
int stepSize=1;
Image img = Toolkit.getDefaultToolkit().ge tImage("img/pac.PNG");
int direction=0;
public Board b;
public Player() {
b = new Board();
}
public void draw(Graphics g) {
g.setColor(Color.yellow);
g.fillRect(xpos, ypos, 20,20);
g.drawRect(xpos,ypos,20,20);
g.drawImage(img, b.xmat, b.ymat, null);
}
public void playerMove(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
direction=1;
System.out.println("UPP");
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
direction=2;
System.out.println("HÖGER");
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
direction=3;
System.out.println("NER");
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
direction=4;
System.out.println("VÄNSTER");
}
}
public void move(){
switch ( direction ) {
case 1 : //Upp
ypos--;
break;
case 2 : //Höger
xpos++;
break;
case 3 : //Ner
ypos++;
break;
case 4 : //Vänster
xpos--;
break;
}
if(xpos < 0 || ypos < 0 || xpos > 655 || ypos > 655){
direction=0;
}
KOLLISIONSDETEKTION!
}
}
Hjälp! :)
Board klassen:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
public class Board {
public int board[][] = {
{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},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,1},
{1,0,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,0,1},
{1,0,0,0,0,1,0,0,0,1,0,0,0,1 ,0,0,0,0,1},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,1,1,0,1,0,0,0,0,0,0,0,1 ,0,1,1,0,1},
{1,0,1,1,0,1,0,1,1,0,1,1,0,1 ,0,1,1,0,1},
{0,0,0,0,0,0,0,1,0,0,0,1,0,0 ,0,0,0,0,0},
{1,1,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,1,1},
{1,1,1,1,0,1,0,0,0,0,0,0,0,1 ,0,1,1,1,1},
{1,1,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,1,1},
{1,0,0,0,0,1,0,0,0,1,0,0,0,1 ,0,0,0,0,1},
{1,0,1,1,0,1,0,1,1,1,1,1,0,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,1},
{1,0,1,1,0,1,1,1,0,1,0,1,1,1 ,0,1,1,0,1},
{1,0,0,0,0,0,0,0,0,1,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} };
int size = 35;
int row=0;
int col=0;
int xmat = 0;
int ymat = 0;
private Player p;
Image img = Toolkit.getDefaultToolkit().ge tImage("img/pac.PNG");
public Board()
{
}
public void paint (Graphics g)
{
for(row=0; row < board.length; row++)
{
for(col=0; col < board.length; col++)
{
switch (board[row][col])
{
case 0:
{
g.setColor(Color.BLACK);
g.fillRect(xmat,ymat,size,si ze);
g.setColor(Color.BLACK);
g.drawRect(xmat,ymat,size,si ze);
}
break;
case 1:
{
g.setColor(Color.blue);
g.fillRect(xmat,ymat,size,si ze);
g.setColor(Color.blue);
g.drawRect(xmat,ymat,size,si ze);
}
break;
}
xmat = xmat + 35;
}
ymat = ymat + 35;
xmat = 0;
}
ymat = 0;
}
}
PLAYER KLASSEN:
public class Player {
int xpos=40;
int ypos=40;
int stepSize=1;
Image img = Toolkit.getDefaultToolkit().ge tImage("img/pac.PNG");
int direction=0;
public Board b;
public Player() {
b = new Board();
}
public void draw(Graphics g) {
g.setColor(Color.yellow);
g.fillRect(xpos, ypos, 20,20);
g.drawRect(xpos,ypos,20,20);
g.drawImage(img, b.xmat, b.ymat, null);
}
public void playerMove(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
direction=1;
System.out.println("UPP");
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
direction=2;
System.out.println("HÖGER");
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
direction=3;
System.out.println("NER");
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
direction=4;
System.out.println("VÄNSTER");
}
}
public void move(){
switch ( direction ) {
case 1 : //Upp
ypos--;
break;
case 2 : //Höger
xpos++;
break;
case 3 : //Ner
ypos++;
break;
case 4 : //Vänster
xpos--;
break;
}
if(xpos < 0 || ypos < 0 || xpos > 655 || ypos > 655){
direction=0;
}
KOLLISIONSDETEKTION!
}
}
Hjälp! :)






