Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
- ##=======================================================================================================================================================================================##
- ##----------------------CODEDSKILLS.NET--------------------------------------------------------------------------------------------------------------------------------------------------##
- #------------------------------#
- import math #----------------#
- import pygame #----------------#
- import random #----------------#
- import tkinter as tk #---------#
- from tkinter import messagebox #
- #------------------------------#
- width = 1000 #
- height = 700 #
- cols = 20 #
- rows = 15 #
- #--------------#
- class cube(): #
- rows = 20 #
- w = 500 #----------------------------------------------------#
- def __init__(self, start, dirnx=1, dirny=0, color=(255,0,0)): #
- self.pos = start #---------------------------------------#
- self.dirnx = dirnx #---------------------#
- self.dirny = dirny # "L", "R", "U", "D" #
- self.color = color #---------------------#
- #---------------------------#-------#
- def move(self, dirnx, dirny): #
- self.dirnx = dirnx #-------#
- self.dirny = dirny #---------------------------------------------#
- self.pos = (self.pos[0] + self.dirnx, self.pos[1] + self.dirny) #
- #-------------------------------------------------------------------------#
- def draw(self, surface, eyes=True): #
- dis = self.w // self.rows #
- i = self.pos[0] #---------------#
- j = self.pos[1] #
- #--------------------------#-----------------------------------------------------------#
- pygame.draw.rect(surface, self.color, (i*dis+1,j*dis+1,dis-2,dis-2)) #
- if eyes: #---------#-----------------------------------------------------------#
- centre = dis//2#
- radius = 4 #-----------------------------------------------#
- circleMiddle = (i*dis+centre-radius,j*dis+9) #
- circleMiddle2 = (i*dis + dis -radius*2, j*dis+10) #
- pygame.draw.circle(surface, (0,0,0), circleMiddle, radius) #
- pygame.draw.circle(surface, (0,0,0), circleMiddle2, radius) #
- #--------------------------------------------------------------------------#
- class snake(): #
- body = [] #
- turns = {} #
- #---------------#----------------------------------------------------------------------------#
- def __init__(self, color, pos): #--------------------------------------------------------#
- #pos is given as coordinates on the grid ex (1,5)------------------------------------#
- self.color = color #---------------------------------------------------------------#
- self.head = cube(pos)#------------#
- self.body.append(self.head) #
- self.dirnx = 0 #------------#
- self.dirny = 1 #
- #----------------------------#
- def move(self): #-----------------------------------#
- for event in pygame.event.get(): #--------------#
- if event.type == pygame.QUIT: #-------------#
- pygame.quit() #-------------------------#
- keys = pygame.key.get_pressed() #
- #-------------------------------------------------------#
- for key in keys:#-------------------------------------------------#
- if keys[pygame.K_LEFT]:#--------------------------------------#
- self.dirnx = -1#------------------------------------------#
- self.dirny = 0 #------------------------------------------#
- self.turns[self.head.pos[:]] = [self.dirnx,self.dirny]#---#
- elif keys[pygame.K_RIGHT]: #----------------------------------#
- self.dirnx = 1 #------------------------------------------#
- self.dirny = 0 #------------------------------------------#
- self.turns[self.head.pos[:]] = [self.dirnx,self.dirny]#---#
- elif keys[pygame.K_UP]:#--------------------------------------#
- self.dirny = -1#------------------------------------------#
- self.dirnx = 0 #------------------------------------------#
- self.turns[self.head.pos[:]] = [self.dirnx,self.dirny]#---#
- elif keys[pygame.K_DOWN]: #---------------------------------#
- self.dirny = 1 #--------#
- self.dirnx = 0 #------------------------------------------------------------------#
- self.turns[self.head.pos[:]] = [self.dirnx,self.dirny] #
- #-----------------------------------------------#-----------------------------------------------------#
- for i, c in enumerate(self.body): #-----#
- p = c.pos[:] #----------------------#
- if p in self.turns: #---------------#
- turn = self.turns[p] #----------#
- c.move(turn[0], turn[1]) #------#
- if i == len(self.body)-1: #-----#
- self.turns.pop(p) #---------#
- else: #-----------------------------#
- c.move(c.dirnx,c.dirny) #-------#
- #
- #-----------------------------------------------#
- def reset(self,pos): #------------#
- self.head = cube(pos) #-------#
- self.body = [] #--------------#
- self.body.append(self.head) #
- self.turns = {} #------------#
- self.dirnx = 0 #
- self.dirny = 1 #
- #------------------------#
- def addCube(self): #----------------------------------------#
- tail = self.body[-1] #------------------------------------#
- dx, dy = tail.dirnx, tail.dirny #
- #-----------------------------------------------------------------#
- if dx == 1 and dy == 0: #------------------------------------------------------------#
- self.body.append(cube((tail.pos[0]-1,tail.pos[1]))) #----------------------------#
- elif dx == -1 and dy == 0: #------------------------------------------------------#
- self.body.append(cube((tail.pos[0]+1,tail.pos[1]))) #----------------------------#
- elif dx == 0 and dy == 1: #------------------------------------------------------#
- self.body.append(cube((tail.pos[0],tail.pos[1]-1))) #----------------------------#
- elif dx == 0 and dy == -1: #------------------------------------------------------#
- self.body.append(cube((tail.pos[0],tail.pos[1]+1))) #----------------------------#
- self.body[-1].dirnx = dx #------------------------------------------------------#
- self.body[-1].dirny = dy #
- #-------------------------------------#
- def draw(self, surface): #--------------#--------------------+
- for i,c in enumerate(self.body): #----------------------------+
- if i == 0: #--------------#-----#--------------------------------------------------------+
- c.draw(surface, True) #
- else: #------------------#
- c.draw(surface) #
- #-------------------------------------#
- def redrawWindow():
- global win #----------------------------#
- win.fill((0,0,0)) #---------------------#
- drawGrid(width, rows, win) #------------#
- s.draw(win) #---------------------------#
- snack.draw(win) #-----------------------#
- pygame.display.update() #---------------#
- pass #----------------------------------#
- #-------------------------------------------#
- #--------------------------------------------------#
- def drawGrid(w, rows, surface):#-------------------#
- sizeBtwn = w // rows #-------------------#
- x = 0 #--------------------#
- y = 0 #-------------------------------------------------------#
- for l in range(rows): #---------------------------------------#
- x = x + sizeBtwn #----------------------------------------#
- y = y +sizeBtwn #-----------------------------------------#
- pygame.draw.line(surface, ("red"), (x, 0),(x,w)) #
- pygame.draw.line(surface, ("blue"), (0, y),(w,y)) #
- #-----------------------------------------------------------------#
- def randomSnack(rows, item): #------------------------------------------#
- positions = item.body #---------------------------------------------#
- while True: #-------------------------------------------------------#
- x = random.randrange(1,rows-1) #--------------------------------#
- y = random.randrange(1,rows-1) #--------------------------------#
- if len(list(filter(lambda z:z.pos == (x,y), positions))) > 0: #
- continue #-------------------------------------------#
- else: #-------------#
- break #
- return (x,y) #
- #--------------------#
- #---------------------------------------------------------------#
- def main(): #---------------------------------------------------#
- global s, snack, win #--------------------------------------#
- win = pygame.display.set_mode((width,height)) #-------------#
- s = snake((255,0,0), (10,10)) #-----------------------------#
- s.addCube() #-----------------------------------------------#
- snack = cube(randomSnack(rows,s), color=("#ffffff")) #
- flag = True #---------------------#------------------------#
- clock = pygame.time.Clock() #
- #--------------------------------------#
- while flag: #--------------------------------------------#----------------------------------------------------------------------------+
- pygame.time.delay(50) #-------------------------------#----------------------+
- clock.tick(10) #---------------------------------------#---------------------------------------------------------+
- s.move()#-----------------------------------------------#-----------------------------------+
- headPos = s.head.pos #-----------------------------------#---------------------------------------------------------------------------------------------+
- if headPos[0] >= 20 or headPos[0] < 0 or headPos[1] >= 20 or headPos[1] < 0:#---------------------------------+
- print("Score:", len(s.body)) #-------------------------#----------------------#
- s.reset((10, 10)) #-------------------------------------#------------------------------------+
- if s.body[0].pos == snack.pos: #-----------------------------#-------------------+------+--------------------------+------------------------+
- s.addCube() #---------------------------------------------#--------------------------------------------------
- snack = cube(randomSnack(rows,s), color=(0,255,0)) #-------#------+-------------------+---------------+
- for x in range(len(s.body)): #---------------------------------#----------------+-------------+
- if s.body[x].pos in list(map(lambda z:z.pos,s.body[x+1:])): #
- print("Score:", len(s.body)) #------------------------#
- s.reset((10,10)) #---------------#
- break#---#-------#
- redrawWindow() #
- main()#---------#------#
- #--------------#
- ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
- ##=================================================================================================================================================##
- ##-------------------------------------------------------------------------------------------------------------------------------------------------##
- ## ##
- ## ## // ##
- ##----+-#########\ ######## -+#######\\-- +########## #######\\ /#######\\ ## // ######---+-## ## /#######\\ ##
- ## ##- ##|--|## ##- ## ## ##- ## ||----- ## // ## ##----+-## ||----- +--##
- ## ## ##| |## -+## +--## ####### ## ## -- \\#######\\ ## \\ ## ## ##------\\#######\\-------+##
- ## ##- +-##|--|## ##- ## ## ##- ## ------|| ## \\ ## ## ## ------||--------##
- ## #########/ ######## -#######//- -+########## #######// \\######// ## \\ ######---+-##### ##### \\######//------+--##
- ## ##
- ## https://CodedSkills.net ##
- ##-------------------------------------------------------------------------------------------------------------------------------------------------##
- ##=================================================================================================================================================##
- ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
- ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
- ##=======================================================================================================================================================================================##
- ##---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------##
- ## ##
- ## ### #######\ #######\ ####### ######## ## ## ######## ######## ####### ######## #### ## /#######\\ ##
- ## #-## // // \ // = ## ## ## ## ##|--|## ## // ## // \\ ## ||- ##
- ## ## ##\\ ##\\ // ## ## ## ## ##| |## ###\\ ## //====\\ ## \\#######\\ ##
- ## ## // // // ## ## ## ## ##|--|## ## \\ ## // \\ ## || ##
- ## ########## ########-- ########-- // = ## #### ## ######## ## \\ ######## // \\ ####### \\######// ##
- ## ##
- ## https://1337tutorials.net ##
- ##---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------##
- ##=======================================================================================================================================================================================##
- ##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement