Advertisement
Guest User

classe da dove importo i metodi del rover

a guest
Nov 13th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.01 KB | None | 0 0
  1.  
  2. from random import choice, randrange
  3. from time import time
  4. from actor import Actor, Arena
  5.  
  6. class Ball(Actor):
  7.     def __init__(self, arena, pos):
  8.         self._x, self._y = pos
  9.         self._w, self._h = 20, 20
  10.         self._speed = 5
  11.         self._dx, self._dy = self._speed, self._speed
  12.         self._arena = arena
  13.         arena.add(self)
  14.  
  15.     def move(self):
  16.         arena_w, arena_h = self._arena.size()
  17.         if not (0 <= self._x + self._dx <= arena_w - self._w):
  18.             self._dx = -self._dx
  19.         if not (0 <= self._y + self._dy <= arena_h - self._h):
  20.             self._dy = -self._dy
  21.         self._x += self._dx
  22.         self._y += self._dy
  23.  
  24.     def collide(self, other):
  25.         if not isinstance(other, Ghost):
  26.             x, y, w, h = other.position()
  27.             if x < self._x:
  28.                 self._dx = self._speed
  29.             else:
  30.                 self._dx = -self._speed
  31.             if y < self._y:
  32.                 self._dy = self._speed
  33.             else:
  34.                 self._dy = -self._speed
  35.  
  36.     def position(self):
  37.         return self._x, self._y, self._w, self._h
  38.  
  39.     def symbol(self):
  40.         return 0, 0, self._w, self._h
  41.  
  42.  
  43. class Ghost(Actor):
  44.     def __init__(self, arena, pos):
  45.         self._x, self._y = pos
  46.         self._w, self._h = 20, 20
  47.         self._arena = arena
  48.         arena.add(self)
  49.         self._visible = True
  50.  
  51.     def move(self):
  52.         dx = choice([-5, 0, 5])
  53.         dy = choice([-5, 0, 5])
  54.         arena_w, arena_h = self._arena.size()
  55.         self._x = (self._x + dx) % arena_w
  56.         self._y = (self._y + dy) % arena_h
  57.  
  58.         if randrange(100) == 0:
  59.             self._visible = not self._visible
  60.  
  61.     def collide(self, other):
  62.         pass
  63.  
  64.     def position(self):
  65.         return self._x, self._y, self._w, self._h
  66.  
  67.     def symbol(self):
  68.         if self._visible:
  69.             return 20, 0, self._w, self._h
  70.         return 20, 20, self._w, self._h
  71.  
  72.  
  73. class Rover(Actor):
  74.     def __init__(self, arena, pos):
  75.         self._x, self._y = pos
  76.         self._w, self._h = 20, 20
  77.         self._speed = 2
  78.         self._dx, self._dy = 0, 0
  79.         self._lives = 3
  80.         self._last_collision = 0
  81.         self._arena = arena
  82.         arena.add(self)
  83.  
  84.     def move(self):
  85.         arena_w, arena_h = self._arena.size()
  86.         self._y += self._dy
  87.         if self._y < 0:
  88.             self._y = 0
  89.         elif self._y > arena_h - self._h:
  90.             self._y = arena_h - self._h
  91.  
  92.         self._x += self._dx
  93.         if self._x < 0:
  94.             self._x = 0
  95.         elif self._x > arena_w - self._w:
  96.             self._x = arena_w - self._w
  97.  
  98.     def go_left(self, go: bool):
  99.         if go:
  100.             self._dx = -self._speed
  101.         elif self._dx < 0:
  102.             self._dx = 0
  103.  
  104.     def go_right(self, go: bool):
  105.         if go:
  106.             self._dx = self._speed
  107.         elif self._dx > 0:
  108.             self._dx = 0
  109.  
  110.     def go_up(self, go: bool):
  111.         if go:
  112.             self._dy = -self._speed
  113.         elif self._dy < 0:
  114.             self._dy = self._speed
  115.  
  116.     def go_down(self, go: bool):
  117.         if go:
  118.             self._dy = self._speed
  119.         elif self._dy > 0:
  120.             self._dy = 0
  121.  
  122.     def lives(self) -> int:
  123.         return self._lives
  124.  
  125.     def collide(self, other):
  126.         if time() - self._last_collision < 2:
  127.             return
  128.         self._last_collision = time()
  129.         if isinstance(other, Ghost):
  130.             self._lives = 0
  131.         elif isinstance(other, Ball):
  132.             self._lives -= 1
  133.  
  134.     def position(self):
  135.         return self._x, self._y, self._w, self._h
  136.  
  137.     def symbol(self):
  138.         return 0, 20, self._w, self._h
  139.  
  140.  
  141. def print_arena(arena):
  142.     for a in arena.actors():
  143.         print(type(a).__name__, '@', a.position())
  144.  
  145.  
  146. def main():
  147.     arena = Arena((480, 360))
  148.     Ball(arena, (40, 80))
  149.     Ball(arena, (80, 40))
  150.     Ghost(arena, (120, 80))
  151.  
  152.     for i in range(25):
  153.         print_arena(arena)
  154.         arena.move_all()
  155.  
  156. ##main()  # call main to start the program
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement