Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (533)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1] 2
1  Game Development / Newbie & Debugging Questions / Re: Rectangular Collision with Tiles not Working Properly on: 2011-12-19 05:42:58
Thanks for the replies, I'm really sorry that I haven't posted in weeks. I've been doing lots of research with this collision, and found out point collision was better for what I was doing. Since the rectangular collision wasn't good and the algorithm wasn't good either.

But even though that, I'm just testing this new collision from a Java book I read, and for some reason, the tiles can't be drawn onto the screen. Any Ideas or thoughts to fix this?

Here are the important source codes.

Smiley
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
public class Smiley extends Sprite {

    public int jCount = 0;
    public float g = .002f;

    public Smiley() {
        i = new ImageIcon(this.getClass().getResource("/extrememario/smiley/sprites/Face1.PNG")).getImage();
        x = 250;
        y = 250;
    }

    public void update() {
        moveX();
        moveY();
    }

    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            setDx(6);
        } else if (keyCode == KeyEvent.VK_LEFT) {
            setDx(-6);
        }
        if (keyCode == KeyEvent.VK_UP) {
            if (jCount == 0) {
                setDy(-3);
                jCount = 1;
                if (y < 150 && jCount == 1) {
                    setDy(3);
                }
            } else if (y < 150 && jCount == 1) {
                setDy(3);
            } else if (jCount == 1 && y >= 250) {
                jCount = 0;
            }

        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            setDx(0);
        } else if (keyCode == KeyEvent.VK_LEFT) {
            setDx(0);
        }

        if (keyCode == KeyEvent.VK_UP) {
            setDy(3);
        }

    }

    public void keyTyped(KeyEvent e) {
    }

    public Rectangle colRec() {
        return new Rectangle(Math.round(x), Math.round(y), getWidth(), getHeight() + 3);
    }

    public boolean collisionTRight(Rectangle r) {
        if (x >= r.x + r.width) {
            if (r.intersects(colRec())) {
                x = r.x + r.width;
                System.out.println("right");
                return true;
            } else if (!r.intersects(colRec())) {
                return false;
            }
        }

        return false;
    }

    public boolean collisionTLeft(Rectangle r) {
        if (x <= r.x) {
            if (r.intersects(colRec())) {
                x = r.x - colRec().width;
                System.out.println("left");
                return true;
            } else if (!r.intersects(colRec())) {
                return false;
            }
        }

        return false;
    }

    public boolean collisionTTop(Rectangle r) {
        //if (y >= r.y) {
       if (r.intersects(colRec())) {
            y = r.y - colRec().height;
            System.out.println("top");
            return true;
        } else if (!r.intersects(colRec())) {
            return false;
        }
        //}
       return false;
    }

    public boolean collisionTBottom(Rectangle r) {
        //if (y <= r.y + r.getHeight()) {
       if (r.intersects(colRec())) {
            y = r.y + r.height;
            System.out.println("bottom");
            return true;
        } else if (!r.intersects(colRec())) {
            return false;
        }
        //}

        return false;
    }

    public float moveX() {
        return x = x + getDx();
    }

    public float moveY() {
        return y = y + getDy();
    }

    public Image getFrame() {
        return getImage();
    }
}


Level
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
public class Level extends TileMap{

    public ArrayList<Image> tilesArray = new ArrayList();
    public Point pointCache = new Point();

    public Level(){
        super(16,16);
    }
    public synchronized TileMap loadMap(URL url) throws IOException {        
        ArrayList lines = new ArrayList();
        int width = 16;
        int height = 16;
        File f;
        try{
           f = new File(url.toURI());
        }catch(URISyntaxException e){
           f = new File(url.getPath());
        }
        //BufferedReader reads text files
       BufferedReader reader = new BufferedReader(new FileReader(f));
        while (true) {
            String line = reader.readLine();
            //no more lines to read
           if (line == null) {
                reader.close();
                break;
            }
            //Add lines, except with comments(#)
           if (!line.startsWith("#")) {
                lines.add(line);
                width = Math.max(width, line.length());
            }
        }

        height = lines.size();
        TileMap newMap = new TileMap(width, height);
        for (int y = 0; y < height; y++) {
            String line = (String) lines.get(y);
            for (int x = 0; x < line.length(); x++) {
                char ch = line.charAt(x);

                //check if the char represents tile          
               if (ch =='1') {
                    newMap.setTile(x, y, new ImageIcon(this.getClass().getResource("/extrememario/levels/normal/1.png")).getImage());
                    System.out.println(newMap.getHeight());
                }
            }
        }

        return newMap;
    }
    public void drawLevel(Graphics g){      
        for (int y = 0; y < this.getHeight(); y ++){
            for(int x = 0; x < this.getWidth(); x ++){
                Image image = this.getTile(x, y);
                if(image != null){
                    g.drawImage(image, TileMapRender.tilesToPixels(x), TileMapRender.tilesToPixels(y), null);
                }
            }
        }
    }

    public Point getTileCollision(Sprite sprite, float newX, float newY) {
        float fromX = Math.min(sprite.getX(), newX);
        float fromY = Math.min(sprite.getY(), newY);
        float toX = Math.min(sprite.getX(), newX);
        float toY = Math.min(sprite.getY(), newY);

        int fromTileX = TileMapRender.pixelsToTiles(fromX);
        int fromTileY = TileMapRender.pixelsToTiles(fromY);
        int toTileX = TileMapRender.pixelsToTiles(toX + sprite.getWidth() - 1);
        int toTileY = TileMapRender.pixelsToTiles(toY + sprite.getHeight() - 1);

        for (int x = fromTileX; x <= toTileX; x++) {
            for (int y = fromTileY; y <= toTileY; y++) {
                if (x < 0 || x > this.getWidth()
                        || this.getTile(x, y) != null) {
                    pointCache.setLocation(x, y);
                    return pointCache;

                }
            }
        }
        return null;
    }
}


TileMap
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
import extrememario.Sprite;
import java.awt.Image;
import java.util.Iterator;
import java.util.LinkedList;

    public class TileMap {

        public Image[][] tiles;
        public LinkedList sprites;

        public TileMap(int w, int h) {
            tiles = new Image[w][h];
            sprites = new LinkedList();
        }

        public int getWidth() {
            return tiles.length;
        }

        public int getHeight() {
            return tiles[0].length;
        }

        public Image getTile(int x, int y) {
            if (x < 0 || x >= getWidth()
                    || y < 0 || y >= getHeight()) {
                return null;
            } else {
                return tiles[x][y];
            }
        }

        public void setTile(int x, int y, Image tile) {
            tiles[x][y] = tile;
        }

        public void addSprite(Sprite sprite) {
            sprites.add(sprite);
        }

        public void removeSprite(Sprite sprite) {
            sprites.remove(sprite);
        }

        public Iterator getSprites() {
            return sprites.iterator();
        }
    }


TileMapRender
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
public class TileMapRender {
   
    public static int TileSize = 16;
    //the size in bits of the tile
   //Math.pow(2,Tile_Size_Bits) = TileSize
   public static int TileSizeBits = 4;
   
    public static int pixelsToTiles(float pixels){
        return pixelsToTiles(Math.round(pixels));
    }
   
    public static int pixelsToTiles(int pixels){
        return pixels >> TileSizeBits;
    }
   
    public static int tilesToPixels(int numTiles){
   
        return numTiles << TileSizeBits;
    }
   
}


Test
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
public class Test extends Level {

    public Test(){
        getMap();
    }

    public void getMap(){
        try {
            this.loadMap(this.getClass().getResource("/extrememario/levels/testlevel/Map.txt"));
        } catch (IOException e) {
            System.out.println(e.toString());
        }
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
public class MainConfig extends JPanel implements Runnable {

    public Smiley mario;
    public Thread mainLoop;
    public Test test = new Test();

    public MainConfig() {
        mario = new Smiley();
        setFocusable(true);
        addKeyListener(new KL());
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }
    public Image bg = new ImageIcon(this.getClass().getResource("/extrememario/BackgroundDemoStage.png")).getImage();

    @Override
    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        g.drawImage(mario.getFrame(),Math.round(mario.moveX()), Math.round(mario.moveY()), null);
        test.drawLevel(g);
        g.dispose();
    }

    public class KL extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }
    }

    public void updateCollisionPlayer(){
       
    }
    @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            mario.update();
            repaint();
            try {
                Thread.sleep(20);
            } catch (Exception e) {
            }
        }

    }
}


Sprite
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
public class Sprite {

    public float x, y, dx, dy;
    public Image i;

    public int getWidth() {
        return i.getWidth(null);
    }

    public int getHeight() {
        return i.getHeight(null);
    }

    public float getX() {
        return x - getWidth() / 2;
    }

    public float getY() {
        return y - getHeight() / 2;
    }

    public float getDy() {
        return dy;
    }

    public float getDx() {
        return dx;
    }

    public void setDy(float my) {
        dy = my;
    }

    public void setDx(float mx) {
        dx = mx;
    }

    public Image getImage() {
        return i;
    }
}
2  Game Development / Newbie & Debugging Questions / Collision with Tiles not Working Properly on: 2011-11-27 06:34:26
I've been testing and trying to debug my tile collision, and I can't figure out why my sprite goes through the top of the tiles. Any ways to fix this.

Here are the source codes dealing with this problem

Smiley
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
import collisiontest.Sprite;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.Rectangle;
import javax.swing.ImageIcon;

public class Smiley extends Sprite {

    public int jCount = 0;
    public float g = .002f;

    public Smiley() {
        i = new ImageIcon(this.getClass().getResource("/collisiontest/smiley/sprites/Face1.png")).getImage();
        x = 250;
        y = 250;
    }

    public void update() {
        moveX();
        moveY();
    }

    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            setDx(6);
        } else if (keyCode == KeyEvent.VK_LEFT) {
            setDx(-6);
        }
        if (keyCode == KeyEvent.VK_UP) {
            if (jCount == 0) {
                setDy(-3);
                jCount = 1;
            } else if (y < 150 && jCount == 1) {
                setDy(3);
            }

        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            setDx(0);
        } else if (keyCode == KeyEvent.VK_LEFT) {
            setDx(0);
        }

        if (keyCode == KeyEvent.VK_UP) {
            setDy(3);
        }

    }

    public void keyTyped(KeyEvent e) {
    }

    public Rectangle colRec() {
        return new Rectangle(Math.round(x + 4), Math.round(y + 3), getWidth() - 10, getHeight() - 5);
    }

    public boolean collisionTRight(Rectangle r, Smiley smiley) {
        if (smiley.x >= r.x + r.width) {
            if (r.intersects(smiley.colRec())) {
                smiley.x = r.x + r.width;
                return true;
            } else if (!r.intersects(smiley.colRec())) {
                return false;
            }
        }

        return false;
    }

    public boolean collisionTLeft(Rectangle r, Smiley smiley) {
        if (smiley.x <= r.x) {
            if (r.intersects(smiley.colRec())) {
                smiley.x = r.x - smiley.colRec().width;
                return true;
            } else if (!r.intersects(smiley.colRec())) {
                return false;
            }
        }

        return false;
    }

    public boolean collisionTTop(Rectangle r, Smiley smiley) {
        if (smiley.y >= r.y) {
            if (r.intersects(smiley.colRec())) {
                smiley.y = r.y - smiley.colRec().height;
                return true;
            } else if (!r.intersects(smiley.colRec())) {
                return false;
            }
        }
        return false;
    }

    public boolean collisionTBottom(Rectangle r, Smiley smiley) {
        if (smiley.y <= r.y + r.getHeight()) {
            if (r.intersects(smiley.colRec())) {
                smiley.y = r.y + r.height;
                return true;
            } else if (!r.intersects(smiley.colRec())) {
                return false;
            }
        }

        return false;
    }

    public float moveX() {
        return x = x + getDx();
    }

    public float moveY() {
        return y = y + getDy();
    }

    public Image getFrame() {
        return getImage();
    }
}


Level
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
133  
134  
135  
136  
137  
138  
139  
140  
141  
142  
143  
144  
145  
146  
147  
148  
149  
150  
151  
152  
153  
154  
155  
156  
157  
158  
159  
160  
161  
162  
163  
164  
165  
166  
167  
168  
169  
170  
171  
172  
173  
174  
175  
176  
package collisiontest.levels;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ImageIcon;
import collisiontest.levels.Element;
import collisiontest.smiley.Smiley;

public class Level {

    public Element[][] overall;
    public Element[][] overallLevelColision;
    public Element[] elements;
    public Rectangle[][] collisionRecs;
    public Rectangle[] recColElements;
    public Rectangle[][] collisionRecsLeft;
    public Rectangle[] recColElementsLeft;
    public Rectangle[][] collisionRecsRight;
    public Rectangle[] recColElementsRight;
    public Rectangle[][] collisionRecsTop;
    public Rectangle[] recColElementsTop;
    public Rectangle[][] collisionRecsBottom;
    public Rectangle[] recColElementsBottom;
    ///////////Ints///////////
   public int Lines;
    public int levelLength;
    public int leftBorder;
    public int rightBorder;
    public int unit = 16;
    /////////Images/////////
   public Image background;
    public Image a5;
    ///////Templetes////////
   Templetes t13;
    ////////Strings////////
   public String levelName;
    ///////Booleans////////
   public boolean screenStart = false;
    public boolean menu = false;
    public boolean gameOver = false;
    public boolean canPlayBack;
    ///////Add to level/////////
   public Level currentLevel;
    public int playingLevel;

    public Image getBackground() {
        return background;
    }

    public Level(String n) {
        background = new ImageIcon(this.getClass().getResource("/collisiontest/levels/" + n + "/background.png")).getImage();
        a5 = new ImageIcon(this.getClass().getResource("/collisiontest/levels/" + n + "/A5.png")).getImage();

    }

    public Level() {
    }

    public void defineLevel(String[] definitions) {
        overall = new Element[Lines][definitions[0].length()];
        collisionRecs = new Rectangle[Lines][definitions[0].length()];
        collisionRecsLeft = new Rectangle[Lines][definitions[0].length()];
        collisionRecsRight = new Rectangle[Lines][definitions[0].length()];
        collisionRecsTop = new Rectangle[Lines][definitions[0].length()];
        collisionRecsBottom = new Rectangle[Lines][definitions[0].length()];
        levelLength = definitions[0].length() * unit;
        rightBorder = 500;

        int elementsCounter = 0;
        // Blocks side names facing my right/left
       for (int i = 0; i < definitions.length; i++) {
            char[] lineDefinition = definitions[i].toCharArray();
            for (int j = 0; j < lineDefinition.length; j++) {
                if (lineDefinition[j] == ':') {
                    overall[i][j] = null;
                    collisionRecs[i][j] = null;
                    collisionRecsLeft[i][j] = null;
                    collisionRecsRight[i][j] = null;
                    collisionRecsTop[i][j] = null;
                    collisionRecsBottom[i][j] = null;
                } else if (lineDefinition[j] == 'E') {
                    t13 = new Templetes(j * unit, i * unit, unit, unit, 1, a5);
                    overall[i][j] = t13;
                    collisionRecs[i][j] = t13.getCollisionRec();
                    Rectangle rLeft = new Rectangle(j * unit, i * unit, 4, unit);
                    Rectangle rRight = new Rectangle(j * unit + unit - 5, i * unit, 4, unit);
                    Rectangle rTop = new Rectangle(j * unit, i * unit, unit, 4);
                    Rectangle rBottom = new Rectangle(j * unit, (i * unit) + unit - 5, unit, 4);
                    collisionRecsLeft[i][j] = rLeft;
                    collisionRecsRight[i][j] = rRight;
                    collisionRecsTop[i][j] = rTop;
                    collisionRecsBottom[i][j] = rBottom;
                    elementsCounter++;
                }
            }
        }
        elements = new Element[elementsCounter];
        recColElements = new Rectangle[elementsCounter];
        recColElementsLeft = new Rectangle[elementsCounter];
        recColElementsRight = new Rectangle[elementsCounter];
        recColElementsTop = new Rectangle[elementsCounter];
        recColElementsBottom = new Rectangle[elementsCounter];

        int counter = 0;

        for (int i = 0; i < overall.length; i++) {
            for (int j = 0; j < overall[i].length; j++) {
                if (overall[i][j] != null) {
                    elements[counter] = overall[i][j];
                    recColElements[counter] = collisionRecs[i][j];
                    recColElementsLeft[counter] = collisionRecsLeft[i][j];
                    recColElementsRight[counter] = collisionRecsRight[i][j];
                    recColElementsTop[counter] = collisionRecsTop[i][j];
                    recColElementsBottom[counter] = collisionRecsBottom[i][j];
                    counter++;
                }
            }
        }




    }

    public void drawLevel(Graphics2D g) {
        try {
            for (int i = 0; i < elements.length; i++) {
                elements[i].draw(g);
                g.draw(recColElementsLeft[i]);
                g.draw(recColElementsRight[i]);
                g.draw(recColElementsTop[i]);
                g.draw(recColElementsBottom[i]);
            }
        } catch (Exception e) {
            System.out.toString();
        }

    }

    public void drawBackground(Graphics2D g) {
        g.drawImage(getBackground(), 0, 0, null);
    }

    ////Override methods//////
   public void drawLevelObjects(Graphics2D g) {
    }

    public void update(Smiley s, Level l) {
    }
    /////////////Other elements/////////////

    public void keyPressed(KeyEvent e) {
    }

    public void keyReleased(KeyEvent e) {
    }

    public void mouseMoved(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

}


Sprite
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
import java.awt.Image;

public class Sprite {

    public float x, y, dx, dy;
    public Image i;

    public int getWidth() {
        return i.getWidth(null);
    }

    public int getHeight() {
        return i.getHeight(null);
    }

    public float getX() {
        return x - getWidth() / 2;
    }

    public float getY() {
        return y - getHeight() / 2;
    }

    public float getDy() {
        return dy;
    }

    public float getDx() {
        return dx;
    }

    public void setDy(float my) {
        dy = my;
    }

    public void setDx(float mx) {
        dx = mx;
    }

    public Image getImage() {
        return i;
    }
}


TestLevel
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
import collisiontest.levels.Level;
import collisiontest.smiley.Smiley;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;

public class TestLevel extends Level {

    public static final String row1 = ":::::::::::::::::::::::::::::::::::";
    public static final String row2 = ":::::::::::::::::::::::::::::::::::";
    public static final String row3 = ":::::::::::::::::::::::::::::::::::";
    public static final String row4 = ":::::::::::::::::::::::::::::::::::";
    public static final String row5 = ":::::::::::::::::::::::::::::::::::";
    public static final String row6 = ":::::::::::::::::::::::::::::::::::";
    public static final String row7 = ":::::::::::::::::::::::::::::::::::";
    public static final String row8 = ":::::::::::::::::::::::::::::::::::";
    public static final String row9 = ":::::::::::::::::::::::::::::::::::";
    public static final String row10 = ":::::::::::::::::::::::::::::::::::";
    public static final String row11 = ":::::::::::::::::::::::::::::::::::";
    public static final String row12 = ":::::::::::::::::::::::::::::::::::";
    public static final String row13 = ":::::::::::::::::::::::::::::::::::";
    public static final String row14 = ":::::::::::::::::::::::::::::::::::";
    public static final String row15 = "::::::::::::::::::::::::::::EEEEEEE";
    public static final String row16 = "::::::::::::::::::::::::::::EEEEEEE";
    public static final String row17 = "::::::::::::::::::::::::::::EEEEEEE";
    public static final String row18 = "::::::::::::::::::::::::::::EEEEEEE";
    public static final String row19 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row20 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row21 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row22 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row23 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row24 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public static final String row25 = "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
    public Smiley mario = new Smiley();
    ///35 elements in each line

    public TestLevel() {
        super("test");
        Lines = 35;
        String[] definitions = {row1, row2, row3, row4, row5,
            row6, row7, row8, row9, row10, row11, row12, row13,
            row14, row15, row16, row17, row18, row19, row20,
            row21, row22, row23, row24, row25};
        super.defineLevel(definitions);
    }

    @Override
    public void drawLevelObjects(Graphics2D g) {
        drawBackground(g);
        drawLevel(g);
        g.drawImage(mario.getFrame(), Math.round(mario.moveX()), Math.round(mario.moveY()), null);
        g.draw(mario.colRec());
    }

    @Override
    public void update(Smiley m, Level l) {
        for (int i = 0; i < l.Lines; i++) {
            if (m.collisionTLeft(l.recColElementsLeft[i], m)) {
                m.collisionTLeft(l.recColElementsLeft[i], m);
            } else if (m.collisionTRight(l.recColElementsRight[i], m)) {
                m.collisionTRight(l.recColElementsRight[i], m);
            } else if (m.collisionTTop(l.recColElementsTop[i], m)) {
                m.collisionTTop(l.recColElementsTop[i], m);
            } else if (m.collisionTBottom(l.recColElementsBottom[i], m)) {
                m.collisionTBottom(l.recColElementsBottom[i], m);
            }
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        mario.keyPressed(e);
    }

    @Override
    public void keyReleased(KeyEvent e) {
        mario.keyReleased(e);
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
import collisiontest.levels.test.TestLevel;
import collisiontest.smiley.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public Thread mainLoop;
    public TestLevel tl = new TestLevel();

    public MainConfig() {
        setFocusable(true);
        addKeyListener(new KL());
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D)g;
        tl.drawLevelObjects(g2d);
        g.dispose();
    }

    public class KL extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            tl.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            tl.keyReleased(e);
        }
    }

    public void update(){
        tl.update(tl.smiley, tl);
    }
    @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            update();
            repaint();
            try {
                Thread.sleep(20);
            } catch (Exception e) {
            }
        }

    }
}
3  Game Development / Newbie & Debugging Questions / Re: Game Character Jumping Problem on: 2011-11-26 17:56:19
Thanks for the reply.

Thanks for the idea, but I already figured out the problem with the code.But I'll also keep this idea in mind to Smiley.
4  Game Development / Newbie & Debugging Questions / Re: Game Character Jumping Problem on: 2011-11-24 03:39:18
For some reason, Mario couldn't jump this time. Did I code or misunderstand something?

New keyPressed() and keyReleased() under Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
    public void keyPressed(KeyEvent e) {
        float g = 1;
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimRight);
            }
            mr = true;
            ml = false;
            dx = 2;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimLeft);
            }
            mr = false;
            ml = true;
            dx = -2;
        }
        if (keyCode == KeyEvent.VK_UP) {
            if (jCount == 0) {
                if (mr) {
                    currentSprite.getAnimation(jumpAnimRight);
                    dx = 2;
                } else if (ml) {
                    currentSprite.getAnimation(jumpAnimLeft);
                    dx = -2;
                }
                dy = 10;
                dy = dy - g;
                if (dy <= 0) {
                    dy = dy + g;
                }
                if (y >= 250) {
                    dy = 0;
                }
                System.out.println(dy);
            }
        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        float g = 1;
        if (keyCode == KeyEvent.VK_RIGHT) {
            currentSprite.getAnimation(idleAnimRight);
            dx = 0;
            mr = false;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            currentSprite.getAnimation(idleAnimLeft);
            dx = 0;
            ml = false;
        }

        if (keyCode == KeyEvent.VK_UP) {
            if (mr) {
                currentSprite.getAnimation(jumpAnimRight);
            } else if (ml) {
                currentSprite.getAnimation(jumpAnimLeft);
            }
            dy = 0;
            dy = dy + g;
            if(dy >= 10){
                dy = 10;
            }
            if (y >= 250) {
                dy = 0;
                jCount = 0;
            }
            if (keyCode != KeyEvent.VK_RIGHT && keyCode != KeyEvent.VK_LEFT) {
                currentSprite.getAnimation(jumpAnimRight);
                dx = 0;
                jCount = 0;
            }
        }

    }
5  Game Development / Newbie & Debugging Questions / Re: Game Character Jumping Problem on: 2011-11-23 05:15:04
Thanks for you reply.

This is what I get from the output of dy.

1  
2  
3  
4  
5  
6  
7  
8  
..........
-0.012000084
-0.012000084
-0.012000084
-0.012000084
-0.012000084
-0.012000084
...........


6  Game Development / Newbie & Debugging Questions / Re: Game Character Jumping Problem on: 2011-11-20 07:11:19
I've tried out your advice, but for some reason he still won't go up faster and then slower, and then go down slower and then faster.Any thoughts?


Here is the new keyPressed() and keyReleased() in the Mario class

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        float g = 6;
        if (keyCode == KeyEvent.VK_RIGHT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimRight);
            }
            mr = true;
            ml = false;
            dx = 2;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimLeft);
            }
            mr = false;
            ml = true;
            dx = -2;
        }
        if (keyCode == KeyEvent.VK_UP) {
            if (jCount == 0) {
                if (mr) {
                    currentSprite.getAnimation(jumpAnimRight);
                    dx = 2;
                } else if (ml) {
                    currentSprite.getAnimation(jumpAnimLeft);
                    dx = -2;
                }
                if (dy == 0) {
                    dy = 1;
                }
                dy = (float) -(g * (1.002));
                dy = dy + g;
                System.out.println(dy);
            }
        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        float g = 6;
        if (keyCode == KeyEvent.VK_RIGHT) {
            currentSprite.getAnimation(idleAnimRight);
            dx = 0;
            mr = false;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            currentSprite.getAnimation(idleAnimLeft);
            dx = 0;
            ml = false;
        }

        if (keyCode == KeyEvent.VK_UP) {
            if (mr) {
                currentSprite.getAnimation(jumpAnimRight);
            } else if (ml) {
                currentSprite.getAnimation(jumpAnimLeft);
            }
            dy = (float) (g * (1.002));
            dy = dy + g;
            if (keyCode != KeyEvent.VK_RIGHT && keyCode != KeyEvent.VK_LEFT) {
                currentSprite.getAnimation(jumpAnimRight);
                dx = 0;
                jCount = 0;
            }
        }

    }
7  Game Development / Newbie & Debugging Questions / Game Character Jumping Problem on: 2011-11-20 00:03:39
I've been trying to make Mario jump, and I'm having many problems with it. Although I have many problems right now, i rather focus on the main one for now. Which is, how to make him jump up faster and then slower when he is about to reach the peak of his jump, and then fall faster once he touches the peak of his jump. Any way to fix this problem?

Here are the classes involved in his jump

Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
import extrememario.Sprite;
import java.awt.Image;
import java.awt.event.KeyEvent;

/**
 *
 * @author ben
 */

public class Mario extends MarioSprites {

    public float x;
    public float y;
    public boolean mr = false, ml = false, jumping = false, falling = false;
    public int jCount = 0;

    public Mario() {
        currentSprite = new Sprite();
        idleRight();
        idleLeft();
        runningRight();
        runningLeft();
        jumpRight();
        jumpLeft();
        currentSprite.getAnimation(idleAnimRight);
        currentSprite.x = 250;
        currentSprite.y = 250;
        x = currentSprite.x;
        y = currentSprite.y;
    }

    public void update() {
        moveX();
        moveY();
    }

    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimRight);
            }
            mr = true;
            ml = false;
            dx = 2;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            if (!jumping || !falling) {
                currentSprite.getAnimation(runAnimLeft);
            }
            mr = false;
            ml = true;
            dx = -2;
        }
        if (keyCode == KeyEvent.VK_UP) {
            if (jCount == 0) {
                if (mr) {
                    currentSprite.getAnimation(jumpAnimRight);
                    dx = 2;
                } else if (ml) {
                    currentSprite.getAnimation(jumpAnimLeft);
                    dx = -2;
                }
                if (dy == 0) {
                    dy = 1;
                }
                dy = -(dy * (1 + (1 / 5)));
            }
        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            currentSprite.getAnimation(idleAnimRight);
            dx = 0;
            mr = false;
        } else if (keyCode == KeyEvent.VK_LEFT) {
            currentSprite.getAnimation(idleAnimLeft);
            dx = 0;
            ml = false;
        }

        if (keyCode == KeyEvent.VK_UP) {

            if (mr) {
                currentSprite.getAnimation(jumpAnimRight);
            } else if (ml) {
                currentSprite.getAnimation(jumpAnimLeft);
            }
            if (dy < - 10) {
                if (dy == 0) {
                    dy = 1;
                }
                dy = dy * (1 + (1 / 5));
            }
            if (keyCode != KeyEvent.VK_RIGHT && keyCode != KeyEvent.VK_LEFT) {
                currentSprite.getAnimation(jumpAnimRight);
                dx = 0;
                jCount = 0;
            }
        }

    }

    public void keyTyped(KeyEvent e) {
    }

    public float moveX() {
        return x = x + dx;
    }

    public float moveY() {
        return y = y + dy;
    }

    public Sprite sprite() {
        return currentSprite;
    }

    public Image getFrame() {
        return currentSprite.getImage();
    }
}


MarioSprites
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
133  
134  
135  
136  
137  
138  
139  
import extrememario.Animation;
import extrememario.Sprite;
import java.awt.Image;
import javax.swing.ImageIcon;

public class MarioSprites {

    public Animation idleAnimRight;
    public Sprite currentSprite;
    public float dx, dy;
    public Image r1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame0.png")).getImage();
    public Image r2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame1.png")).getImage();
    public Image r3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame2.png")).getImage();
    public Image r4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame3.png")).getImage();
    public Image r5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame4.png")).getImage();

    public void idleRight() {
        idleAnimRight = new Animation();
        idleAnimRight.addFrame(r1, 110);
        idleAnimRight.addFrame(r2, 110);
        idleAnimRight.addFrame(r3, 110);
        idleAnimRight.addFrame(r4, 110);
        idleAnimRight.addFrame(r5, 110);
    }
    public Animation idleAnimLeft;
    public Image l1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft1.png")).getImage();
    public Image l2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft2.png")).getImage();
    public Image l3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft3.png")).getImage();
    public Image l4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft4.png")).getImage();
    public Image l5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft5.png")).getImage();

    public void idleLeft() {
        idleAnimLeft = new Animation();
        idleAnimLeft.addFrame(l1, 110);
        idleAnimLeft.addFrame(l2, 110);
        idleAnimLeft.addFrame(l3, 110);
        idleAnimLeft.addFrame(l4, 110);
        idleAnimLeft.addFrame(l5, 110);
    }
   
    public Animation runAnimRight;
   
    public Image rr1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR1.png")).getImage();
    public Image rr2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR2.png")).getImage();
    public Image rr3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR3.png")).getImage();
    public Image rr4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR4.png")).getImage();
    public Image rr5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR5.png")).getImage();
    public Image rr6 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR6.png")).getImage();
    public Image rr7 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR7.png")).getImage();
    public Image rr8 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR8.png")).getImage();
    public Image rr9 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR9.png")).getImage();
    public Image rr10 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RR10.png")).getImage();

    public void runningRight() {
        runAnimRight = new Animation();
        runAnimRight.addFrame(rr1, 70);
        runAnimRight.addFrame(rr2, 70);
        runAnimRight.addFrame(rr3, 70);
        runAnimRight.addFrame(rr4, 70);
        runAnimRight.addFrame(rr5, 70);
        runAnimRight.addFrame(rr6, 70);
        runAnimRight.addFrame(rr7, 70);
        runAnimRight.addFrame(rr8, 70);
        runAnimRight.addFrame(rr9, 70);
        runAnimRight.addFrame(rr10, 70);
    }
    public Animation runAnimLeft;
    public Image rl1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL1.png")).getImage();
    public Image rl2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL2.png")).getImage();
    public Image rl3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL3.png")).getImage();
    public Image rl4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL4.png")).getImage();
    public Image rl5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL5.png")).getImage();
    public Image rl6 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL6.png")).getImage();
    public Image rl7 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL7.png")).getImage();
    public Image rl8 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL8.png")).getImage();
    public Image rl9 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL9.png")).getImage();
    public Image rl10 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/RL10.png")).getImage();

    public void runningLeft() {
        runAnimLeft = new Animation();
        runAnimLeft.addFrame(rl1, 70);
        runAnimLeft.addFrame(rl2, 70);
        runAnimLeft.addFrame(rl3, 70);
        runAnimLeft.addFrame(rl4, 70);
        runAnimLeft.addFrame(rl5, 70);
        runAnimLeft.addFrame(rl6, 70);
        runAnimLeft.addFrame(rl7, 70);
        runAnimLeft.addFrame(rl8, 70);
        runAnimLeft.addFrame(rl9, 70);
        runAnimLeft.addFrame(rl10, 70);
    }
   
       
    public Animation jumpAnimRight;
   
    public Image jr1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR1.png")).getImage();
    public Image jr2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR2.png")).getImage();
    public Image jr3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR3.png")).getImage();
    public Image jr4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR4.png")).getImage();
    public Image jr5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR5.png")).getImage();
    public Image jr6 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JR6.png")).getImage();

    public void jumpRight() {
        jumpAnimRight = new Animation();
        jumpAnimRight.addFrame(jr1, 70);
        jumpAnimRight.addFrame(jr2, 70);
        jumpAnimRight.addFrame(jr3, 70);
        jumpAnimRight.addFrame(jr4, 70);
        jumpAnimRight.addFrame(jr5, 70);
        jumpAnimRight.addFrame(jr6, 70);
        jumpAnimRight.addFrame(jr5, 70);
        jumpAnimRight.addFrame(jr4, 70);
        jumpAnimRight.addFrame(jr3, 140);
        jumpAnimRight.addFrame(jr2, 70);
        jumpAnimRight.addFrame(jr1, 70);
    }
    public Animation jumpAnimLeft;
    public Image jl1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL1.png")).getImage();
    public Image jl2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL2.png")).getImage();
    public Image jl3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL3.png")).getImage();
    public Image jl4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL4.png")).getImage();
    public Image jl5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL5.png")).getImage();
    public Image jl6 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/JL6.png")).getImage();

    public void jumpLeft() {
        jumpAnimLeft = new Animation();
        jumpAnimLeft.addFrame(jl1, 70);
        jumpAnimLeft.addFrame(jl2, 70);
        jumpAnimLeft.addFrame(jl3, 70);
        jumpAnimLeft.addFrame(jl4, 70);
        jumpAnimLeft.addFrame(jl5, 70);
        jumpAnimLeft.addFrame(jl6, 70);
        jumpAnimLeft.addFrame(jl5, 70);
        jumpAnimLeft.addFrame(jl4, 140);
        jumpAnimLeft.addFrame(jl3, 70);
        jumpAnimLeft.addFrame(jl2, 70);
        jumpAnimLeft.addFrame(jl1, 70);
    }    
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
import extrememario.mario.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public Mario mario;
    public Thread mainLoop;

    public MainConfig() {
        mario = new Mario();
        setFocusable(true);
        addKeyListener(new KL());
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }
    public Image bg = new ImageIcon(this.getClass().getResource("/extrememario/BackgroundDemoStage.png")).getImage();

    @Override
    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        g.drawImage(mario.getFrame(),Math.round(mario.moveX()), Math.round(mario.moveY()), null);
        g.dispose();
    }

    public class KL extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }
    }

    @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            mario.sprite().update(timePassed);
            mario.update();
            repaint();
            try {
                Thread.sleep(20);
            } catch (Exception e) {
            }
        }

    }
}
8  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-12 18:31:08
I've figured out the problem. I need setFocusable() in my MainConfig constructor after addKeyListener().

1  
2  
3  
4  
5  
6  
    public MainConfig() {
        mario = new Mario();
        this.addKeyListener(new KL());
        this.setFocusable(true);
        System.out.println();
    }
9  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-12 05:46:28
I've tried, and the keyPressed() under KL dosen't seem to be able to call the stuff inside of it.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
    public class KL extends KeyAdapter {

        @Override
        public void keyPressed(KeyEvent e) {            
            mario.keyPressed(e);
            int keyCode = e.getKeyCode();
            if(keyCode == KeyEvent.VK_RIGHT){
                System.out.println("VK_Right pressed");
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }
    }
10  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-11 19:58:44
When I make,

1  
2  
3  
4  
5  
6  
    public Mario() {
        idleLeft();
        currentSprite = new Sprite(idleAnimLeft);
        currentSprite.x = 250;
        currentSprite.y = 250;
    }


he faces left, but when I press right, he won't face right.
So far, I've figured out that the keyPressed in Mario isn't actually getting called, but I can't seem to figure out why. Any idea's or thoughts to fix this?

Here are all the changed soruce codes

Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
public class Mario extends MarioSprites{

    public Mario() {
        idleLeft();
        currentSprite = new Sprite(idleAnimLeft);
        currentSprite.x = 250;
        currentSprite.y = 250;
    }

    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            System.out.println("Right key");
            idleRight();
            currentSprite = new Sprite(idleAnimRight);        

        } else if (keyCode == KeyEvent.VK_LEFT) {
            idleLeft();
            currentSprite = new Sprite(idleAnimLeft);
        }
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
        } else if (keyCode == KeyEvent.VK_LEFT) {
        }
    }

    public void keyTyped(KeyEvent e) {
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
import extrememario.mario.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public Mario mario;
    public Thread mainLoop;

    public MainConfig() {
        mario = new Mario();
        addKeyListener(new KL());
        System.out.println();
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    public Image bg = new ImageIcon(this.getClass().getResource("/extrememario/BackgroundDemoStage.png")).getImage();

    @Override
    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        g.drawImage(mario.getFrame(), mario.currentSprite.getX(), mario.currentSprite.getY(), null);
        g.dispose();
    }

    public class KL extends KeyAdapter {
        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }
    }
        @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            mario.sprite().update(timePassed);            
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }

    }
}


MarioSprites
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
import extrememario.Animation;
import extrememario.Sprite;
import java.awt.Image;
import javax.swing.ImageIcon;

public class MarioSprites {

    public Animation idleAnimRight;
    public Sprite currentSprite;
    public int sx,sy;
   
    public Image r1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame0.png")).getImage();
    public Image r2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame1.png")).getImage();
    public Image r3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame2.png")).getImage();
    public Image r4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame3.png")).getImage();
    public Image r5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame4.png")).getImage();

    public void idleRight() {
        idleAnimRight = new Animation();
        idleAnimRight.addFrame(r1, 110);
        idleAnimRight.addFrame(r2, 110);
        idleAnimRight.addFrame(r3, 110);
        idleAnimRight.addFrame(r4, 110);
        idleAnimRight.addFrame(r5, 110);
    }
    public Animation idleAnimLeft;
    public Image l1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft1.png")).getImage();
    public Image l2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft2.png")).getImage();
    public Image l3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft3.png")).getImage();
    public Image l4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft4.png")).getImage();
    public Image l5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft5.png")).getImage();

    public void idleLeft() {
        idleAnimLeft = new Animation();
        idleAnimLeft.addFrame(l1, 110);
        idleAnimLeft.addFrame(l2, 110);
        idleAnimLeft.addFrame(l3, 110);
        idleAnimLeft.addFrame(l4, 110);
        idleAnimLeft.addFrame(l5, 110);
    }

    public Sprite sprite() {
        return currentSprite;
    }

    public Image getFrame() {
        return currentSprite.getImage();
    }
}
11  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-09 04:48:59
Thanks for the reply.

Yea, I checked, idleLeft() is called.

It starts from MarioSprites
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
    public Animation idleAnimLeft;
    public Image l1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft1.png")).getImage();
    public Image l2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft2.png")).getImage();
    public Image l3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft3.png")).getImage();
    public Image l4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft4.png")).getImage();
    public Image l5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft5.png")).getImage();

    public void idleLeft() {
        idleAnimLeft = new Animation();
        idleAnimLeft.addFrame(l1, 110);
        idleAnimLeft.addFrame(l2, 110);
        idleAnimLeft.addFrame(l3, 110);
        idleAnimLeft.addFrame(l4, 110);
        idleAnimLeft.addFrame(l5, 110);
    }


to Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
@Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            idleRight();
            currentSprite = new Sprite(idleAnimRight);

        } else if (keyCode == KeyEvent.VK_LEFT) {
            idleLeft();
            currentSprite = new Sprite(idleAnimLeft);
        }
    }


to
MainConfig

1  
2  
3  
4  
5  
    public MainConfig() {
        mario = new Mario();
        addKeyListener(new KL());

    }


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
    public class KL implements KeyListener {

        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {
        }
    }


Here are all the changed source codes(whole classes)

MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
import extrememario.mario.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public Mario mario;
    public Thread mainLoop;

    public MainConfig() {
        mario = new Mario();
        addKeyListener(new KL());

    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            mario.sprite().update(timePassed);
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }

    }
    public Image bg = new ImageIcon(this.getClass().getResource("/extrememario/BackgroundDemoStage.png")).getImage();

    @Override
    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        g.drawImage(mario.getFrame(), 250, 250, null);
        g.dispose();
    }

    public class KL implements KeyListener {

        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {
        }
    }
}


Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
import extrememario.Sprite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;

/**
 *
 * @author ben
 */

public class Mario extends MarioSprites implements KeyListener {

    public Mario() {
        idleRight();
        currentSprite = new Sprite(idleAnimRight);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            idleRight();
            currentSprite = new Sprite(idleAnimRight);

        } else if (keyCode == KeyEvent.VK_LEFT) {
            idleLeft();
            currentSprite = new Sprite(idleAnimLeft);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
        } else if (keyCode == KeyEvent.VK_LEFT) {
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }
}


MarioSprites
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
import extrememario.Animation;
import extrememario.Sprite;
import java.awt.Image;
import javax.swing.ImageIcon;

public class MarioSprites {

    public Animation idleAnimRight;
    public Sprite currentSprite;
   
    public Image r1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame0.png")).getImage();
    public Image r2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame1.png")).getImage();
    public Image r3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame2.png")).getImage();
    public Image r4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame3.png")).getImage();
    public Image r5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame4.png")).getImage();

    public void idleRight() {
        idleAnimRight = new Animation();
        idleAnimRight.addFrame(r1, 110);
        idleAnimRight.addFrame(r2, 110);
        idleAnimRight.addFrame(r3, 110);
        idleAnimRight.addFrame(r4, 110);
        idleAnimRight.addFrame(r5, 110);
    }
    public Animation idleAnimLeft;
    public Image l1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft1.png")).getImage();
    public Image l2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft2.png")).getImage();
    public Image l3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft3.png")).getImage();
    public Image l4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft4.png")).getImage();
    public Image l5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft5.png")).getImage();

    public void idleLeft() {
        idleAnimLeft = new Animation();
        idleAnimLeft.addFrame(l1, 110);
        idleAnimLeft.addFrame(l2, 110);
        idleAnimLeft.addFrame(l3, 110);
        idleAnimLeft.addFrame(l4, 110);
        idleAnimLeft.addFrame(l5, 110);
    }

    public Sprite sprite() {
        return currentSprite;
    }

    public Image getFrame() {
        return currentSprite.getImage();
    }
}
12  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-08 22:11:40
But I have a new problem. I'm trying to make a new game, and when I press left, my character won't face left. He just faces right(His default is facing right).

Is their a way to fix it so that when I press the right key, he faces right and when I press the left key, he faces left?

Here are the source codes

Animation
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
import java.awt.*;
import java.util.ArrayList;

public class Animation {

    public ArrayList<Frame> frames;
    public int f = 0;
    public long currentTime;
    public long totalTime;

    public Animation() {
        frames = new ArrayList();
        totalTime = 0;
        start();
    }

    public synchronized void addFrame(Image i, long t) {
        totalTime += t;
        frames.add(new Frame(i, totalTime));
    }

    public synchronized void start() {
        currentTime = 0;
        f = 0;
    }

    public synchronized void update(long time) {
        if (frames.size() > 1) {
            currentTime += time;
            if (currentTime >= totalTime) {
                currentTime = 0;
                f = 0;
            }
            while (currentTime > frames.get(f).time) {
                f++;
                System.out.println("next frame");
            }
        }
        //System.out.println(time);
   }

    public synchronized Image getImage() {
        if (frames.isEmpty()) {
            return null;
        } else {
            return frames.get(f).img;
        }
    }

    public class Frame {

        public Image img;
        public long time;

        public Frame(Image i, long t) {
            img = i;
            time = t;
        }
    }
}


ExtremeMario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
import javax.swing.JFrame;

public class ExtremeMario {

    public ExtremeMario() {
        JFrame f = new JFrame();
        f.setTitle("ExtremeMario");
        f.add(new MainConfig());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500, 500);
        f.setVisible(true);

    }

    public static void main(String[] args) {
        new ExtremeMario();
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
import extrememario.mario.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public Mario mario;
    public Thread mainLoop;

    public MainConfig() {
        mario = new Mario();
        this.addKeyListener(new KL());

    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void run() {
        long lastTime = System.currentTimeMillis();
        while (true) {
            long nowTime = System.currentTimeMillis();
            long timePassed = nowTime - lastTime;
            lastTime = nowTime;
            mario.sprite().update(timePassed);
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }

    }
    public Image bg = new ImageIcon(this.getClass().getResource("/extrememario/BackgroundDemoStage.png")).getImage();

    @Override
    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        g.drawImage(mario.getFrame(), 250, 250, null);
        g.dispose();
    }

    public class KL implements KeyListener {

        @Override
        public void keyPressed(KeyEvent e) {
            mario.keyPressed(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            mario.keyReleased(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {
        }
    }
}


Sprite
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
import java.awt.Image;

public class Sprite {

    public int x, y;
    public Animation a;

    public Sprite(Animation anim) {
        a = anim;
    }

    public void update(long time) {
        a.update(time);
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public int getWidth() {
        return a.getImage().getWidth(null);
    }

    public int getHieght() {
        return a.getImage().getHeight(null);
    }

    public Image getImage() {
        return a.getImage();
    }
}


Mario
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;

/**
 *
 * @author ben
 */

public class Mario extends MarioSprites implements KeyListener {

    public Mario() {
        idleRight();
    }
    public boolean ap;//stands for already pressed

    @Override
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            idleRight();

        } else if (keyCode == KeyEvent.VK_LEFT) {
            idleLeft();
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        if (keyCode == KeyEvent.VK_RIGHT) {
            idleRight();

        } else if (keyCode == KeyEvent.VK_LEFT) {
            idleLeft();
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }
}


MarioSprites
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
import extrememario.Animation;
import extrememario.Sprite;
import java.awt.Image;
import javax.swing.ImageIcon;

public class MarioSprites {

    public Animation idleAnimRight;
    public Sprite currentSprite;

    public void idleRight() {
        idleAnimRight = new Animation();
        Image f1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame0.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame1.png")).getImage();
        Image f3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame2.png")).getImage();
        Image f4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame3.png")).getImage();
        Image f5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/IRFrame4.png")).getImage();
        idleAnimRight.addFrame(f1, 110);
        idleAnimRight.addFrame(f2, 110);
        idleAnimRight.addFrame(f3, 110);
        idleAnimRight.addFrame(f4, 110);
        idleAnimRight.addFrame(f5, 110);
        currentSprite = new Sprite(idleAnimRight);
    }
    public Animation idleAnimLeft;

    public void idleLeft() {
        idleAnimRight = new Animation();
        Image f1 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft2.png")).getImage();
        Image f3 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft3.png")).getImage();
        Image f4 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft4.png")).getImage();
        Image f5 = new ImageIcon(this.getClass().getResource("/extrememario/mario/sprites/ILeft5.png")).getImage();
        idleAnimLeft.addFrame(f1, 110);
        idleAnimLeft.addFrame(f2, 110);
        idleAnimLeft.addFrame(f3, 110);
        idleAnimLeft.addFrame(f4, 110);
        idleAnimLeft.addFrame(f5, 110);
        currentSprite = new Sprite(idleAnimLeft);
    }

    public Sprite sprite() {
        return currentSprite;
    }

    public Image getFrame() {
        return currentSprite.getImage();
    }
}
13  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-08 20:00:58
Thank You! It works perfectly now!  Grin
14  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-08 16:18:24

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
import java.awt.Image;
import javax.swing.ImageIcon;

public class SmileyFace{

    public Animation smileyAnim;
    public Sprite currentSprite;

    public SmileyFace() {
        smileyAnimation();
    }

    public void smileyAnimation() {
        smileyAnim = new Animation();
        Image f1 = new ImageIcon(this.getClass().getResource("/animationtest/Face1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/animationtest/Face2.png")).getImage();
        smileyAnim.addFrame(f1, 30);
        smileyAnim.addFrame(f2, 30);    
        currentSprite = new Sprite(smileyAnim);
    }

    public Sprite sprite() {
        return currentSprite;
    }

    public Image getFrame() {
        return currentSprite.getImage();
    }
}
15  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-08 05:30:15
Thanks for your reply.

Here is the new MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
import java.awt.Graphics;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public SmileyFace smiley;
    public Thread mainLoop;

    public MainConfig() {
        smiley = new SmileyFace();
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void run() {
        long startTime = System.currentTimeMillis();
        long totalTime = System.currentTimeMillis() - startTime;
        while (true) {
            long timePassed = System.currentTimeMillis() - totalTime;
            timePassed += totalTime;
            smiley.sprite().update(timePassed);
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }

    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(smiley.getFrame(), 250, 250, null);
    }
}


If you don't mind, could you tell me why my animation isn't working or why it isn't animating.
16  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-07 05:57:15
I just realized I've made a pretty careless mistake.

1  
2  
3  
    public void MainConfig() {
        setDoubleBuffered(true);
    }


should be

1  
2  
3  
    public MainConfig() {
        setDoubleBuffered(true);
    }


in MainConfig.
17  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-06 23:40:51
I'm making more progress now, but it still wouldn't animate. Any ideas?

Here is the new edited source codes.

Animation
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
import java.awt.*;
import java.util.ArrayList;

public class Animation {

    public ArrayList<Frame> frames;
    public int f = 0;
    public long currentTime;
    public long totalTime;

    public Animation() {
        frames = new ArrayList();
        totalTime = 0;
        start();
    }

    public synchronized void addFrame(Image i, long t) {
        totalTime += t;
        frames.add(new Frame(i, totalTime));
    }

    public synchronized void start() {
        currentTime = 0;
        f = 0;
    }

    public synchronized void update(long time) {
        if (frames.size() > 1) {
            currentTime += time;
            if (currentTime >= totalTime) {
                currentTime = 0;
                f = 0;
            }
            while (currentTime > frames.get(f).time) {
                f++;
            }
        }
        //System.out.println(time);
   }

    public synchronized Image getImage() {
        if (frames.isEmpty()) {
            return null;
        } else {
            return frames.get(f).img;
        }
    }

    public class Frame {

        public Image img;
        public long time;

        public Frame(Image i, long t) {
            img = i;
            time = t;
        }
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
import java.awt.Graphics;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public SmileyFace smiley = new SmileyFace();
    public Thread mainLoop;

    public void MainConfig() {
        setDoubleBuffered(true);
    }

    @Override
    public void addNotify() {
        super.addNotify();
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void run() {
        long startTime = System.currentTimeMillis();
        long totalTime = System.currentTimeMillis() - startTime;
        while (true) {
            long timePassed = System.currentTimeMillis() - totalTime;
            timePassed += totalTime;
            smiley.currentSprite.update(timePassed);
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(smiley.getFrame(), 250, 250, null);
        g.dispose();
    }
}


18  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-06 16:33:14
I've gotten some progress,and I've change the source code a little bit. But the new problem, is that if I were to change the value in Smiley animation to
1  
2  
3  
4  
5  
6  
    private void smileyAnimation() {
        Image f1 = new ImageIcon(this.getClass().getResource("/animationtest/Face1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/animationtest/Face2.png")).getImage();
        smileyAnim.addFrame(f1, 10);
        smileyAnim.addFrame(f2, 10);      
    }


The animation starts on the second frame and stays their. But If I changed it to

1  
2  
3  
4  
5  
6  
    private void smileyAnimation() {
        Image f1 = new ImageIcon(this.getClass().getResource("/animationtest/Face1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/animationtest/Face2.png")).getImage();
        smileyAnim.addFrame(f1, 30);
        smileyAnim.addFrame(f2, 30);      
    }


It stays on the first frame of the animation. Any thoughts?

Here are the other changes I've made in my source code.

Smiley Animation

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
import java.awt.Image;
import javax.swing.ImageIcon;

public class SmileyFace{

    public Animation smileyAnim = new Animation();
    public Sprite currentAnimation;
   
    public SmileyFace(){
        smileyAnimation();
        currentAnimation = new Sprite(smileyAnim);
    }
    private void smileyAnimation() {
        Image f1 = new ImageIcon(this.getClass().getResource("/animationtest/Face1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/animationtest/Face2.png")).getImage();
        smileyAnim.addFrame(f1, 30);
        smileyAnim.addFrame(f2, 30);      
    }

    public void allAnimations(){
        smileyAnimation();  
    }
   
    public Sprite sprite() {
        return currentAnimation;
    }

    public Image getFrame() {
        return currentAnimation.getImage();
    }
}


MainConfig

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
import java.awt.Graphics;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public SmileyFace smiley = new SmileyFace();
    public Thread mainLoop;

    public void MainConfig() {
        setDoubleBuffered(true);
        System.out.println("hi");
    }

    public void addNotify() {
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void run() {
        long startTime = System.currentTimeMillis();
        long totalTime = System.currentTimeMillis() - startTime;
        while (true) {
            long timePassed = System.currentTimeMillis() - totalTime;
            timePassed += totalTime;
            smiley.allAnimations();
            smiley.currentAnimation.update(timePassed);
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
        }
    }

    public void paint(Graphics g) {
        g.drawImage(smiley.getFrame(), 250, 250, null);
    }
}


Animation

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
import java.awt.*;
import java.util.ArrayList;

public class Animation {

    public ArrayList animArray;
    public int f;
    public long animationTime;

    public Animation() {
        f = 0;
        animationTime = 0;
        animArray = new ArrayList();
    }

    public void addFrame(Image i, int t) {
        animArray.add(new Frame(i, t));
    }

    public void update(long time) {
        if (animArray.size() > 1) {
            animationTime = time;
            if (animationTime > getFrame(f).time) {
                f++;
                animationTime = 0;
            }else if(f > animArray.size()){
                f = 0;
            }
        }
        //System.out.println(time);
   }

    public Image getImage() {
        if (animArray.isEmpty()) {
            return null;
        } else {
            return getFrame(f).img;
        }
    }

    public Frame getFrame(int x) {
        return (Frame) animArray.get(x);
    }

    public class Frame {

        public Image img;
        public int time;

        public Frame(Image i, int t) {
            img = i;
            time = t;
        }
    }
}


19  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-06 01:46:20
o woops, I did forget to put repaint() thanks.

But Cero, what do u mean by
"every iteration, there is a lot else wrong... too much to list ^^"

do you mean I have to many conditions that go to the else.

Or do you mean I have many things wrong in my code?
20  Game Development / Newbie & Debugging Questions / Re: Sprite animation dosen't work properly. on: 2011-11-06 00:44:25
sure, here is the code.

Animation
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
import java.awt.*;
import java.util.ArrayList;

public class Animation {

    public ArrayList animArray;
    public int f;
    public long animationTime;

    public Animation() {
        f = 0;
        animationTime = 0;
        animArray = new ArrayList();
    }

    public void addFrame(Image i, int t) {
        animArray.add(new Frame(i, t));
    }

    public void update(long time) {
        if (animArray.size() > 1) {
            if (animationTime < getFrame(f).time) {
                animationTime = time;
            } else if (animationTime > getFrame(f).time) {
                animationTime = 0;
                f++;
            }
        }
    }

    public Image getImage() {
        if (animArray.isEmpty()) {
            return null;
        } else {
            return getFrame(f).img;
        }
    }

    public Frame getFrame(int x) {
        return (Frame) animArray.get(x);
    }

    public class Frame {

        public Image img;
        public int time;

        public Frame(Image i, int t) {
            img = i;
            time = t;
        }
    }
}


AnimationTest
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
import javax.swing.JFrame;

public class AnimationTest {

    public AnimationTest() {
        JFrame f = new JFrame();
        f.setTitle("AnimationTest10");
        f.add(new MainConfig());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500, 500);
        f.setVisible(true);

    }

    public static void main(String[] args) {
        new AnimationTest();
    }
}


MainConfig
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
import java.awt.Graphics;
import javax.swing.JPanel;

public class MainConfig extends JPanel implements Runnable {

    public SmileyFace smiley = new SmileyFace();
    public Thread mainLoop;

    public void MainConfig() {
        this.setDoubleBuffered(true);
        mainLoop = new Thread(this);
        mainLoop.start();
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(smiley.getFrame(), 250, 250, null);
    }

    @Override
    public void run() {
        long currentTime;
        long gameTime;
        long totalTime;
        while (true) {
            currentTime = System.currentTimeMillis();
            gameTime = System.currentTimeMillis() - currentTime;
            totalTime = +gameTime;
            smiley.allAnimations();
            smiley.currentAnimation.update(totalTime);
        }
    }
}


SmileyFace
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
import java.awt.Image;
import javax.swing.ImageIcon;

public class SmileyFace{

    public Animation smileyAnim = new Animation();
    public Sprite currentAnimation;
   
    public SmileyFace(){
        currentAnimation = new Sprite(smileyAnimation());
    }
    private Animation smileyAnimation() {
        Image f1 = new ImageIcon(this.getClass().getResource("/animationtest/Face1.png")).getImage();
        Image f2 = new ImageIcon(this.getClass().getResource("/animationtest/Face2.png")).getImage();
        smileyAnim.addFrame(f1, 110);
        smileyAnim.addFrame(f2, 110);      
        return smileyAnim;
    }

    public void allAnimations(){
        smileyAnimation();  
    }
   
    public Sprite sprite() {
        return currentAnimation;
    }

    public Image getFrame() {
        return currentAnimation.getImage();
    }
}


Sprite
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
import java.awt.Image;

public class Sprite {

    public int x, y;
    public Animation a;

    public Sprite(Animation anim) {
        a = anim;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public int getWidth() {
        return a.getImage().getWidth(null);
    }

    public int getHieght() {
        return a.getImage().getHeight(null);
    }
    public Image getImage(){
        return a.getImage();
    }
    public void update(long time){
        a.update(time);
    }
}
21  Game Development / Newbie & Debugging Questions / Sprite animation dosen't work properly. on: 2011-11-05 22:50:23
I've made a sprite animation, and it won't animate to the next frame. Any ideas?

Here is the source code.
http://www.mediafire.com/?96bz06tdtyb15qo
22  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-15 21:08:31
For some reason, when the ball hits intersects the block diagonally the first time, it bounces the same direction.

(Example : before intersection, dx = 3, dy = 3, after intersection, dy = -3, dy = -3, where after intersection it should be dx = -3, dy = 3)
23  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-15 17:50:02
That is also correct.
Also, sorry about the wrong download link.
Here's the correct one.
http://www.mediafire.com/?e66laoa29pys26c
24  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-15 05:51:25
So far, I almost found a solution to my problem. (I added some more thin)

Here are the changes in the code(You can also see the diffrences in the codes, if you download the source.Link also updated
http://www.mediafire.com/?4eubm7v6u8cyakq).

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
    public void update() {
        boolean bounced = false;
        if (dx < 0) {
            ndx = Math.abs(dx);
        } else if (dx > 0) {
            ndx = dx - (dx * 2);
        }
        if (dy < 0) {
            ndy = Math.abs(dy);
        } else if (dy > 0) {
            ndy = dy - (dy * 2);
        }
        if (y + diameter > 460 || y < 0) {
            dx = 3;
            dy = 3;
            x = 250;
            y = 250;
        } else if (x + diameter + (diameter / 2) > 500 || x < 0) {
            if (!bounced) {
                dx = ndx;
                hit.play();
                bounced = true;
            }
        }
        if (moveable) {
            x = x + dx + pauseSpeedX;
            y = y + dy + pauseSpeedY;
        } else if (!moveable) {
            x = x + 0;
            y = y + 0;
        }
    }


    public boolean updateBounceTilesL(Rectangle l, Ball ball) {
        if (dx > 0) {
            if (l.intersects(ball.ball())) {
                dx = ndx;
                hit.play();
                return true;
            } else if (!l.intersects(ball.ball())) {
                return false;
            }
        }

        return false;
    }

    public boolean updateBounceTilesR(Rectangle r, Ball ball) {
        if (dx < 0) {
            if (r.intersects(ball.ball())) {
                dx = ndx;
                hit.play();
                return true;
            } else if (!r.intersects(ball.ball())) {
                return false;
            }
        }

        return false;
    }

    public boolean updateBounceTilesT(Rectangle t, Ball ball) {
        if (dy > 0) {
            if (t.intersects(ball.ball())) {
                dy = ndy;
                hit.play();
                return true;
            } else if (!t.intersects(ball.ball())) {
                return false;
            }
        }

        return false;
    }

    public boolean updateBounceTilesB(Rectangle b, Ball ball) {
        if (dy < 0) {
            if (b.intersects(ball.ball())) {
                dy = ndy;
                hit.play();
                return true;
            } else if (!b.intersects(ball.ball())) {
                return false;
            }
        }

        return false;
    }
25  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-15 05:24:34
That's correct.
26  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-14 22:13:51
Actually, the ball has a rectangle for collision, and isn't a sub class of anything. The ball isn't very big, so I just used a rectangle for collision, since using a circle for collision is harder than using a rectangle. For some reason, when the ball hits the left or top side of the tiles, it goes through or doesn't bounce the right way.
27  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-11 04:51:45
Thanks for your advice, it helped me a lot. But now, I think I have a problem with my math, and I can't seem to figure it out.
Heres the new code

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
 public boolean updateBounceTilesL(Rectangle l, Ball ball) {
        if (dx > 0 && l.x <= ball.x + ball.diameter) {
            if (l.intersects(ball.ball())) {
                dx = bounceX(dx);
                hit.play();
                return true;
            } else if (!l.intersects(ball.ball())) {
                return false;
            }
        }
        return false;
    }

    public boolean updateBounceTilesR(Rectangle r, Ball ball) {
        if (dx < 0 && r.x >= ball.x + ball.diameter) {
            if (r.intersects(ball.ball())) {
                dx = bounceX(dx);
                hit.play();
                return true;
            } else if (!r.intersects(ball.ball())) {
                return false;
            }
        }
        return false;
    }

    public boolean updateBounceTilesT(Rectangle t, Ball ball) {
        if (dy > 0 && t.y >= ball.y + ball.diameter) {
            if (t.intersects(ball.ball())) {
                dy = bounceY(dy);
                hit.play();
                return true;
            } else if (!t.intersects(ball.ball())) {
                return false;
            }
        }
        return false;
    }

    public boolean updateBounceTilesB(Rectangle b, Ball ball) {
        if (dy < 0 && b.y <= ball.y + ball.diameter) {
            if (b.intersects(ball.ball())) {
                dy = bounceY(dy);
                hit.play();
                return true;
            } else if (!b.intersects(ball.ball())) {
                return false;
            }
        }
        return false;
    }
28  Game Development / Newbie & Debugging Questions / Re: Pong Physics problem on: 2011-10-10 19:07:59
Heres where the logic problem occurs.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
 public void updateBounceTilesL(Rectangle l, Ball ball) {
        if (dx > 0) {
            if (l.intersects(ball.ball())) {
                if (!bounced) {
                    dx = bounceX(dx);
                    bounced = true;
                } else if (bounced) {
                    dx = dx * 1;
                }
                //System.out.println("Intersected left");
           } else if (!l.intersects(ball.ball())) {
                bounced = false;
            }
        }
    }

    public void updateBounceTilesR(Rectangle r, Ball ball) {
        if (dx < 0) {
            if (r.intersects(ball.ball())) {
                if (!bounced) {
                    if (dx > 0) {
                        dx = bounceX(dx);
                        bounced = true;
                    }
                } else if (bounced) {
                    dx = dx * 1;
                }
                //System.out.println("Intersected right");
           } else if (!r.intersects(ball.ball())) {
                bounced = false;
            }
        }
    }

    public void updateBounceTilesT(Rectangle t, Ball ball) {
        if (dy > 0) {
            if (t.intersects(ball.ball())) {
                if (!bounced) {
                    dy = bounceY(dy);
                    bounced = true;
                } else if (bounced) {
                    dy = dy * 1;
                }
                //System.out.println("Intersected Top");
           } else if (!t.intersects(ball.ball())) {
                bounced = false;
            }
        }
    }

    public void updateBounceTilesB(Rectangle b, Ball ball) {
        if (dy < 0) {
            if (b.intersects(ball.ball())) {
                if (!bounced) {
                    dy = bounceY(dy);
                    bounced = true;
                } else if (bounced) {
                    dy = dy * 1;
                }
                //System.out.println("Intersected Bottom");
           } else if (!b.intersects(ball.ball())) {
                bounced = false;
            }
        }
    }

29  Game Development / Newbie & Debugging Questions / Pong Physics problem on: 2011-10-10 17:57:52
In my pong game,I have tiles/blocks in my game. With these blocks, I have 4 rectangles for collision, theirs one for the left side,right side, top side, bottom side. One of the problems, is that when the left and top side intersect with each other, the balls y axis isn't changed when they intersect.

Example : if dy(distance y) equals 3, and it intersects the left and top side rectangles, dy still equals 3.

This also happens with other rectangle(when left intersects bottom rectangle,when right intersects bottom top rectangle, etc.).

Source can be found here(updated link)
http://www.mediafire.com/?e66laoa29pys26c

30  Game Development / Newbie & Debugging Questions / Re: Text won't align right. on: 2011-09-11 05:36:03
Thanks that worked. Smiley
Pages: [1] 2
 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (26 views)
2014-07-24 01:59:36

Riven (25 views)
2014-07-23 21:16:32

Riven (19 views)
2014-07-23 21:07:15

Riven (22 views)
2014-07-23 20:56:16

ctomni231 (51 views)
2014-07-18 06:55:21

Zero Volt (46 views)
2014-07-17 23:47:54

danieldean (37 views)
2014-07-17 23:41:23

MustardPeter (40 views)
2014-07-16 23:30:00

Cero (56 views)
2014-07-16 00:42:17

Riven (55 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!