Advertisement
Guest User

snake game

a guest
Mar 24th, 2019
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 KB | None | 0 0
  1. import pygame
  2. import random
  3. import sys
  4. pygame.init()
  5.  
  6. width=600
  7. height=400
  8.  
  9. #rangakan
  10. spy=(255,255,255)
  11. swr=(100,0,0)
  12. zard=(255,255,0)
  13. shen=(0,0,255)
  14. rash=(0,0,0)
  15. rashe_tox=(50,50,50)
  16.  
  17. shasha=pygame.display.set_mode((width,height))
  18. pygame.display.set_caption("Maraka")
  19. sa3at=pygame.time.Clock
  20. runnung=True
  21.  
  22. def dist(x1,y1,x2,y2):
  23.     return ((x2-x1)**2 + (y2-y1)**2)**1/2
  24.  
  25. def draw_txt(surf,text,size,x,y):
  26.     font_name = pygame.font.match_font("arial")
  27.     font = pygame.font.Font(font_name,size)
  28.     text_surface = font.render(text,True,spy)
  29.     text_rect=text_surface.get_rect()
  30.     text_rect.midtop=(x,y)
  31.     surf.blit(text_surface,text_rect)
  32. class Snake(pygame.sprite.Sprite):
  33.     def __init__(self):
  34.         pygame.sprite.Sprite.__init__(self)
  35.         self.image=pygame.Surface((12,12))
  36.         self.image.dill(spy)
  37.         self.rect=self.image.get_rect()
  38.         self.rect.center=(100,100)
  39.         self.speedx=0
  40.         self.speedy=0
  41.         self.score=0
  42.         self.tail=[]
  43.  
  44.     def update(self):
  45.         if self.score ==len(self.tail):
  46.             self.tail.append((self.rect.x,self.rect.y))
  47.         else:
  48.             self.tail.append((self.rect.x,self.rect.y))
  49.             self.tail.pop(0)
  50.         self.rect.x+=self.speedx
  51.         self.rect.y+=self.speedy
  52.         keys=pygame.key.get_pressed()
  53.         if keys[pygame.K_RIGHT] and self.speedx >=0:
  54.             self.speedx=10
  55.             self.speedy=0
  56.         if keys[pygame.K_LEFT] and self.speedx <=0:
  57.             self.speedx=10
  58.             self.speedy=0
  59.         if keys[pygame.K_UP] and self.speedx <=0:
  60.             self.speedx=10
  61.             self.speedy=0
  62.         if keys[pygame.K_DOWN] and self.speedx >=0:
  63.             self.speedx=10
  64.             self.speedy=0
  65.         if self.rect.left >=width:
  66.             self.rect.left=1
  67.         if self.rect.left >=height:
  68.             self.rect.top=0
  69.         if self.rect.bottom <=0:
  70.             self.rect.bottom=height
  71.         if self.rect.left <=0:
  72.             self.rect.left= width
  73.  
  74.     def _exit(self):
  75.         for i in range (1,len(self.tail)):
  76.             if dist(self.rect.x,self.rect.y,self.tail[i][0],self.tail[i][1])<1:
  77.                 sys.exit()
  78. class Food(pygame.sprite.Sprite):
  79.     def __init__(self,x,y):
  80.         pygame.sprite.Sprite.__init__(self)
  81.         self.image=pygame.Surface((12,12))
  82.         self.image.fill(swr)
  83.         self.rect=self.image.get_rect()
  84.         self.rect.center=(x,y)
  85. all_sprites=pygame.sprite.Group()
  86. player=Snake
  87. food=Food(random.randrange(20,width-20),random.randrange(20,height-20))
  88. all_sprites.add(player)
  89. all_sprites.add(food)
  90.  
  91. while runnung:
  92.     sa3at.tick(26)
  93.     keys_pressed=pygame.event.get()
  94.     for i in keys_pressed:
  95.         if i.type==pygame.QUIT:
  96.             runnung=False
  97.     if pygame.sprite.collide_rect(player,food):
  98.         food.kill()
  99.         player.score+=1
  100.         food=Food(random.randrange(20,width-20),random.randrange(20,height-20))
  101.         all_sprites.add(food)
  102.     all_sprites.update()
  103.     shasha.fill(rashe_tox)
  104.     player._exit()
  105.     for i in range(1,len(player.tail)):
  106.         pygame.draw.rect(shasha,spy,(player.tail[i][0],player.tail[i][1],12,12))
  107.         draw_txt(shasha,str(player.score),18,width/2,10)
  108.         all_sprites.draw(shasha)
  109.         pygame.display.flip()
  110. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement