Programming
Help with java tile game

Question Description

Hi i'm writing a tile game(with no external engine) and I'm having problems with changing one tile to another. I have tried everything I can think of..here's the code (p.s  i am new to java so you will have to guide me)


Board Class


package boards;

import graphics.levelselect;

import graphics.menubar.MouseHandler;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.Rectangle;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JPanel;

import javax.swing.Timer;

import sound.code.SoundManager;

import sound.code.sound;

import Core.code.PlayerClass;

import Maps.Map1;

public class Board extends JPanel implements ActionListener{

//Double buffering

    Image dbImage;

    Graphics dbg;

Rectangle levelselect = new Rectangle(150, 100, 100, 25);

private boolean cherry = false;

    boolean mainmenu = true;

private boolean win = false;

private String Message = "";

private String fab2 = "Health";

private String fab = "Score";

private Timer timer;

private PlayerClass p;

private Map1 map;

private int score = 0;

   

    private int health = 2;

public Board() {

map = new Map1();

p = new PlayerClass();

addKeyListener(new Al());

setFocusable(true);

timer = new Timer(25, this);

timer.start();

        addMouseListener(new MouseHandler());

        addMouseMotionListener(new MouseHandler());

}

public void actionPerformed(ActionEvent e) {

SoundManager s = new SoundManager(){

@Override

public void initSounds(){

sounds.add(new sound("cherry", sound.getURL("cherry.wav")));

        }

};

if(health == 0){

Message = "You have failed to beat the maze!";

win = true;

}

if(map.getMap(p.gettileX(), p.gettileY()).equals("f")){

Message = "Congrats You Have Beaten The Maze";

win = true;

}

if(map.getMap(p.gettileX(), p.gettileY()).equals("c")){

score++;

s.playSound("cherry");

   s.stopSound("cherry");

}

repaint();

}

public void paint(Graphics g) {

super.paint(g);

if (!win) {

for (int y = 0; y < 14; y++) {

for (int x = 0; x < 14; x++) {

if (map.getMap(x, y).equals("b")) {

g.drawImage(map.getBack(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("m")) {

g.drawImage(map.getMud(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("f")) {

g.drawImage(map.getFinish(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("c")) {

g.drawImage(map.getCherry(), x * 32, y * 32, null);

}

}

}

g.drawImage(p.getPlayer(), p.gettileX() * 32, p.gettileY() * 32, null);

String s = fab + Integer.toString(score);

Font font = new Font("Serif", Font.BOLD, 32);

g.setFont(font);

g.setColor(Color.BLACK);

g.drawString(s, 20 + 1, 20 - 1);

g.setColor(new Color(  0, 255,   0));

g.drawString(s, 20, 20);

String f = fab2 + Integer.toString(health);

Font font1 = new Font("Serif", Font.BOLD, 32);

g.setFont(font1);

g.setColor(Color.BLACK);

g.drawString(f, 180 + 1, 20 - 1);

g.setColor(new Color(  0, 255,   0));

g.drawString(f, 180, 20);

}

Font cat = new Font("Serif", Font.BOLD, 32);

        g.setFont(cat);

        g.setColor(Color.BLACK);

       

        if (win) {

g.setColor(Color.BLUE); 

g.setFont(cat);

g.drawString(Message, 32, 32);

dbImage = createImage(getWidth(), getHeight());

       dbg = dbImage.getGraphics();

       draw(dbg);

       g.drawImage(dbImage, 0, 0, this);

}

}

private void draw(Graphics g) {

g.drawString(Message, 32, 32);

g.fillRect(levelselect.x, levelselect.y, levelselect.width, levelselect.height);

g.setFont(new Font("Arial", Font.BOLD, 12));

        g.setColor(Color.GRAY);

        g.drawString("Back to Level Select", levelselect.x+20, levelselect.y+17);

        g.setColor(Color.CYAN);

}

public class Al extends KeyAdapter{

public void keyPressed(KeyEvent e){

int keycode = e.getKeyCode();

if (keycode == KeyEvent.VK_W) {

if (!map.getMap(p.gettileX(), p.gettileY() - 1).equals("m")) {

p.Move(0, -1);

}

}

if (keycode == KeyEvent.VK_A) {

if (!map.getMap(p.gettileX() - 1, p.gettileY()).equals("m")) {

p.Move(-1, 0);

}

}

if (keycode == KeyEvent.VK_S) {

if (!map.getMap(p.gettileX(), p.gettileY() + 1).equals("m")) {

p.Move(0, 1);

}

}

if (keycode == KeyEvent.VK_D) {

if (!map.getMap(p.gettileX() + 1, p.gettileY()).equals("m")) {

p.Move(1, 0);

}

}

if (keycode == KeyEvent.VK_UP) {

if (!map.getMap(p.gettileX(), p.gettileY() - 1).equals("m")) {

p.Move(0, -1);

}

}

if (keycode == KeyEvent.VK_LEFT) {

if (!map.getMap(p.gettileX() - 1, p.gettileY()).equals("m")) {

p.Move(-1, 0);

}

}

if (keycode == KeyEvent.VK_DOWN) {

if (!map.getMap(p.gettileX(), p.gettileY() + 1).equals("m")) {

p.Move(0, 1);

}

}

if (keycode == KeyEvent.VK_RIGHT) {

if (!map.getMap(p.gettileX() + 1, p.gettileY()).equals("m")) {

p.Move(1, 0);

}

}

}

public void keyRelased(KeyEvent e){

}

   public void keyTyped(KeyEvent e){

   

   

   }

}

public class MouseHandler extends MouseAdapter {

        @Override

        public void mouseMoved(MouseEvent e){

           

        }

@Override

    public void mousePressed(MouseEvent e){

        int mx = e.getX();

        int my = e.getY();

        if(mx > levelselect.x && mx < levelselect.x+levelselect.width && mx > levelselect.x && my < levelselect.y+levelselect.height && my > levelselect.y){

        levelselect f = new levelselect();

            setVisible(false);

       

        }

       

    }

}

}

package boards;

import graphics.levelselect;

import graphics.menubar.MouseHandler;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.Rectangle;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JPanel;

import javax.swing.Timer;

import sound.code.SoundManager;

import sound.code.sound;

import Core.code.PlayerClass;

import Maps.Map1;

public class Board extends JPanel implements ActionListener{

//Double buffering

    Image dbImage;

    Graphics dbg;

Rectangle levelselect = new Rectangle(150, 100, 100, 25);

private boolean cherry = false;

    boolean mainmenu = true;

private boolean win = false;

private String Message = "";

private String fab2 = "Health";

private String fab = "Score";

private Timer timer;

private PlayerClass p;

private Map1 map;

private int score = 0;

   

    private int health = 2;

public Board() {

map = new Map1();

p = new PlayerClass();

addKeyListener(new Al());

setFocusable(true);

timer = new Timer(25, this);

timer.start();

        addMouseListener(new MouseHandler());

        addMouseMotionListener(new MouseHandler());

}

public void actionPerformed(ActionEvent e) {

SoundManager s = new SoundManager(){

@Override

public void initSounds(){

sounds.add(new sound("cherry", sound.getURL("cherry.wav")));

        }

};

if(health == 0){

Message = "You have failed to beat the maze!";

win = true;

}

if(map.getMap(p.gettileX(), p.gettileY()).equals("f")){

Message = "Congrats You Have Beaten The Maze";

win = true;

}

if(map.getMap(p.gettileX(), p.gettileY()).equals("c")){

score++;

s.playSound("cherry");

   s.stopSound("cherry");

}

repaint();

}

public void paint(Graphics g) {

super.paint(g);

if (!win) {

for (int y = 0; y < 14; y++) {

for (int x = 0; x < 14; x++) {

if (map.getMap(x, y).equals("b")) {

g.drawImage(map.getBack(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("m")) {

g.drawImage(map.getMud(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("f")) {

g.drawImage(map.getFinish(), x * 32, y * 32, null);

}

if (map.getMap(x, y).equals("c")) {

g.drawImage(map.getCherry(), x * 32, y * 32, null);

}

}

}

g.drawImage(p.getPlayer(), p.gettileX() * 32, p.gettileY() * 32, null);

String s = fab + Integer.toString(score);

Font font = new Font("Serif", Font.BOLD, 32);

g.setFont(font);

g.setColor(Color.BLACK);

g.drawString(s, 20 + 1, 20 - 1);

g.setColor(new Color(  0, 255,   0));

g.drawString(s, 20, 20);

String f = fab2 + Integer.toString(health);

Font font1 = new Font("Serif", Font.BOLD, 32);

g.setFont(font1);

g.setColor(Color.BLACK);

g.drawString(f, 180 + 1, 20 - 1);

g.setColor(new Color(  0, 255,   0));

g.drawString(f, 180, 20);

}

Font cat = new Font("Serif", Font.BOLD, 32);

        g.setFont(cat);

        g.setColor(Color.BLACK);

       

        if (win) {

g.setColor(Color.BLUE); 

g.setFont(cat);

g.drawString(Message, 32, 32);

dbImage = createImage(getWidth(), getHeight());

       dbg = dbImage.getGraphics();

       draw(dbg);

       g.drawImage(dbImage, 0, 0, this);

}

}

private void draw(Graphics g) {

g.drawString(Message, 32, 32);

g.fillRect(levelselect.x, levelselect.y, levelselect.width, levelselect.height);

g.setFont(new Font("Arial", Font.BOLD, 12));

        g.setColor(Color.GRAY);

        g.drawString("Back to Level Select", levelselect.x+20, levelselect.y+17);

        g.setColor(Color.CYAN);

}

public class Al extends KeyAdapter{

public void keyPressed(KeyEvent e){

int keycode = e.getKeyCode();

if (keycode == KeyEvent.VK_W) {

if (!map.getMap(p.gettileX(), p.gettileY() - 1).equals("m")) {

p.Move(0, -1);

}

}

if (keycode == KeyEvent.VK_A) {

if (!map.getMap(p.gettileX() - 1, p.gettileY()).equals("m")) {

p.Move(-1, 0);

}

}

if (keycode == KeyEvent.VK_S) {

if (!map.getMap(p.gettileX(), p.gettileY() + 1).equals("m")) {

p.Move(0, 1);

}

}

if (keycode == KeyEvent.VK_D) {

if (!map.getMap(p.gettileX() + 1, p.gettileY()).equals("m")) {

p.Move(1, 0);

}

}

if (keycode == KeyEvent.VK_UP) {

if (!map.getMap(p.gettileX(), p.gettileY() - 1).equals("m")) {

p.Move(0, -1);

}

}

if (keycode == KeyEvent.VK_LEFT) {

if (!map.getMap(p.gettileX() - 1, p.gettileY()).equals("m")) {

p.Move(-1, 0);

}

}

if (keycode == KeyEvent.VK_DOWN) {

if (!map.getMap(p.gettileX(), p.gettileY() + 1).equals("m")) {

p.Move(0, 1);

}

}

if (keycode == KeyEvent.VK_RIGHT) {

if (!map.getMap(p.gettileX() + 1, p.gettileY()).equals("m")) {

p.Move(1, 0);

}

}

}

public void keyRelased(KeyEvent e){

}

   public void keyTyped(KeyEvent e){

   

   

   }

}

public class MouseHandler extends MouseAdapter {

        @Override

        public void mouseMoved(MouseEvent e){

           

        }

@Override

    public void mousePressed(MouseEvent e){

        int mx = e.getX();

        int my = e.getY();

        if(mx > levelselect.x && mx < levelselect.x+levelselect.width && mx > levelselect.x && my < levelselect.y+levelselect.height && my > levelselect.y){

        levelselect f = new levelselect();

            setVisible(false);

       

        }

       

    }

}

}

Map Class

package Maps;

import java.awt.*;

import java.util.*;

import javax.swing.*;

public class Map1 {

private Scanner map;

private String Tiles[] = new String[14];

    public Image  back,

                  finish,

                  cherry,

                  mud;

   

    public Map1(){

    //images

   

    ImageIcon img = new ImageIcon(getClass().getResource("/Textures/map1.png"));

    back = img.getImage();

    img = new ImageIcon(getClass().getResource("/Textures/mud.png"));

    mud = img.getImage();

    img = new ImageIcon(getClass().getResource("/Textures/flag.png"));

    finish = img.getImage();

    img = new ImageIcon(getClass().getResource("/Textures/cherry.png"));

    cherry = img.getImage();

   

   

   

         // files

openFile();

readfile();

closeFile();

}

    public Image getBack(){

    return back;

    }

   

    public Image getMud(){

    return mud;

    }

   

    public Image getFinish(){

    return finish;

    }

    public Image getCherry(){

    return cherry;

    }

   

   

   

   

    public String getMap(int x, int y){

String index = Tiles[y].substring(x, x + 1);

return index;

}

public void openFile() {

try{

map = new Scanner(getClass().getClassLoader().getResourceAsStream("Text/1.txt"));

}catch(Exception e){

  System.out.print("Error Loading Map");

}

}

public void readfile() {

while(map.hasNext()){

for(int i = 0; i < 14; i++){

Tiles[i] = map.next();

}

}

}

public void closeFile() {

map.close();

}

}


This question has not been answered.

Create a free account to get help with this and any other question!

Brown University





1271 Tutors

California Institute of Technology




2131 Tutors

Carnegie Mellon University




982 Tutors

Columbia University





1256 Tutors

Dartmouth University





2113 Tutors

Emory University





2279 Tutors

Harvard University





599 Tutors

Massachusetts Institute of Technology



2319 Tutors

New York University





1645 Tutors

Notre Dam University





1911 Tutors

Oklahoma University





2122 Tutors

Pennsylvania State University





932 Tutors

Princeton University





1211 Tutors

Stanford University





983 Tutors

University of California





1282 Tutors

Oxford University





123 Tutors

Yale University





2325 Tutors