Advertisement
Miki19xs

Snake in Python

Jan 30th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.12 KB | None | 0 0
  1. import pygame, random, sys
  2. #import serve a richiamare una libreria di azioni per aggiungere funzioni al programma
  3.  
  4. from pygame.locals import *
  5.  
  6. def collide(x1, x2, y1, y2, w1, w2, h1, h2):
  7.     if x1+w1>x2 and x1<x2+w2 and y1+h1>y2 and y1<y2+h2:return True
  8.     else:return False
  9.  
  10. def die(screen, score):
  11.     f=pygame.font.SysFont('Arial', 30);t=f.render('Your score was: '+str(score), True, (255, 255, 255));screen.blit(t, (10, 270));pygame.display.update();pygame.time.wait(2000); sys.exit(0)
  12. #imposta la scritta che compare quando si perde, i tre numeri tra parentesi sono il colore
  13. #e’il tempo in millisecondi dopo il quale, una volta perso, il gioco viene chiuso
  14. #’def’ serve a creare una funzione che verra’ usata in seguito, ‘collide’ definisce gli impatti, ‘die’ le azioni da eseguire quando si perde
  15.  
  16. xs = [290, 290, 290, 290, 290];#sono le ascisse da cui parte Snake, all’inizio lungo 5 caselle
  17. ys = [290, 270, 250, 230, 210];#sono le corrispondenti ordinate di partenza
  18. dirs = 0;score = 0; #stabilisce che il punteggio parte da 0
  19. applepos = (random.randint(0, 590), random.randint(0, 590)); #definisce la posizione della mela, che è casuale all’interno del campo di gioco
  20. pygame.init();s=pygame.display.set_mode((600, 600)); #definisce le dimensioni del campo di gioco
  21. pygame.display.set_caption('Snake');
  22. appleimage = pygame.Surface((10, 10)); #stabilisce la grandezza della mela
  23. appleimage.fill((255, 0, 0)); #rappresenta il colore della mela
  24. img = pygame.Surface((20, 20)); #rappresenta la grandezza del singolo segmento di Snake
  25. img.fill((0, 255, 0)); #definisce il colore del serpente
  26. f = pygame.font.SysFont('Arial', 20);
  27. clock = pygame.time.Clock()
  28. while True:
  29.     clock.tick(10) #regola la velocita’ del gioco
  30.     for e in pygame.event.get():
  31.         if e.type == QUIT:
  32.             sys.exit(0)
  33.         elif e.type == KEYDOWN:
  34.             if e.key == K_UP and dirs != 0:dirs = 2
  35.             elif e.key == K_DOWN and dirs != 2:dirs = 0
  36.             elif e.key == K_LEFT and dirs != 1:dirs = 3
  37.             elif e.key == K_RIGHT and dirs != 3:dirs = 1
  38. # questo blocco di funzioni gestisce il movimento del serpente tramite tastiera
  39.     i = len(xs)-1
  40.     while i >= 2:
  41.         if collide(xs[0], xs[i], ys[0], ys[i], 20, 20, 20, 20):die(s, score)
  42.         i-= 1
  43.     if collide(xs[0], applepos[0], ys[0], applepos[1], 20, 10, 20, 10):score+=1;xs.append(700);ys.append(700);applepos=(random.randint(0,590),random.randint(0,590))
  44.     if xs[0] < 0 or xs[0] > 580 or ys[0] < 0 or ys[0] > 580: die(s, score)
  45.     i = len(xs)-1
  46.     while i >= 1:
  47.         xs[i] = xs[i-1];ys[i] = ys[i-1];i -= 1
  48.     if dirs==0:ys[0] += 20
  49.     elif dirs==1:xs[0] += 20
  50.     elif dirs==2:ys[0] -= 20
  51.     elif dirs==3:xs[0] -= 20
  52. #tutta questa parte di programma regola i meccanismi con cui il pitone mangia la mela o si mangia la coda, il suo allungamento, il caso in cui sbatta contro le pareti e la ricreazione di una nuova mela
  53.     s.fill((0, 0, 0)) #gestisce il colore dello sfondo
  54.     for i in range(0, len(xs)):
  55.         s.blit(img, (xs[i], ys[i]))
  56.     s.blit(appleimage, applepos);t=f.render(str(score), True, (255, 255, 255));s.blit(t, (10, 10));pygame.display.update()
  57. #queste ultime righe gestiscono il contatore del punteggio, la sua posizione e il suo colore
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement