-
-
Save wynand1004/ec105fd2f457b10d971c09586ec44900 to your computer and use it in GitHub Desktop.
# Simple Snake Game in Python 3 for Beginners | |
# By @TokyoEdTech | |
import turtle | |
import time | |
import random | |
delay = 0.1 | |
# Score | |
score = 0 | |
high_score = 0 | |
# Set up the screen | |
wn = turtle.Screen() | |
wn.title("Snake Game by @TokyoEdTech") | |
wn.bgcolor("green") | |
wn.setup(width=600, height=600) | |
wn.tracer(0) # Turns off the screen updates | |
# Snake head | |
head = turtle.Turtle() | |
head.speed(0) | |
head.shape("square") | |
head.color("black") | |
head.penup() | |
head.goto(0,0) | |
head.direction = "stop" | |
# Snake food | |
food = turtle.Turtle() | |
food.speed(0) | |
food.shape("circle") | |
food.color("red") | |
food.penup() | |
food.goto(0,100) | |
segments = [] | |
# Pen | |
pen = turtle.Turtle() | |
pen.speed(0) | |
pen.shape("square") | |
pen.color("white") | |
pen.penup() | |
pen.hideturtle() | |
pen.goto(0, 260) | |
pen.write("Score: 0 High Score: 0", align="center", font=("Courier", 24, "normal")) | |
# Functions | |
def go_up(): | |
if head.direction != "down": | |
head.direction = "up" | |
def go_down(): | |
if head.direction != "up": | |
head.direction = "down" | |
def go_left(): | |
if head.direction != "right": | |
head.direction = "left" | |
def go_right(): | |
if head.direction != "left": | |
head.direction = "right" | |
def move(): | |
if head.direction == "up": | |
y = head.ycor() | |
head.sety(y + 20) | |
if head.direction == "down": | |
y = head.ycor() | |
head.sety(y - 20) | |
if head.direction == "left": | |
x = head.xcor() | |
head.setx(x - 20) | |
if head.direction == "right": | |
x = head.xcor() | |
head.setx(x + 20) | |
# Keyboard bindings | |
wn.listen() | |
wn.onkeypress(go_up, "w") | |
wn.onkeypress(go_down, "s") | |
wn.onkeypress(go_left, "a") | |
wn.onkeypress(go_right, "d") | |
# Main game loop | |
while True: | |
wn.update() | |
# Check for a collision with the border | |
if head.xcor()>290 or head.xcor()<-290 or head.ycor()>290 or head.ycor()<-290: | |
time.sleep(1) | |
head.goto(0,0) | |
head.direction = "stop" | |
# Hide the segments | |
for segment in segments: | |
segment.goto(1000, 1000) | |
# Clear the segments list | |
segments.clear() | |
# Reset the score | |
score = 0 | |
# Reset the delay | |
delay = 0.1 | |
pen.clear() | |
pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) | |
# Check for a collision with the food | |
if head.distance(food) < 20: | |
# Move the food to a random spot | |
x = random.randint(-290, 290) | |
y = random.randint(-290, 290) | |
food.goto(x,y) | |
# Add a segment | |
new_segment = turtle.Turtle() | |
new_segment.speed(0) | |
new_segment.shape("square") | |
new_segment.color("grey") | |
new_segment.penup() | |
segments.append(new_segment) | |
# Shorten the delay | |
delay -= 0.001 | |
# Increase the score | |
score += 10 | |
if score > high_score: | |
high_score = score | |
pen.clear() | |
pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) | |
# Move the end segments first in reverse order | |
for index in range(len(segments)-1, 0, -1): | |
x = segments[index-1].xcor() | |
y = segments[index-1].ycor() | |
segments[index].goto(x, y) | |
# Move segment 0 to where the head is | |
if len(segments) > 0: | |
x = head.xcor() | |
y = head.ycor() | |
segments[0].goto(x,y) | |
move() | |
# Check for head collision with the body segments | |
for segment in segments: | |
if segment.distance(head) < 20: | |
time.sleep(1) | |
head.goto(0,0) | |
head.direction = "stop" | |
# Hide the segments | |
for segment in segments: | |
segment.goto(1000, 1000) | |
# Clear the segments list | |
segments.clear() | |
# Reset the score | |
score = 0 | |
# Reset the delay | |
delay = 0.1 | |
# Update the score display | |
pen.clear() | |
pen.write("Score: {} High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) | |
time.sleep(delay) | |
wn.mainloop() |
Great code, here is is tutorial to make fruit ninja game in python
Traceback (most recent call last):
File "C:/Users/INDIA/AppData/Local/Programs/Python/Python311/Lovely game.py", line 90, in
wn.update()
File "C:\Users\INDIA\AppData\Local\Programs\Python\Python311\Lib\turtle.py", line 1304, in update
t._update_data()
File "C:\Users\INDIA\AppData\Local\Programs\Python\Python311\Lib\turtle.py", line 2647, in _update_data
self.screen._incrementudc()
File "C:\Users\INDIA\AppData\Local\Programs\Python\Python311\Lib\turtle.py", line 1293, in _incrementudc
raise Terminator
turtle.Terminator
"What to do with this now??"
Getting below error while running in Ubuntu terminal
Traceback (most recent call last):
File "/home/ubuntu/python/snake.py", line 12, in
wn = turtle.Screen()
File "/usr/lib/python3.10/turtle.py", line 3664, in Screen
Turtle._screen = _Screen()
File "/usr/lib/python3.10/turtle.py", line 3680, in init
_Screen._root = self._root = _Root()
File "/usr/lib/python3.10/turtle.py", line 435, in init
TK.Tk.init(self)
File "/usr/lib/python3.10/tkinter/init.py", line 2299, in init
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
ubuntu@ip-172-31-22-55:~/python$ nano snake.py
Thank you for the code! The snake game was amazing.
I think you're commenting to the wrong person, just saying
Wdym it works
arrow keys are not working in ubuntu how to play the game
its amazing game nice! I'm still learning how to code python thanks for sharing this!
Hey! I was wondering is there a way I can change the background from green to checkers?
You can
/bin/python3 "/home/devil/Code/Python/Turtle/Snake Game/snake_game.py" Traceback (most recent call last): File "/home/devil/Code/Python/Turtle/Snake Game/snake_game.py", line 4, in <module> import turtle File "/usr/lib/python3.10/turtle.py", line 107, in <module> import tkinter as TK ModuleNotFoundError: No module named 'tkinter'
go to terminal and type pip install tkinter, i hope it will work
Everything is thought out very cool. I am just learning to write games on Fiton and not only. In the future, I would like to create something with online games. I always have holandia kasyna as an example, I read about it https://pl.bestcasinos-pl.com/holandia-kasyna/ here. This would already be an achievement for me. But I can’t imagine how much more effort I will need to spend on this.
arrow keys are not working in ubuntu how to play the game
Change each of the letters for up, down, etc in the "onkeypress" statements to correspond to the literal words "Up" "Down" "Left" and "Right" in place of the 'wsad' options, and you'll get keyboard arrow functionality.
😄