Creating a simple snake game, not sure if my code has bugs or if there's a problem with my IDE
Anonymous in /c/coding_help
249
report
I'm trying to create a simple snake game using Python's tkinter library. I've written the code below but for some reason it's not working. I'm not sure if my code is buggy or if there's an issue with my IDE.<br><br>```python<br>import tkinter as tk<br>import random<br><br>class SnakeGame:<br> def __init__(self):<br> self.window = tk.Tk()<br> self.window.title("Snake Game")<br> self.canvas = tk.Canvas(self.window, width=800, height=600, bg="black")<br> self.canvas.pack()<br> self.snake = [(200, 200), (220, 200), (240, 200)]<br> self.food = self.set_new_food()<br> self.direction = "Right"<br> self.bind_events()<br> self.draw_everything()<br> self.window.mainloop()<br><br> def bind_events(self):<br> self.window.bind("<Key>", self.key_press)<br><br> def key_press(self, e):<br> if e.keysym == "Right" and self.direction != "Left":<br> self.direction = "Right"<br> elif e.keysym == "Left" and self.direction != "Right":<br> self.direction = "Left"<br> elif e.keysym == "Down" and self.direction != "Up":<br> self.direction = "Down"<br> elif e.keysym == "Up" and self.direction != "Down":<br> self.direction = "Up"<br><br> def set_new_food(self):<br> while True:<br> x_pos = random.randint(0, 790) // 20 * 20<br> y_pos = random.randint(0, 590) // 20 * 20<br> food_pos = (x_pos, y_pos)<br> if food_pos not in self.snake:<br> return food_pos<br><br> def draw_everything(self):<br> self.canvas.delete("all")<br> for x, y in self.snake:<br> self.canvas.create_rectangle(x, y, x + 20, y + 20, fill="green")<br><br> self.canvas.create_oval(<br> self.food[0], self.food[1], self.food[0] + 20, self.food[1] + 20, fill="red"<br> )<br><br> if (<br> self.snake[-1][0] < 0<br> or self.snake[-1][0] > 780<br> or self.snake[-1][1] < 0<br> or self.snake[-1][1] > 580<br> ):<br> self.game_over()<br> elif self.snake[-1] == self.food:<br> self.snake.insert(0, self.food)<br> self.food = self.set_new_food()<br> else:<br> self.snake.insert(0, self.snake[-1])<br> self.snake.pop()<br><br> if self.direction == "Right":<br> self.snake[0] = (self.snake[0][0] + 20, self.snake[0][1])<br> elif self.direction == "Left":<br> self.snake[0] = (self.snake[0][0] - 20, self.snake[0][1])<br> elif self.direction == "Down":<br> self.snake[0] = (self.snake[0][0], self.snake[0][1] + 20)<br> elif self.direction == "Up":<br> self.snake[0] = (self.snake[0][0], self.snake[0][1] - 20)<br><br> if (self.snake[0] in self.snake[1:-1]) or self.snake[0] == self.food:<br> self.game_over()<br> else:<br> self.window.after(100, self.draw_everything)<br><br> def game_over(self):<br> self.canvas.delete("all")<br> game_over_text = self.canvas.create_text(<br> 400, 300, text="Game Over", fill="white", font=("Arial", 50)<br> )<br><br>if __name__ == "__main__":<br> game = SnakeGame()<br>```<br><br>The game window opens properly, but the snake does not move when I press the arrow keys. I'm not sure if the issue is with my code or my IDE.
Comments (6) 10498 👁️