Advertisement
jee7

TIA Tetris - Versioon 7

Nov 18th, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.87 KB | None | 0 0
  1. import pygame
  2.  
  3. #See klass hoiab väljaku seisu ja oskab seda joonistada
  4. class Kaart:
  5.     laius = 20  #niipalju ruute laiuses
  6.     kõrgus = 40 #niipalju ruute kõrguses
  7.  
  8.     def __init__(self):
  9.         #Teeme 2-mõõtmelise listi
  10.         self.kaart = []
  11.         for x in range(Kaart.laius):
  12.             self.kaart.append([])
  13.             for y in range(Kaart.kõrgus):
  14.                 self.kaart[x].append(0)
  15.  
  16.     def joonista(self):
  17.         #Joonistame ruudud
  18.         for x, rida in enumerate(self.kaart):
  19.             for y, lahter in enumerate(rida):
  20.                 if lahter != 0:
  21.                     kasJoonistas = lahter.joonista(x, y)
  22.                    
  23.                 if lahter == 0 or not kasJoonistas:
  24.                     pygame.draw.rect(ekraan, (20, 20, 20), (x * ruuduLaius, y * ruuduLaius, ruuduLaius, ruuduLaius))
  25.                     pygame.draw.rect(ekraan, (0, 0, 0), (x * ruuduLaius + 1, y * ruuduLaius + 1, ruuduLaius - 2, ruuduLaius - 2))
  26.  
  27.  
  28.     def lisaKujund(self, kujund):
  29.         for lokaalneX, rida in enumerate(kujund.kujund):
  30.             for lokaalneY, lahter in enumerate(rida):
  31.                 self.kaart[kujund.x + lokaalneX][kujund.y + lokaalneY] = kujund;
  32.  
  33.     def uuenda(self, kujund):
  34.         #Kui kujundi all on veel tühjasi ridu:
  35.         if (kujund.y < len(self.kaart[0]) - len(kujund.kujund[0])):
  36.            
  37.             #Uuendame kaardi peal kujundi ruute
  38.             for x in range(kujund.x, kujund.x + len(kujund.kujund)):
  39.                 for y in range(len(kujund.kujund[x - kujund.x]) + kujund.y, kujund.y - 1, -1):
  40.                     self.kaart[x][y] = self.kaart[x][y - 1]
  41.  
  42.             #Liigutame kujundi 1 ruut allapoole
  43.             kujund.y += 1
  44.  
  45.         else:
  46.             kujund.kasElus = False
  47.             for x in range(len(kujund.kujund)):
  48.                 for y in range(len(kujund.kujund[0])):
  49.                     self.kaart[kujund.x + x][kujund.y + y] = kujund.värv
  50.        
  51. #Klass, mille objektid on erinevad kujundid
  52. class Kujund:
  53.  
  54.     def __init__(self, x, y, kujund, värv):
  55.         self.x = x             #Kujundi asukoht kaardil
  56.         self.y = y          
  57.         self.kujund = kujund   #2-mõõtmeline list, mis hoiab kujundit
  58.         self.värv = värv
  59.         self.kasElus = True
  60.  
  61.     def joonista(self, kaardiX, kaardiY):
  62.         #Joonistame kujundi vastavatele kordinaatidele, kui kujund on seal
  63.         x = kaardiX - self.x
  64.         y = kaardiY - self.y
  65.         if self.kujund[x][y]:
  66.  
  67.             alumineVärv = (max(0, self.värv[0] - 10), max(0, self.värv[1] - 10), max(0, self.värv[2] - 10))
  68.             pygame.draw.rect(ekraan, alumineVärv, (kaardiX * ruuduLaius, kaardiY * ruuduLaius, ruuduLaius, ruuduLaius))
  69.  
  70.             ülemineVärv = [min(üksVärv + 10, 255) for üksVärv in self.värv]
  71.             pygame.draw.rect(ekraan, ülemineVärv, (kaardiX * ruuduLaius, kaardiY * ruuduLaius, ruuduLaius - 1, ruuduLaius - 1))
  72.  
  73.             pygame.draw.rect(ekraan, self.värv, (kaardiX * ruuduLaius + 1, kaardiY * ruuduLaius + 1, ruuduLaius - 2, ruuduLaius - 2))
  74.  
  75.             return True
  76.         else:
  77.  
  78.             return False
  79.  
  80.        
  81.        
  82. #Globaalne ruudu laius/kõrgus
  83. ruuduLaius = 15
  84. #Vastava suurusega aken
  85. ekraan = pygame.display.set_mode([ruuduLaius * Kaart.laius, ruuduLaius * Kaart.kõrgus])
  86. #Meie kaart
  87. kaart = Kaart()
  88.  
  89.  
  90. kujund = Kujund(10, 10, [[False, False], [True, True], [False, False]], (100, 0, 0))
  91. kaart.lisaKujund(kujund)
  92.  
  93. UUENDUS = pygame.USEREVENT + 1
  94. pygame.time.set_timer(UUENDUS, 500)
  95.  
  96.  
  97. while True:
  98.     ekraan.fill((0,0,0))
  99.  
  100.     kaart.joonista()
  101.    
  102.  
  103.     pygame.display.flip()
  104.     pygame.time.delay(10)
  105.  
  106.     events = pygame.event.get()
  107.     for oneEvent in events:
  108.         if oneEvent.type == UUENDUS:
  109.             kaart.uuenda(kujund)
  110.            
  111.         if oneEvent.type == pygame.QUIT:
  112.             #quit()
  113.             exit()
  114.             break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement