Talk:Robocode/My First Robot
HELP!
I am an experienced 13 year old Java programmer, and I decided to try this, (it looks VERY cool) but when I try to compile the simple default program it gives many errors. I figured out pretty quickly; it can't find the robocode package. I need to like set the classpath, but I can't directly do this. >=( Robocode SHOULD do this on its own...
Robocode can't simply do everything for you, becasuse it is a Java setting issue, if you are using Eclipse you can set it trough the Build Path Settings, on the Libraries tab, select Add External Jars, search for your Robocode instalation directory (default in Windows is C:\robocode) under that directory there should be a libs directory, there are four jars, you might not need all of them, but I recommend you add all of them for now.
If you are compiling from the console you should do something like
javac -cp C:\robocode\libs\cachecleaner.jar;C:\robocode\libs\codesize.jar;C:\robocode\libs\robocode.jar;C:\robocode\libs\roborumble.jar ...
To set the classpath, but I really recommend using an advanced IDE like Eclipse (or whatever you prefer, ie. NetBeans). Hope it helps, and welcome to Robocode. --zyx 08:55, 11 March 2009 (UTC)
Actually Zyx, you don't need the cachecleaner, codesize or roborumble jars ofr compiling bots. --Rednaxela 12:44, 11 March 2009 (UTC)
Maybe this is easier?
javac -cp C:\robocode\libs\*; ...
it load every library in /libs
automatically. (ripped from Robocode 1.7 startup files) » Nat | Talk » 13:14, 11 March 2009 (UTC)
Yes Rednaxela, you are right that for compilation there is no point to include any jar that is not robocode.jar. I didn't know that the * wildcard worked but is good to know Nat. But all my disinformation comes from Eclipse, I added the 4 jars there and he knows what to use :-). --zyx 19:44, 11 March 2009 (UTC)
- [View source↑]
- [History↑]
You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.
Contents
Thread title | Replies | Last modified |
---|---|---|
Compiled but can't see... | 9 | 03:42, 30 September 2021 |
Literally so unhelpful | 1 | 19:27, 30 May 2015 |
Weird problem | 3 | 21:19, 27 October 2013 |
please help | 0 | 09:02, 14 March 2013 |
I set up a robot project on my NetBeans. I loaded the robocode libraries, etc. All this seemed to go successfully. I can even compile my robot class with success. I also pointed robocode to the directory my robot class is in.
But my robot doesn't show up in the robot list for fights!
Any ideas? Thanks.
Hi! How you "pointed robocode to the directory my robot class is in"? What this directory contents? Do you added ${robot.name}.properties file? Which package are you use?
Thanks for the reply!
I added the directory, "C:\MyRobots\build\classes\zjk", to development options. In that directory is only the class file, "drag0.class"
Okay, since you mentioned properties file, I looked around (I don't see any ${robot.name}.properties file). I tried adding the other directories above the one mentioned above and it still doesn't work. how is a .properties file generated and what is its purpose?
The .properties file is added to the JAR when you package your bot, but it shouldn't be needed in order to see a development version of your bot. I'm not sure, but I think you'll need to add the top level directory in Robocode - e.g., if your bot is zjk.MyRobot, under ...\build\classes\zjk\MyRobot.java, you'd need to point Robocode to ...\build\classes.
I have my things setup the other way, with Eclipse compiling the .class files into robocode/robots/, but that's kind of a stupid setup that I've just never bothered to change.
Not that stupid. Many times I saw a development version working, only to generate a non-working JAR. Wrong .properties file, security violations, wrong file names...
And the opposite problem (non-working development versions) arises when you use the engine API directly instead of the GUI . i.e. genetic tuning with full battles.
I also develop and test using JARs instead of raw .class files.
There was one time when codesize calculated the wrong size for a nanobot, adding the size of 2 development bots together.
I ended trying to shrink the code a lot only to discover it did already fit in the nanobot category before with lots of room for more code.
Okay, so I took the .class file and folder and threw it in the native Robocode folder and it works fine. So I know that's okay.
But still when I have it in my dev folder it doesn't show. In Robocode I have added: C:\MyRobots\build\classes\zjk C:\MyRobots\build\classes\ C:\MyRobots\build\ C:\MyRobots\
...and none of them work! :/
Did you add them all at the same time? I had problems with multiple classpath folders.
And the correct path should be C:\MyRobots\build\classes
Thanks I got it to work.
I am taking a course which is based on robocode and I found this thread in Google but @Therealdrag0 didn't mention how to actually solve the problem.
So the correct path must be the same as the package of the java class. For example, if the robot has package com.example.robot.MyRobot
then the only way robocode will see the robot is if you add a folder, let's say main, and inside there are folders com/example/robot containing MyRobot.class
so if my robot is compiled to build/classes/java/main/com/example/robot/MyRobot.class I have to add build/classes/java/main as a source ¯\_(ツ)_/¯
Thanks anyways.
I am an AP Computer Science student trying to create a robocode robot, because our teacher literally told us "this is your final teach yourself the API from online resources and then you're turning it in instead of a real test". I already know how a while loop works. The exact reason I cam was for learning how to get the results of a scan, but after skimming all the basic "how to use a while loop" stuff I see
>The game calls your onScannedRobot method whenever—during one of the actions—you see another robot. It sends along an event that can tell us lots of information about the robot—its name, how much life it has, where it is, where it's heading, how fast it's going, etc. However, since this is a simple robot, we're not going to look at any of that stuff. Let's just fire!
I came looking for "It sends along an event that can tell us lots of information about the robot—its name, how much life it has, where it is, where it's heading, how fast it's going, etc." and how to use that. I am not a java noob, I am a robocode noob. The sourceforge API thing isn't helping, it assumes A LOT of prior knowledge on the game that I don't have.
Can anyone make a tutorial for people new to robocode, but not java? Is there one I just can't seem to find? I'm so confused and I have no idea how to even get started.
Thank you!
On the front page of the wiki you will find the link to Tutorials. You'll probably be most interested in Robocode/Game Physics and Robocode/FAQ.
Several years ago, I was very active in robocode and may have screwed around with it a bit (not really sure anymore). Now, I've come back to find robocode behaving very weirdly. When I use the default robocode editor to make a new robot, save and compile it, the compiled .class file appears in the .robocode/robots directory in the appropriate package. However, when I make a new battle, neither the robot or its package show up (even after refreshing). When I removed some of the older bots already in the directory and refreshed the robot list, however, they were also removed from the robot list (Wierd, huh? It's almost like it ignores any new packages). I tried deleting the .robocode directory and retrying everything, but the result didn't change.
That does sound strange. What version of Robocode are you using? Fnl has made quite a lot of improvements to the app in recent years, so I'd probably just install a fresh copy and then copy over my robots directory.
And welcome back. :-)
Hey Voidious,
Sorry for the late reply. I'm still not sure what the problem was, but I'm pretty sure it had to do with the fact that I downloaded the ubuntu-tailored version from the Synaptic Package Manager. It was an older version as well. I tried reinstalling that without success. However, when I downloaded a fresh version from online it worked just fine (except for abysmal performance when using graphical debugging (it is seriously awful)).
p.s: When battling my new bot KBot against Dookious, I get 31% out of 10 battles :D. Remarkable since I just mashed together random movement + wall smoothing with an admittedly pretty powerful k-means clustering gun.
There are some graphics settings in preferences that might help. I don't think it defaults to "Fast".
I'm not sure if Robocode is equipped to run from an installed location like that. It seems entirely possible to me the package is just broken. (Note it's not necessarily the author, who'd probably know how to do it right, that packaged it.)
Keep up the good work vs Dookious. :-) He's still a pretty tough cookie.