diff options
author | Alan Aguiar <alanjas@hotmail.com> | 2013-05-07 02:54:38 (GMT) |
---|---|---|
committer | Alan Aguiar <alanjas@hotmail.com> | 2013-05-07 02:54:38 (GMT) |
commit | 4c9f7a1d7fb364780f75523e70e450cf299f9508 (patch) | |
tree | 70c3635579dee76a9dbe936111a9429220fc4327 | |
parent | 8f42beaccd85544cfeb9f42e302a07bc12095d30 (diff) |
only one line draw
-rwxr-xr-x | main.py | 69 |
1 files changed, 53 insertions, 16 deletions
@@ -15,6 +15,14 @@ T = 15 COLOR1 = (255, 0, 0) COLOR2 = (0, 0, 255) +class box: + + def __init__(self): + self.up = 0 + self.left = 0 + self.right = 0 + self.down = 0 + class Game: def __init__(self, parent=None): @@ -22,6 +30,7 @@ class Game: self.horizontal = [] self.vertical = [] + self.boxes = [] self.x_end = 0 self.y_end = 0 self.screen = pygame.display.set_mode((900, 700)) @@ -40,18 +49,22 @@ class Game: for i in range(w): x = i * BOX_SIZE[0] + X_OFFSET self.horizontal.append(x) + v_boxes = [] for j in range(h): y = j * BOX_SIZE[1] + Y_OFFSET if i == 0: self.vertical.append(y) - + if j > 0: + v_boxes.append(box()) pygame.draw.circle(self.screen, (0, 0, 0), (x, y), 5, 5) - + if i > 0: + self.boxes.append(v_boxes) self.x_end = (len(self.horizontal) - 1) * BOX_SIZE[0] + X_OFFSET self.y_end = (len(self.vertical) - 1) * BOX_SIZE[1] + Y_OFFSET print self.horizontal print self.vertical + print len(self.boxes) def where_x(self, x): for i in range(len(self.horizontal)): @@ -59,8 +72,8 @@ class Game: x1 = self.horizontal[i - 1] x2 = self.horizontal[i] if x >= x1 and x <= x2: - return x1, x2 - return False + return (x1, x2, i) + return (False, False, 0) def where_y(self, y): for j in range(len(self.vertical)): @@ -68,36 +81,60 @@ class Game: y1 = self.vertical[j - 1] y2 = self.vertical[j] if y >= y1 and y <= y2: - return y1, y2 - return False + return (y1, y2, j) + return (False, False, 0) def where(self, pos): x, y = pos r1 = self.where_x(x) r2 = self.where_y(y) - if not(r1 == False): - if not(r2 == False): + if not(r1[0] == False): + if not(r2[0] == False): if x < (r1[0] + T): - #print 'cerca de', r1[0] + print 'lado izquierdo' + x_b = r1[2] - 1 + y_b = r2[2] - 1 + b = self.boxes[x_b][y_b] + if b.left: + print 'hay linea' + return + b.left = 1 + print 'box', x_b, y_b, b.up, b.left, b.right, b.down + if x_b > 0: + b2 = self.boxes[x_b - 1][y_b] + b2.right = 1 + print 'box', x_b - 1, y_b, b2.up, b2.left, b2.right, b2.down pygame.draw.line(self.screen, COLOR1, (r1[0],r2[0]), (r1[0],r2[1]), 5) return elif x > (r1[1] - T): - #print 'cerca de', r1[1] + print 'lado derecho' + x_b = r1[2] - 1 + y_b = r2[2] - 1 + b = self.boxes[x_b][y_b] + if b.right: + print 'hay linea' + return + b.right = 1 + print 'box', x_b, y_b, b.up, b.left, b.right, b.down + if x_b < GRID_SIZE[1]: + b2 = self.boxes[x_b + 1][y_b] + b2.left = 1 + print 'box', x_b - 1, y_b, b2.up, b2.left, b2.right, b2.down pygame.draw.line(self.screen, COLOR1, (r1[1],r2[0]), (r1[1],r2[1]), 5) return else: if (x > (X_OFFSET - T)) and (x < X_OFFSET): - if not(r2 == False): + if not(r2[0] == False): pygame.draw.line(self.screen, COLOR1, (X_OFFSET,r2[0]), (X_OFFSET,r2[1]), 5) return elif (x < (self.x_end + T)) and (x > self.x_end): - if not(r2 == False): + if not(r2[0] == False): pygame.draw.line(self.screen, COLOR1, (self.x_end,r2[0]), (self.x_end,r2[1]), 5) return - if not(r2 == False): - if not(r1 == False): + if not(r2[0] == False): + if not(r1[0] == False): if y < (r2[0] + T): #print 'aloja', r2[0] pygame.draw.line(self.screen, COLOR2, (r1[0],r2[0]), (r1[1],r2[0]), 5) @@ -108,11 +145,11 @@ class Game: return else: if (y > Y_OFFSET - T) and (y < Y_OFFSET): - if not(r1 == False): + if not(r1[0] == False): pygame.draw.line(self.screen, COLOR2, (r1[0],Y_OFFSET), (r1[1],Y_OFFSET), 5) return elif (y < (self.y_end + T)) and (y > self.y_end): - if not(r1 == False): + if not(r1[0] == False): pygame.draw.line(self.screen, COLOR2, (r1[0],self.y_end), (r1[1],self.y_end), 5) return |