idea: Robocode for Python
Martin Franklin
martin.franklin at westgeo.com
Thu Sep 13 06:41:40 EDT 2001
C. Porter Bassett wrote:
>> >
>> > warning: jfindattr(org.python.core.PyProxy,java.lang.String) in
>> > org.python.core.Py has been deprecated
>> > PyObject inst = Py.jfindattr(this, "onScannedRobot");
>> > ^
>> > .\jpywork\pyrobot.java:110: warning:
>> > jfindattr(org.python.core.PyProxy,java.lang.String) in
>> > org.python.core.Py has been deprecated
>> > PyObject inst = Py.jfindattr(this, "run");
>> >
>>
>> Deprecated methods should not be used for new designs as these might
>> disapear in a future version of Java. On the other hand this means that
>> these methods are there and perfectly working, its only a warning.
>
> OK, how am I using depreciated methods? I wasn't doing anything
> special - just defining a class with two methods. Here's my code
> again:
>
> from robocode import *
> class pyrobot(Robot):
> def run(self):
> while(1):
> self.ahead(100)
> self.turnGunRight(360)
> self.back(100)
> self.turnGunRight(360)
> def onScannedRobot(self, event):
> self.fire(1)
>
I guess you don't need to wory about the depreciated methods (yet!) lets
try getting it working first...
To elimimate robocode from the equation create a robocode.py file like so:-
################### code ##################
class Robot:
def ahead(self, value):
print 'Ahead', value
def turnGunRight(self, value):
print 'turnGunRight', value
def back(self, value):
print 'Back', value
def fire(self, value):
print 'Fire', value
################### end code ##################
next your code:
################### code ##################
from robocode import *
class pyrobot(Robot):
def run(self):
for n in range(5):
self.ahead(100)
self.turnGunRight(360)
self.back(100)
self.turnGunRight(360)
def onScannedRobot(self, event):
self.fire(1)
if __name__=='__main__':
myrobot=pyrobot()
myrobot.run()
################### end code ##################
Ok so i've made a small change (no while 1 loop!) and i've added the magic
if __name__ thing so I can execute it like so:-
Standard Cpython:-
[bpse at m-franklin Jscripts]$ python pyrobot.py
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
[bpse at m-franklin Jscripts]$
Now jython :-
[bpse at m-franklin Jscripts]$ jython pyrobot.py
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
[bpse at m-franklin Jscripts]$
Now compile it to java:-
[bpse at m-franklin Jscripts]$ ls -la
total 28
drwxrwxr-x 3 bpse bpse 4096 Sep 13 11:38 .
drwxrwxrwx 32 root root 4096 Sep 12 16:40 ..
drwxrwxr-x 2 bpse bpse 4096 Sep 13 11:38 jpywork
-rw-rw-r-- 1 bpse bpse 325 Sep 13 11:37 pyrobot.py
-rw-rw-r-- 1 bpse bpse 298 Sep 13 11:33 robocode.py
-rw-rw-r-- 1 bpse bpse 787 Sep 13 11:33 robocode.pyc
-rw-rw-r-- 1 bpse bpse 2887 Sep 13 11:34 robocode$py.class
[bpse at m-franklin Jscripts]$ jythonc *.py
processing pyrobot
processing robocode
Required packages:
Creating adapters:
Creating .java files:
robocode module
pyrobot module
Compiling .java to .class...
Compiling with args: ['/usr/java/jdk1.3/bin/javac', '-classpath',
'/usr/python/Jython/jython.jar:/usr/python/Jython/jython.jar:./:./jpywork::/usr/python/Jython/Tools/jythonc:/usr/python/Jscripts/.:/usr/python/Jython/Lib',
'./jpywork/robocode.java', './jpywork/pyrobot.java']
0
[bpse at m-franklin Jscripts]$
now execute it with java:-
[bpse at m-franklin Jscripts]$ cd jpywork/
[bpse at m-franklin jpywork]$ export CLASSPATH=/usr/python/Jython/jython.jar:./
[bpse at m-franklin jpywork]$ java pyrobot
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
Ahead 100
turnGunRight 360
Back 100
turnGunRight 360
[bpse at m-franklin jpywork]$
I guess what i'm trying to say is if you get this working there nothing
wrong with the jython/python side of things and I am at a loss as to what
is happening (I don't know what robocode is :-( sorry)
More information about the Python-list
mailing list