From 3bac494997ef87da511669d75b01de6f1f5711e9 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 3 May 2009 00:19:39 +0200 Subject: * host/simu: - added Eurobot 2009 table. --- host/simu/model/table_eurobot2009.py | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 host/simu/model/table_eurobot2009.py (limited to 'host/simu/model') diff --git a/host/simu/model/table_eurobot2009.py b/host/simu/model/table_eurobot2009.py new file mode 100644 index 00000000..002cd749 --- /dev/null +++ b/host/simu/model/table_eurobot2009.py @@ -0,0 +1,75 @@ +# simu - Robot simulation. {{{ +# +# Copyright (C) 2009 Nicolas Schodet +# +# APBTeam: +# Web: http://apbteam.org/ +# Email: team AT apbteam DOT org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# }}} +"""Table model for Eurobot 2009.""" +import simu.model.table +from random import randint +from simu.model.round_obstacle import RoundObstacle + +class Table (simu.model.table.Table): + + def __init__ (self, pucks_card = None, dispensers_card = None): + simu.model.table.Table.__init__ (self) + # Draw cards. + if pucks_card is None: + pucks_card = randint (1, 10) + if dispensers_card is None: + dispensers_card = randint (1, 2) + self.pucks_card = pucks_card + self.dispensers_card = dispensers_card + # Put pucks on the table. + self.pucks = [ ] + puck_n = { 1: (1, 2, 3), 2: (1, 3, 4), 3: (1, 3, 5), 4: (1, 3, 6), + 5: (2, 3, 4), 6: (2, 3, 5), 7: (2, 3, 6), 8: (3, 4, 5), + 9: (3, 4, 6), 10: (3, 5, 6) } + for n in puck_n[pucks_card]: + pos1 = ((n - 1) % 3, (n - 1) / 3) + pos2 = (pos1[0], 3 - pos1[1]) + for pos in pos1, pos2: + p = RoundObstacle (35, 1) + p.pos = (1500 - 400 - 250 * pos[0], 1050 - 125 + 200 * pos[1]) + p.color = False + self.pucks.append (p) + p = RoundObstacle (35, 1) + p.pos = (1500 + 400 + 250 * pos[0], 1050 - 125 + 200 * pos[1]) + p.color = True + self.pucks.append (p) + # Put pucks in dispensers. + if self.dispensers_card == 1: + ds = -250 + else: + ds = +250 + for pos, color in ( + ((289, 40), True), + ((3000 - 289, 40), False), + ((40, 1050 + ds), True), + ((3000 - 40, 1050 + ds), False), + ): + for i in range (5): + p = RoundObstacle (35, 1) + p.pos = (pos[0] + i * 2, pos[1] + i * 2) + p.color = color + self.pucks.append (p) + # Add pucks in obstacles. + self.obstacles += self.pucks + -- cgit v1.2.3