Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Game Board running in a BorderLayout panel  (Read 2007 times)
0 Members and 1 Guest are viewing this topic.
Offline ylima

JGO Visitor




« Posted 2010-12-27 21:54:13 »

Guys, I'm making a RTS game that needs to move the screen vision around the map.
To do it, I'm thinking about using an invisible component positioned on each side of the screen in a border layout.
When the mouse is over this component, it fires an action which moves the screen.
We know a game uses lots of memmory an proccessing. How a borderLayout whoud interfer in this process? Whould it take lots of processing? Is there a better way to do it?
Thanks
Offline philfrei
« Reply #1 - Posted 2011-01-10 03:26:50 »

The idea of an invisible component with a MouseListener on the edges seems pretty cool to this Noob. But placing the components on your display panel, handling things like the overlapping of the game area, and getting the various component classes to communicate to one another seems like a big headache to me. Maybe it is doable, and a more experienced person will describe how.

But as a simpler alternative, building off of your basic idea, how about using a MouseMotionListener instead? You probably already have a MouseMotionListener in your main playing area, yes? If so, maybe this: define two X values, one for the left and one for the right, and test the mouse's X position against these.

"Greetings my friends! We are all interested in the future, for that is where you and I are going to spend the rest of our lives!" -- The Amazing Criswell
Offline Eli Delventhal
« League of Dukes »

JGO Kernel


Medals: 39
Projects: 12


Game Engineer


« Reply #2 - Posted 2011-01-11 01:58:53 »

I definitely wouldn't do a component. Instead use a timer and the last known mouse position.

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  
public class MyClass implements MouseMotionListener, ActionListener
{
    int mouseX, mouseY;
    Timer timer;

    public void mouseMoved(MouseEvent e)
    {
        mouseX = e.getX();
        mouseY = e.getY();
    }

    public MyClass()
    {
        timer = new Timer(10, this);
        timer.start();
    }

    public void actionPerformed(ActionEvent e)
    {
        if (mouseX >= getWidth() - 50)
        {
            scrollRight();
        }
        //etc.
   }

}

See my work:
OTC Software
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Aeroren

Senior Newbie


Medals: 1



« Reply #3 - Posted 2011-01-11 17:51:05 »

I don't understand what the use of the timer is in the above example. Why not just add a mouselistener with your code to the JFrame the gameboard is in?
Offline pjt33
« Reply #4 - Posted 2011-01-11 17:53:22 »

I don't understand what the use of the timer is in the above example. Why not just add a mouselistener with your code to the JFrame the gameboard is in?
The timer is so that it will continue to scroll the playfield while the mouse remains on the edge.
Offline Eli Delventhal
« League of Dukes »

JGO Kernel


Medals: 39
Projects: 12


Game Engineer


« Reply #5 - Posted 2011-01-11 21:06:27 »

I don't understand what the use of the timer is in the above example. Why not just add a mouselistener with your code to the JFrame the gameboard is in?
The timer is so that it will continue to scroll the playfield while the mouse remains on the edge.
Exactly. A MouseMotionListener will only fire events as they happen, and there is no "mouseIsDoingNothing" event. Because of this, you need to add a timer of some kind.

See my work:
OTC Software
Offline Aeroren

Senior Newbie


Medals: 1



« Reply #6 - Posted 2011-01-11 22:03:19 »

Oh, right, I usually have startDoingSomething() and a stopDoingSomething() methods, so that's why i was confused.
Offline Eli Delventhal
« League of Dukes »

JGO Kernel


Medals: 39
Projects: 12


Game Engineer


« Reply #7 - Posted 2011-01-12 02:29:14 »

Oh, right, I usually have startDoingSomething() and a stopDoingSomething() methods, so that's why i was confused.
Even so, doingSomething() will need to be executed by some sort of loop or timer.

See my work:
OTC Software
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Try the Free Demo of Revenge of the Titans

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

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (139 views)
2013-05-17 21:29:12

alaslipknot (148 views)
2013-05-16 21:24:48

gouessej (178 views)
2013-05-16 00:53:38

gouessej (172 views)
2013-05-16 00:17:58

theagentd (182 views)
2013-05-15 15:01:13

theagentd (166 views)
2013-05-15 15:00:54

StreetDoggy (211 views)
2013-05-14 15:56:26

kutucuk (235 views)
2013-05-12 17:10:36

kutucuk (234 views)
2013-05-12 15:36:09

UnluckyDevil (239 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
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!
Page created in 0.094 seconds with 20 queries.