Skip to content

Instantly share code, notes, and snippets.

@eatradish
Last active September 20, 2017 06:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eatradish/618870e4d3b2e77a5256551785677ec3 to your computer and use it in GitHub Desktop.
Save eatradish/618870e4d3b2e77a5256551785677ec3 to your computer and use it in GitHub Desktop.
snake.py
class point:
def __init__(self, x, y):
self.x = x
self.y = y
class vector:
def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.x2 = x2
self.y1 = y1
self.y2 = y2
self.x = self.x2 - self.x1
self.y = self.y2 - self.y1
class snake:
UP = 1
DN = 2
LEFT = 3
RIGHT = 4
def __init__(self, snake, pointHead, pointTail, direction = 1):
self.snake = snake
self.positionHead = pointHead
self.positionTail = pointTail
self.directionHead = point(0, 0)
self.directionTail = point(0, 0)
self.direction = direction
self.initHeadX = self.positionHead.x
self.initHeadY = self.positionHead.y
self.initTailX = self.positionTail.x
self.initTailY = self.positionTail.y
self.vector = vector(self.initHeadX, self.initHeadY, self.initTailX, self.initTailY)
self.length = int((self.vector.x ** 2 + self.vector.y ** 2) ** (1 / 2.0))
def move(self):
if self.vector.x * 0 - 1 * self.vector.y == 0:
if self.direction == 1:
if abs(self.positionHead.y - self.positionTail.y) == self.length:
self.directionTail.x = 0
self.directionTail.y = 1
elif self.initHeadX > self.initTailX:
self.directionTail.x = 1
self.directionTail.y = 0
elif self.initHeadX < self.initTailX:
self.directionTail.x = -1
self.directionTail.y = 0
elif self.initHeadX == self.positionTail.x:
self.directionHead.x = 0
self.directionHead.y = 1
else:
pass
if self.direction == 2:
if abs(self.positionHead.y - self.positionTail.y) == self.length:
self.directionTail.x = 0
self.directionTail.y = -1
elif self.initHeadX > self.initTailX:
self.directionTail.x = 1
self.directionTail.y = 0
elif self.initHeadX < self.initTailX:
self.directionTail.x = -1
self.directionTail.y = 0
elif self.initHeadX == self.positionTail.x:
self.directionHead.x = 0
self.directionHead.y = -1
else:
pass
if self.direction == 3 or self.direction == 4:
self.directionHead = 0
self.directionTail = 0
else:
if self.direction == 1 or self.direction == 2:
self.directionHead = 0
self.directionTail = 0
if self.direction == 3:
if abs(self.positionHead.x - self.positionTail.x) == self.length:
self.directionTail.x = 1
self.directionTail.y = 0
elif self.initHeadY > self.initTailY:
self.directionTail.y = 1
self.directionTail.x = 0
elif self.initHeadY < self.initTailY:
self.directionTail.y = -1
self.directionTail.x = 0
elif self.initTailY == self.positionTail.y:
self.directionTail.x = -1
self.directionTail.y = 0
else:
pass
if self.direction == 4:
if abs(self.positionHead.x - self.positionTail.x) == self.length:
self.directionTail.x = -1
self.directionTail.y = 0
elif self.initHeadY > self.initTailY:
self.directionTail.y = 1
self.directionTail.x = 0
elif self.initHeadY < self.initTailY:
self.directionTail.y = -1
self.directionTail.x = 0
elif self.initTailY == self.positionTail.y:
self.directionTail.x = 1
self.directionTail.y = 0
else:
pass
self.positionHead.x += self.directionHead.x
self.positionTail.x += self.directionTail.x
self.positionHead.y += self.directionHead.y
self.positionTail.y += self.directionTail.y
def turn(self, direction):
self.direction = direction
if self.direction == 1: # UP
self.directionHead.x = 0
self.directionHead.y = 1
elif self.direction == 2:
self.directionHead.x = 0
self.directionHead.y = -1
elif self.direction == 3:
self.directionHead.x = -1
self.directionHead.y = 0
elif self.direction == 4:
self.directionHead.x = 1
self.directionHead.y = 0
else:
return
class main:
def main():
snake1 = snake('snake1', point(0, 0), point(3,0))
snake1.turn(snake.UP)
for i in range(4):
snake1.move()
print(snake1.positionHead.x, snake1.positionHead.y, snake1.positionTail.x, snake1.positionTail.y)
#print(snake1.vector.x, snake1.vector.y, snake1.length)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment