Ledger Nano X - The secure hardware wallet
SHARE
TWEET

Untitled

a guest Jan 5th, 2020 1,037 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pygame as pg
  2. import random
  3.  
  4.  
  5. # Opciones
  6. TAM_VENTANA = 400
  7. TAM_PIXEL = 20
  8. COLOR_FONDO = 255, 255, 255
  9. NEGRO = 0, 0, 0
  10. COLOR_MANZANA = 87,166,57
  11. COLOR_SERPIENTE = 255,69,0
  12. FPS = 10
  13.  
  14.  
  15. # Variables globales
  16. CENTRO= [int(TAM_VENTANA / 2)] * 2
  17. cuadricula = int(TAM_VENTANA / TAM_PIXEL)
  18. posiciones_serpiente = []
  19. contrario = {pg.K_UP: pg.K_DOWN, pg.K_DOWN: pg.K_UP, pg.K_LEFT: pg.K_RIGHT, pg.K_RIGHT: pg.K_LEFT}
  20. pierde = False
  21.  
  22.  
  23. class Manzana:
  24.     def __init__(self):
  25.         self.tam = TAM_PIXEL
  26.         self.img = pg.Surface((TAM_PIXEL, TAM_PIXEL))
  27.         self.img.fill(COLOR_MANZANA)
  28.         self.mover()
  29.  
  30.     def _celdas_libres(self):
  31.         for y in range(cuadricula):
  32.             for x in range(cuadricula):
  33.                 pos = [x * TAM_PIXEL, y *TAM_PIXEL]
  34.                 if pos not in posiciones_serpiente:
  35.                     yield pos
  36.  
  37.     def mover(self):
  38.         celdas_libres = list(self._celdas_libres())
  39.         self.pos = random.choice(celdas_libres)
  40.  
  41.  
  42. class Serpiente:
  43.     def __init__(self):
  44.         self.pos = [CENTRO]
  45.         self.pixel = pg.Surface((TAM_PIXEL, TAM_PIXEL))
  46.         self.pixel.fill(COLOR_SERPIENTE)
  47.  
  48.     def mover_cabeza(self, tecla):
  49.         if tecla == pg.K_UP:
  50.             self.pos[0][1] -= 1 * TAM_PIXEL
  51.         elif tecla == pg.K_DOWN:
  52.             self.pos[0][1] += 1 * TAM_PIXEL
  53.         if tecla == pg.K_RIGHT:
  54.             self.pos[0][0] += 1 * TAM_PIXEL
  55.         elif tecla == pg.K_LEFT:
  56.             self.pos[0][0] -= 1 * TAM_PIXEL
  57.         self.pos[0] = self.desborde(self.pos[0])
  58.            
  59.     def comprobar_pierde(self):
  60.         global pierde
  61.         # Se come a si misma
  62.         if self.pos[0] in self.pos[1:]:
  63.             pierde = True
  64.            
  65.     def desborde(self, pos):
  66.         suma = 0,0
  67.         # Desborde horizontal
  68.         if pos[1] < 0:
  69.             suma = 0, TAM_VENTANA
  70.         elif pos[1] >= TAM_VENTANA:
  71.             suma = 0, -(TAM_VENTANA + TAM_PIXEL)
  72.         # Desborde vertical
  73.         if pos[0] < 0:
  74.             suma = TAM_VENTANA, 0
  75.         elif pos[0] >= TAM_VENTANA:
  76.             suma = -(TAM_VENTANA + TAM_PIXEL), 0
  77.        
  78.         pos[0] += suma[0]
  79.         pos[1] += suma[1]
  80.         return pos
  81.        
  82.     def mover(self, tecla):
  83.         global posiciones_serpiente
  84.         x_ant, y_ant = self.pos[0]
  85.         self.mover_cabeza(tecla)
  86.         # Mover el cuerpo hacia delante
  87.         for pos in self.pos[1:]:
  88.             x, y = x_ant, y_ant
  89.             x_ant, y_ant = pos[0], pos[1]
  90.             pos[0], pos[1] = x, y
  91.         self.comprobar_pierde()  
  92.         posiciones_serpiente = self.pos
  93.  
  94.     def crecer(self, posicion_manzana):
  95.         self.pos.append(posicion_manzana)
  96.  
  97.  
  98. def main():
  99.     pg.init()
  100.     ventana = pg.display.set_mode((TAM_VENTANA, TAM_VENTANA))
  101.     serpiente = Serpiente()
  102.     manzana = Manzana()
  103.     pg.display.set_caption('Snake')
  104.     fuente_puntos = pg.font.SysFont('arial', 30, bold=True)
  105.     fuente_game_over = pg.font.SysFont('arial', 40, bold=True)
  106.     run = True
  107.     tecla = None
  108.     while run:
  109.         ventana.fill(COLOR_FONDO)
  110.         if pierde:
  111.             ventana.fill(NEGRO)
  112.             ventana.blit(fuente_game_over.render('GAME OVER', 1, (255,255,255)), (75,125))
  113.             for e in pg.event.get():
  114.                 if e.type == pg.QUIT: run = False
  115.         else:
  116.             for e in pg.event.get():
  117.                 if e.type == pg.QUIT: run = False
  118.  
  119.                 if e.type == pg.KEYDOWN: # Se apreta una tecla
  120.                     if tecla != contrario[e.key]: # No se puede cambiar de dirección
  121.                         tecla = e.key
  122.                         break
  123.  
  124.             for pos in serpiente.pos:
  125.                 ventana.blit(serpiente.pixel, pos)
  126.  
  127.             ventana.blit(manzana.img, manzana.pos)
  128.            
  129.             puntos = fuente_puntos.render(str(len(serpiente.pos)), 1, (0, 0, 0))
  130.             ventana.blit(puntos, (2, 2))
  131.  
  132.             # Mover la serpiente
  133.             if tecla:
  134.                 serpiente.mover(tecla)
  135.  
  136.             # Aumetar el tamaño si come
  137.             if serpiente.pos[0] == manzana.pos:
  138.                 serpiente.mover(tecla)
  139.                 serpiente.crecer(manzana.pos)
  140.                 manzana.mover()
  141.  
  142.         # Redibujar
  143.         pg.display.flip()
  144.         pg.time.Clock().tick(FPS)
  145.  
  146.     # Al salir del bucle se cierra
  147.     pg.quit()
  148.  
  149. main()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top