Projek Uler Cobra Jawa
Projek Uler Cobra Jawa
import random
GAME_WIDTH = 700
GAME_HEIGHT = 700
SPACE_SIZE = 50
BODY_PARTS = 3
SNAKE_COLOR = "#00FF00"
FOOD_COLOR = "#FF0000"
BACKGROUND_COLOR = "#000000"
direction = 'down'
class Snake:
def __init__(self):
self.body_size = BODY_PARTS
self.coordinates = []
self.squares = []
for x, y in self.coordinates:
square = canvas.create_rectangle(x, y, x + SPACE_SIZE, y + SPACE_SIZE,
fill=SNAKE_COLOR, tag="snake")
self.squares.append(square)
class Food:
def __init__(self):
x = random.randint(0, int((GAME_WIDTH / SPACE_SIZE) - 1)) * SPACE_SIZE
y = random.randint(0, int((GAME_HEIGHT / SPACE_SIZE) - 1)) * SPACE_SIZE
self.coordinates = [x, y]
canvas.create_oval(x, y, x + SPACE_SIZE, y + SPACE_SIZE, fill=FOOD_COLOR,
tag="food")
x, y = snake.coordinates[0]
if direction == "up":
y -= SPACE_SIZE
elif direction == "down":
y += SPACE_SIZE
elif direction == "left":
x -= SPACE_SIZE
elif direction == "right":
x += SPACE_SIZE
if score % 5 == 0:
current_level += 1
SPEED -= 10 # Decrease speed for each level up
label_level.config(text="Level: {}".format(current_level))
label.config(text="Score:{}".format(score))
canvas.delete("food")
food = Food()
else:
del snake.coordinates[-1]
canvas.delete(snake.squares[-1])
del snake.squares[-1]
if check_collisions(snake):
game_over()
else:
window.after(SPEED, next_turn, snake, food)
def change_direction(new_direction):
global direction
if new_direction == 'left' and direction != 'right':
direction = new_direction
elif new_direction == 'right' and direction != 'left':
direction = new_direction
elif new_direction == 'up' and direction != 'down':
direction = new_direction
elif new_direction == 'down' and direction != 'up':
direction = new_direction
def check_collisions(snake):
x, y = snake.coordinates[0]
return False
def game_over():
canvas.delete("snake")
canvas.create_text(canvas.winfo_width() / 2, canvas.winfo_height() / 2,
font=('consolas', 70), text="GAME OVER", fill="red",
tag="gameover")
canvas.create_text(canvas.winfo_width() / 2, canvas.winfo_height() / 1.5,
font=('consolas', 20), text="Press R to play again",
fill="white", tag="restart")
window.bind('<Key>', restart_game)
def restart_game(event):
global direction, score, SPEED, current_level
if event.char.lower() == 'r':
direction = 'down'
score = 0
SPEED = 200 # Reset speed to initial value
current_level = 1
label.config(text="Score:{}".format(score))
label_level.config(text="Level: {}".format(current_level))
canvas.delete("gameover", "restart")
snake = Snake()
food = Food()
window.after_id = window.after(SPEED, next_turn, snake, food)
window = Tk()
window.title("Snake game")
window.resizable(False, False)
score = 0
window.update()
window_width = window.winfo_width()
window_height = window.winfo_height()
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
window.geometry(f"{window_width}x{window_height}+{x}+{y}")
snake = Snake()
food = Food()
window.mainloop()