Skip to content

Commit

Permalink
Добавлена сетка + фикс смерти от избегания закраски изнутри
Browse files Browse the repository at this point in the history
  • Loading branch information
Kislenko Maksim committed Jul 25, 2019
1 parent aaf28c6 commit 7ded1e9
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 14 deletions.
7 changes: 2 additions & 5 deletions paperio/local_runner/game_objects/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
class Player:
speed = SPEED
direction = None
prev_direction = None

def __init__(self, id, x, y, name, color, client):
self.id = id
Expand All @@ -28,8 +27,6 @@ def __init__(self, id, x, y, name, color, client):
self.is_disconnected = False

def change_direction(self, command):
self.prev_direction = self.direction

if command == UP and self.direction != DOWN:
self.direction = UP

Expand Down Expand Up @@ -184,9 +181,9 @@ def get_position(self):
return (x, y), (x, y) != (self.x, self.y)

def get_prev_position(self):
if self.prev_direction is None:
if self.direction is None:
return self.x, self.y
return self.diff_position(self.prev_direction, self.x, self.y, WIDTH)
return self.diff_position(self.direction, self.x, self.y, WIDTH)

def is_ate(self, players_to_captured):
for p, captured in players_to_captured.items():
Expand Down
34 changes: 25 additions & 9 deletions paperio/local_runner/game_objects/scene.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,28 @@
from helpers import draw_quadrilateral, draw_line


class Grid:
def __init__(self, color):
self.batch = pyglet.graphics.Batch()

y = WIDTH
while (y < WINDOW_HEIGHT):
self.batch.add(2, pyglet.gl.GL_LINES, None,
('v2i', (0, y, WINDOW_WIDTH, y)),
('c4B', 2 * color))
y += WIDTH

x = WIDTH
while (x < WINDOW_WIDTH):
self.batch.add(2, pyglet.gl.GL_LINES, None,
('v2i', (x, 0, x, WINDOW_HEIGHT)),
('c4B', 2 * color))
x += WIDTH

def draw(self):
self.batch.draw()


class Scene:
background_color = (220 / 255, 240 / 255, 244 / 255, 1)
border_color = (144, 163, 174, 255)
Expand Down Expand Up @@ -31,9 +53,11 @@ def __init__(self, scale):
pyglet.gl.glClearColor(*self.background_color)
pyglet.gl.glEnable(pyglet.gl.GL_BLEND)
pyglet.gl.glBlendFunc(pyglet.gl.GL_SRC_ALPHA, pyglet.gl.GL_ONE_MINUS_SRC_ALPHA)
self.grid = Grid(self.grid_color)

def clear(self):
self.window.clear()
self.draw_grid()

def append_label_to_leaderboard(self, label, color):
if len(self.labels_buffer) > self.leaderboard_rows_count:
Expand All @@ -59,15 +83,7 @@ def show_game_over(self, timeout=False):
self.game_over_label.draw()

def draw_grid(self):
y = WIDTH
while (y < WINDOW_HEIGHT):
draw_line((0, y), (WINDOW_WIDTH, y), self.grid_color, 2)
y += WIDTH

x = WIDTH
while (x < WINDOW_WIDTH):
draw_line((x, 0), (x, WINDOW_HEIGHT), self.grid_color, 2)
x += WIDTH
self.grid.draw()

def draw_border(self):
draw_line((0, 0), (0, WINDOW_HEIGHT), self.border_color, self.border_width)
Expand Down

1 comment on commit 7ded1e9

@Pro100AlexHell
Copy link

@Pro100AlexHell Pro100AlexHell commented on 7ded1e9 Jul 28, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

что значит "фикс смерти от избегания закраски изнутри "

  • теперь умирает изза избегания закраски внутри?
  • теперь умирает изза закраски внутри?
  • теперь НЕ умирает изза избегания закраски внутри?
  • теперь НЕ умирает изза закраски внутри?

только что смотрел
e7a05f3
связанный фикс
это видимо фикс на фикс

не пойму - почему
return self.diff_position(self.prev_direction, self.x, self.y, WIDTH)
или
return self.diff_position(self.direction, self.x, self.y, WIDTH)
должно работать?
и то и другое - баг

надо проверять ПРЕДЫДУЩУЮ КЛЕТКУ
т.е если мы идем UP то надо по направлению DOWN проверять
нужно инвертировать self.direction и потом проверить
либо я не понял и тут еще более запутанно

p.s.
def diff_position(self, direction, x, y, val):
if direction == UP:
return x, y - val

вот это вот все - по факту уже делает ИНВЕРСИЮ позиции.. но названо явно неверно

логичней ввести функцию get_position_with_offset(self, dir, x, y, speed) и юзать ее без копипаста - везде где над

  • и где двигается игрок в основной логике
  • и тут для нового фикса

invert_direction

  • и тут сначала вызвать invert_direction (UP меняет на DOWN и т.п) юзать
  • которую также пеериспользовать в проверке может ли повернуть в N направление, т.е чтоб нельзя было повернуть в инверсную

вместо 2х копипастов и такого запутывания - ввести нормальные имена и более логично.. сразу? не?

Please sign in to comment.