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 (407)
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  
  Vector Drawing?  (Read 248 times)
0 Members and 1 Guest are viewing this topic.
Offline westloar

Junior Member





« Posted 2013-01-28 10:49:32 »

I have imported the following Vec2 class into my project:

http://www.johnloomis.org/ece538/notes/java1/Vec2.java.html

I'm currently playing with the use of vectors as I am new to them.

I can't seem to get the vector to draw using the Vec2.draw() method unless it is left in it's constructed default position (0,0).

This is my 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  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
public class Avatar extends Sprite
{
    protected int hitPoints;
    protected int attackTime = 100; //ms
   protected int strength;
    protected boolean isAttack = false;
    Vec2 normal = new Vec2(posX, posY);

    public Avatar (int x, int y, int w, int h, int s, int hp, int str){
    super(w/2, h/2, w, h, s);
    hitPoints = hp;
    strength = str;
    }
    public void moveLeft()
    {posX-=step;}

    public void moveRight()
    {posX+=step;}

    public void moveUp()
    {posY-=step;}

    public void moveDown()
    {posY+=step;}

    public void attack(){
        if(isAttack)
        {isAttack = false;}
        else
        isAttack = true;
        System.out.println(normal.length());
    }

    public void isHit(int str){
        hitPoints-=str;
        if(hitPoints<= 0){
            this.dead();
        }//endif
   }

    public void dead(){
        //called when player hp <=0
   }
@Override
public void drawSprite(Graphics g){
   
        if(isAttack){
        g.setColor(Color.blue);
        g.fillOval(posX - 10, posY - 10, 30, 30);
        g.setColor(Color.black);
       
       }
        if(isActive()){
        g.setColor(Color.orange);
        g.fillOval(posX, posY, 10, 10);
        g.setColor(Color.black);
        }
         normal.draw(g);
}

}


I have checked its length with a print line and it returns two every time but does not draw to the canvas, I called its draw() method last to ensure it is drawn last (on top), but that doesn't seem to make a difference.

Any help would be much appreciated Smiley
Offline DazKins

Junior Member


Medals: 1
Projects: 1



« Reply #1 - Posted 2013-01-28 18:17:56 »

For starters i should point out that a normal vector actually represents a direction not a point (however looking over your code i don't think you meant what I'm on about here).

Secondly, I cannot see any thing wrong with the implementation of the drawing except i think the issue is where you position the vector

1  
Vec2 normal = new Vec2(posX, posY);


This piece of code is outside the constructor when it should really be inside it like this

1  
2  
3  
4  
5  
6  
public Avatar (int x, int y, int w, int h, int s, int hp, int str){
    super(w/2, h/2, w, h, s);
    hitPoints = hp;
    strength = str;
    normal = new Vec2(posX, posY);
}

DazKins

Check out my Dev Blog: http://dazkins.tumblr.com
Offline kulpae

Senior Newbie





« Reply #2 - Posted 2013-01-29 01:35:49 »

I'm not sure, but there seems to be some weird example specific code inside of Vec2.java:

try to replace this in the draw method:
1  
2  
3  
4  
5  
public void draw(Graphics g)
{
    int [] iv = convert();
    g.fillOval(iv[0]-4,iv[1]-4,9,9);
}


with this:

1  
2  
3  
4  
public void draw(Graphics g)
{
    g.fillOval(v[0]-4,v[1]-4,9,9);
}


don't know what your coordinate system looks like, so can't say if that'll help...
Pages: [1]
  ignore  |  Print  
 
 

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

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 (100 views)
2013-05-17 21:29:12

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

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

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

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

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

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

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

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

UnluckyDevil (204 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.145 seconds with 20 queries.