Author |
Topic: Arimaa Client for AEI (Read 9764 times) |
|
rabbits
Forum Guru
Arimaa player #1337
Gender:
Posts: 108
|
|
Re: Arimaa Client for AEI
« Reply #15 on: May 20th, 2010, 6:30am » |
Quote Modify
|
The client is meant to be fetched with the Bazaar http://bazaar.canonical.com revision control system. Bazaar is multi-platform. Once you have it installed, run the command Code:bzr branch lp:arimaa-client |
| to get a copy of the Arimaa client code. You will have to have a copy of AEI to use the client. The client itself should work fine on every OS too, but I am not sure if anyone has tried it in Windows yet. Does anyone know for sure if it works in Windows?
|
|
IP Logged |
|
|
|
rbarreira
Forum Guru
Arimaa player #1621
Gender:
Posts: 605
|
|
Re: Arimaa Client for AEI
« Reply #16 on: May 22nd, 2010, 3:51am » |
Quote Modify
|
I keep getting errors like these on startup and every time I click: Quote:Number of rounds: 100 At timecontrol 3s/30s/100/60s/10m Giving these settings to all bots: hash: 50 Traceback (most recent call last): File "./gui.py", line 349, in OnPaint self.DoDrawing(dc) File "./gui.py", line 367, in DoDrawing piece = self.pieceAt(row, col) File "./gui.py", line 488, in pieceAt return self.position.piece_at(1 << (8*row+col)) AttributeError: 'Position' object has no attribute 'piece_at' Traceback (most recent call last): File "./gui.py", line 275, in OnTimer if event.GetEventObject() == self.aeiTimer: self.checkAEI() File "./gui.py", line 655, in checkAEI self.newgame() File "./gui.py", line 557, in newgame self.DoDrawing() File "./gui.py", line 367, in DoDrawing piece = self.pieceAt(row, col) File "./gui.py", line 488, in pieceAt return self.position.piece_at(1 << (8*row+col)) AttributeError: 'Position' object has no attribute 'piece_at' |
|
|
|
IP Logged |
|
|
|
rabbits
Forum Guru
Arimaa player #1337
Gender:
Posts: 108
|
|
Re: Arimaa Client for AEI
« Reply #17 on: May 23rd, 2010, 1:24pm » |
Quote Modify
|
I haven't double checked, but I think that your problem comes from using an older version of AEI. If you pull the latest AEI code, this error should go away.
|
|
IP Logged |
|
|
|
rbarreira
Forum Guru
Arimaa player #1621
Gender:
Posts: 605
|
|
Re: Arimaa Client for AEI
« Reply #18 on: Aug 1st, 2010, 7:31am » |
Quote Modify
|
After upgrading to AEI 1.1 it works indeed. Very nice! The proxy feature is great, to watch the games while running tests between bots.
|
« Last Edit: Aug 1st, 2010, 7:35am by rbarreira » |
IP Logged |
|
|
|
moretti
Forum Junior Member
Arimaa player #6472
Gender:
Posts: 6
|
|
Re: Arimaa Client for AEI
« Reply #19 on: Sep 9th, 2011, 5:05pm » |
Quote Modify
|
I didn't want to start a new thread for this simple thing, but I created a ~30 lines of code add on for those using the Arimaa Client to play without an internet connection. It basically starts roundrobin.py and opens a new tk window to let you select your opponent. This way you only create roundrobin.cfg once, and just use the selector to choose from the valid bots to play when you want a quick match and you don't have an internet connection. It's a quick hack for those who like things simple and fast. so: just add all your bots to the global bots section in roundrobing.cfg ie: Code:bots = human akimot OpFor2008 OpFor2009 OpFor2010 occam threaded_sample |
| (remember to add the arimaa-client as human in the bot list) then modify roundrobin.py and find this line: Code: else: print "Did not find a bot section for %s" % (bname) return 1 start_time = time.time() |
| Change them to call to our selector window Code: else: print "Did not find a bot section for %s" % (bname) return 1 bots = human_match(bots) start_time = time.time() |
| and then, define human_match function (place it at the top of the file) Code:def human_match(bots): import Tkinter as tk import tkMessageBox as mBox master =tk.Tk() master.title('dc740') master.minsize(200,20) master.v = tk.StringVar() master.om = tk.OptionMenu ( master, master.v, [] ) for bot in bots: if (bot['name'].lower() == 'human'): human = bot else: def myF(bot): master.selectedBot = bot master.v.set(bot['name']) master.om["menu"].add_command(label=bot['name'], command= lambda temp = bot: myF(temp) ) def ok(): if (master.v.get() != ""): bots = [ human , master.selectedBot ] master.retVal = bots master.quit() master.destroy() else: mBox.showerror("Bot selection error.", "Select a valid bot!") master.om["menu"].delete(0) # delete first element (basically the empty list used to create the optionMenu) label = tk.Label(master, text="Select a valid bot from the list:") button = tk.Button(master, text="OK", command=ok) label.pack() master.om.pack() button.pack() master.mainloop() return master.retVal |
| I've uploaded the full script and a sample configuration here: http://www.multiupload.com/FE68Y44GCL
|
« Last Edit: Sep 9th, 2011, 5:17pm by moretti » |
IP Logged |
|
|
|
Hippo
Forum Guru
Arimaa player #4450
Gender:
Posts: 883
|
|
Re: Arimaa Client for AEI
« Reply #20 on: Mar 6th, 2012, 1:18am » |
Quote Modify
|
on Sep 9th, 2011, 5:05pm, moretti wrote: Seems the link vanished. I am fighting with ON_KEY_* events ... whenever I press a key with opened client, the client freezes. I were afraid it was caused by my code modification, but seems it was an issue of the original code. Do anybody else have this problem or it's my local one? It is particulary annoying when you add chat feature, but pressing a key frozes the client ... . I have problems with the layout as well. When I put the original "layout" into a panel, it stops receiving events. This is why I am stuck with vertical layout so far. I will post the code hoping someone familiar with wx and python is able to proceed.
|
« Last Edit: Mar 6th, 2012, 1:30am by Hippo » |
IP Logged |
|
|
|
Hippo
Forum Guru
Arimaa player #4450
Gender:
Posts: 883
|
|
Re: Arimaa Client for AEI
« Reply #21 on: Mar 6th, 2012, 1:32am » |
Quote Modify
|
on Aug 1st, 2010, 7:31am, rbarreira wrote:After upgrading to AEI 1.1 it works indeed. Very nice! The proxy feature is great, to watch the games while running tests between bots. |
| Wow, seems I have missed it ... you could run two bots and proxy to watch them play? How is it achieved?
|
|
IP Logged |
|
|
|
rabbits
Forum Guru
Arimaa player #1337
Gender:
Posts: 108
|
|
Re: Arimaa Client for AEI
« Reply #22 on: Mar 6th, 2012, 2:36pm » |
Quote Modify
|
You can play a bot through the proxy by setting it up something like this in your roundrobin.cfg: Code:[BotHippoProxy] cmdline = python ../arimaa-client/gui.py --proxy BotHippo |
| I'm not sure why your client freezes with ON_KEY events.. Is the code you're running posted anywhere?
|
|
IP Logged |
|
|
|
rabbits
Forum Guru
Arimaa player #1337
Gender:
Posts: 108
|
|
Re: Arimaa Client for AEI
« Reply #24 on: Feb 26th, 2014, 12:20pm » |
Quote Modify
|
I just moved the repository to BitBucket: https://bitbucket.org/Rabbits/arimaa-client I originally chose LaunchPad to align with AEI. Now that AEI is hosted on Github, well, I guess I could put this code there... but it's on BitBucket for now. I intend to incorporate code in this thread (moretti's code and Hippo's fix) into the repository... Or someone else could do that for me...! I'll accept pull requests or even grant write access if someone wants it.
|
|
IP Logged |
|
|
|
abstractius
Forum Newbie
Arimaa player #6093
Gender:
Posts: 2
|
|
Re: Arimaa Client for AEI
« Reply #25 on: Apr 13th, 2014, 8:42am » |
Quote Modify
|
I am getting python gui.py Traceback (most recent call last): File "gui.py", line 37, in <module> class ArimaaClient(wx.Frame): File "gui.py", line 38, in ArimaaClient GOLD_COLOR = wx.Color(200, 175, 100) AttributeError: 'module' object has no attribute 'Color' It should be nothing serious
|
|
IP Logged |
|
|
|
harvestsnow
Forum Guru
Gender:
Posts: 88
|
|
Re: Arimaa Client for AEI
« Reply #26 on: Apr 15th, 2014, 3:44am » |
Quote Modify
|
on Apr 13th, 2014, 8:42am, abstractius wrote:I am getting python gui.py Traceback (most recent call last): File "gui.py", line 37, in <module> class ArimaaClient(wx.Frame): File "gui.py", line 38, in ArimaaClient GOLD_COLOR = wx.Color(200, 175, 100) AttributeError: 'module' object has no attribute 'Color' It should be nothing serious |
| In gui.py, try adding after the license: Code: import wxversion wxversion.select('2.8') |
| ... or maybe after the imports: Code:. They changed the class name between two versions.
|
« Last Edit: Apr 15th, 2014, 10:37am by harvestsnow » |
IP Logged |
|
|
|
|