Difference between revisions of "User talk:Starrynte/Melee Evaluator"

From Robowiki
Jump to navigation Jump to search
(comments)
 
m (Using <syntaxhighlight>.)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
Nice work, I haven't used it because I've been kind of busy lately, but I will try it when I start working on melee again. I was thinking about writing some melee evaluation myself anyway, I already do with 1v1. One question though, why do you have
 +
<syntaxhighlight>
 +
public MeleeEvaluate(){
 +
throw new RuntimeException("YOU MUST SPECIFY EXACTLY ONE (1) ADVANCED ROBOT AS A PARAMETER!");
 +
}
 +
</syntaxhighlight>
 +
 +
You could simply remove the default constructor, since you have a constructor with parameters Java won't create a default constructor for the class. So a call like <code>new MelleEvaluate()</code> would give compilation error instead of having to wait for a runtime error to find out. --[[User:Zyx|zyx]] 06:35, 14 September 2009 (UTC)
 +
 +
 
Hey - what kind of stuff does this keep track of? I'm curious, but it also seems like it would be good information to add to the page. Also, I don't know if you meant to do it this way, but I think [[Starrynte/Melee Evaluator Source]] should be at [[User:Starrynte/Melee Evaluator Source]] (or, at least, this page and that page should be in the same namespace). One other thought is that you don't really need to change the package name - you can have code from other packages in your bot if you want. --[[User:Voidious|Voidious]] 17:35, 14 September 2009 (UTC)
 
Hey - what kind of stuff does this keep track of? I'm curious, but it also seems like it would be good information to add to the page. Also, I don't know if you meant to do it this way, but I think [[Starrynte/Melee Evaluator Source]] should be at [[User:Starrynte/Melee Evaluator Source]] (or, at least, this page and that page should be in the same namespace). One other thought is that you don't really need to change the package name - you can have code from other packages in your bot if you want. --[[User:Voidious|Voidious]] 17:35, 14 September 2009 (UTC)
 +
 +
Hmm, I meant to put it there...moved
 +
and it keeps track of
 +
*    Survival: The average energy gain during a stage
 +
*    Hitrate: The average hitrate during a stage
 +
*    Infliction: The average damage inflicted during a stage
 +
*    Damage: The average damage encountered during a stage
 +
*    Survival up through a stage: How often you survive up to and through an ENTIRE stage
 +
*    Survival in a stage only: How often your survive in one SINGLE stage
 +
*    Skipped turns: The average number of skipped turns during a stage
 +
*    Hit walls: The average number of wall hits during a stage
 +
Though there is occasionally a bug where survival up through stage 1 is different than survival in stage 1 only...still don't know why
 +
--[[User:Starrynte|Starrynte]] 01:13, 15 September 2009 (UTC)
 +
 +
Ah, very cool. I think it might be good to add that info to the non-talk page, too. =) --[[User:Voidious|Voidious]] 13:44, 15 September 2009 (UTC)
 +
 +
I just surf by random pages, find this page and I cannot understand, how it works.
 +
In this code:
 +
<syntaxhighlight>
 +
    static MeleeEvaluate me;
 +
    // ...
 +
    if(me==null){
 +
        me=new MeleeEvaluate(this);
 +
    }
 +
</syntaxhighlight>
 +
 +
field "me" is initialized only in first round by current robot instance.
 +
But in next rounds there're will be another instances and result of call to old instance's methods is undifined.
 +
So how it works? May be i don't see or don't know some important issues --[[User:Jdev|Jdev]] 13:20, 3 March 2010 (UTC)
 +
 +
It's because of the way Robocode's internals work. It's not guaranteed to work, but I think the new instances of the Robot are referencing some of the same stuff as the old instances, so it's usually not a problem. But you should update the Robot reference each round. (/me goes off to check that his bots do this correctly. =)) --[[User:Voidious|Voidious]] 17:30, 3 March 2010 (UTC)

Latest revision as of 09:43, 1 July 2010

Nice work, I haven't used it because I've been kind of busy lately, but I will try it when I start working on melee again. I was thinking about writing some melee evaluation myself anyway, I already do with 1v1. One question though, why do you have

public MeleeEvaluate(){
	throw new RuntimeException("YOU MUST SPECIFY EXACTLY ONE (1) ADVANCED ROBOT AS A PARAMETER!");		
}

You could simply remove the default constructor, since you have a constructor with parameters Java won't create a default constructor for the class. So a call like new MelleEvaluate() would give compilation error instead of having to wait for a runtime error to find out. --zyx 06:35, 14 September 2009 (UTC)


Hey - what kind of stuff does this keep track of? I'm curious, but it also seems like it would be good information to add to the page. Also, I don't know if you meant to do it this way, but I think Starrynte/Melee Evaluator Source should be at User:Starrynte/Melee Evaluator Source (or, at least, this page and that page should be in the same namespace). One other thought is that you don't really need to change the package name - you can have code from other packages in your bot if you want. --Voidious 17:35, 14 September 2009 (UTC)

Hmm, I meant to put it there...moved and it keeps track of

  • Survival: The average energy gain during a stage
  • Hitrate: The average hitrate during a stage
  • Infliction: The average damage inflicted during a stage
  • Damage: The average damage encountered during a stage
  • Survival up through a stage: How often you survive up to and through an ENTIRE stage
  • Survival in a stage only: How often your survive in one SINGLE stage
  • Skipped turns: The average number of skipped turns during a stage
  • Hit walls: The average number of wall hits during a stage

Though there is occasionally a bug where survival up through stage 1 is different than survival in stage 1 only...still don't know why --Starrynte 01:13, 15 September 2009 (UTC)

Ah, very cool. I think it might be good to add that info to the non-talk page, too. =) --Voidious 13:44, 15 September 2009 (UTC)

I just surf by random pages, find this page and I cannot understand, how it works. In this code:

    static MeleeEvaluate me;
    // ...
    if(me==null){
        me=new MeleeEvaluate(this);
    }

field "me" is initialized only in first round by current robot instance. But in next rounds there're will be another instances and result of call to old instance's methods is undifined. So how it works? May be i don't see or don't know some important issues --Jdev 13:20, 3 March 2010 (UTC)

It's because of the way Robocode's internals work. It's not guaranteed to work, but I think the new instances of the Robot are referencing some of the same stuff as the old instances, so it's usually not a problem. But you should update the Robot reference each round. (/me goes off to check that his bots do this correctly. =)) --Voidious 17:30, 3 March 2010 (UTC)