0% found this document useful (0 votes)
15 views

Snake Py

This document contains code for a Snake game built with Pygame. It defines functions for the game logic, including drawing the snake and food, handling movement and collisions, resetting on game over, and displaying the score. The main game loop constantly updates the snake position, checks for eating food or collisions, and redraws to the window until the game ends.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Snake Py

This document contains code for a Snake game built with Pygame. It defines functions for the game logic, including drawing the snake and food, handling movement and collisions, resetting on game over, and displaying the score. The main game loop constantly updates the snake position, checks for eating food or collisions, and redraws to the window until the game ends.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

import pygame,random,time,sys

pygame.init()

m = 20 # kích thước chiều cao và chiều rộng


# tạo cửa sổ
gameSurface = pygame.display.set_mode((735,475))
pygame.display.set_caption('Snake Game!')
# tạo các màu sắc
red = pygame.Color(255,0,0)
blue = pygame.Color(65,105,255)
black = pygame.Color(0,0,0)
white = pygame.Color(255,255,255)
gray = pygame.Color(128,128,128)
# hàm gameover
def game_over():
gameSurface.fill(white)
pygame.draw.rect(gameSurface, gray, (10, 10, 715, 455), 2)
gfont = pygame.font.SysFont('consolas',40)
gsurf = gfont.render('Game over!', True, red)
grect = gsurf.get_rect()
grect.midtop = (360,150)
gameSurface.blit(gsurf,grect)
gsurf1 = gfont.render('Press C-Play Again or Q-Quit!', True, red)
grect1 = gsurf.get_rect()
grect1.midtop = (180, 300)
gameSurface.blit(gsurf1, grect1)
# hàm Game Snake
def Snake():
# khai báo biến
snakepos = [100, 60]
snakebody = [[100, 60], [80, 60], [60, 60]] # m = 20
foodx = random.randrange(1, 71)
foody = random.randrange(1, 45)
if foodx % 2 != 0: foodx += 1
if foody % 2 != 0: foody += 1
foodpos = [foodx * 10, foody * 10]
foodflat = True
direction = 'RIGHT'
changeto = direction
score = 0
over = False
close = False

while over == False:


while close == True:
game_over()
# show score
sfont1 = pygame.font.SysFont('consolas', 20)
ssurf1 = sfont1.render('Score: {0}'.format(score),True, black)
srect1 = ssurf1.get_rect()
srect1.midtop = (360, 230) # điểm khi game over
gameSurface.blit(ssurf1, srect1)
pygame.display.flip() # cập nhật màn hình
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
over = True
close = False
if event.key == pygame.K_c:
Snake()
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.time.delay(200) # tốc độ chơi
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# xử lý phím
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
changeto = 'RIGHT'
if event.key == pygame.K_LEFT:
changeto = 'LEFT'
if event.key == pygame.K_UP:
changeto = 'UP'
if event.key == pygame.K_DOWN:
changeto = 'DOWN'
if event.key == pygame.K_ESCAPE:
pygame.event.post(pygame.evet.Event(pygame.QUIT))
# xử lý hướng đi
if changeto == 'RIGHT' and not direction == 'LEFT':
direction = 'RIGHT'
if changeto == 'LEFT' and not direction == 'RIGHT':
direction = 'LEFT'
if changeto == 'UP' and not direction == 'DOWN':
direction = 'UP'
if changeto == 'DOWN' and not direction == 'UP':
direction = 'DOWN'
# cập nhật vị trí mới
if direction == 'RIGHT':
snakepos[0] += m
if direction == 'LEFT':
snakepos[0] -= m
if direction == 'UP':
snakepos[1] -= m
if direction == 'DOWN':
snakepos[1] += m
# ăn mồi body dài ra
snakebody.insert(0,list(snakepos))
if snakepos[0] == foodpos[0] and snakepos[1] == foodpos[1]:
score += 1
foodflat = False
else:
snakebody.pop()
# sản sinh mồi
if foodflat == False:
foodx = random.randrange(1,71)
foody = random.randrange(1,45)
if foodx %2 != 0: foodx += 1
if foody %2 != 0: foody += 1
foodpos = [foodx * 10, foody * 10]
foodflat = True
# cập nhật lên cửa sổ
gameSurface.fill(white)
for pos in snakebody:
pygame.draw.rect(gameSurface,black,pygame.Rect(pos[0],pos[1],m,m))
pygame.draw.rect(gameSurface,red,pygame.Rect(foodpos[0],foodpos[1],m,m))
# xử lý di chuyển đụng 4 cạnh biên
if snakepos[0] > 710 or snakepos[0] < 10:
close = True
if snakepos[1] > 450 or snakepos[1] < 10:
close = True
# xử lý tự ăn chính mình
for b in snakebody[1:]:
if snakepos[0] == b[0] and snakepos[1] == b[1]:
close = True
# đường viền
pygame.draw.rect(gameSurface,gray,(10,10,715,455),2)
# điểm khi bắt đầu và chơi
sfont = pygame.font.SysFont('consolas', 20)
ssurf = sfont.render('Score: {0}'.format(score), True, black)
srect = ssurf.get_rect()
srect.midtop = (70, 20)
gameSurface.blit(ssurf, srect)
pygame.display.flip()
pygame.quit()
sys.exit()
Snake()

You might also like