Advertisement
trodland

Episode 10 ferdig

Apr 15th, 2020
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.96 KB | None | 0 0
  1. import pygame, math, random
  2. pygame.init()
  3. clock = pygame.time.Clock()
  4. width = 800
  5. height = 608
  6. screen = pygame.display.set_mode((width, height)) # Setter opp vinduet
  7. running = True
  8. gameover = False
  9. levelferdig = False
  10. levelnr = 0
  11. ferdig = False
  12.  
  13. levels =[[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,9,1,1],
  14.          [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  15.          [1,0,8,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  16.          [1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1],
  17.          [1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1],
  18.          [1,2,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1],
  19.          [1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1],
  20.          [1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1],
  21.          [1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1],
  22.          [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1],
  23.          [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1],
  24.          [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1],
  25.          [1,0,0,0,1,0,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,1],
  26.          [1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1],
  27.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1],
  28.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,1],
  29.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1],
  30.          [1,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1],
  31.          [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]],
  32.         [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
  33.          [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  34.          [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  35.          [9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
  36.          [0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1],
  37.          [1,2,0,0,0,0,0,0,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,1],
  38.          [1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1],
  39.          [1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1],
  40.          [1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1],
  41.          [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1],
  42.          [1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1],
  43.          [1,0,2,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1],
  44.          [1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,0,1],
  45.          [1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,1,0,1],
  46.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1],
  47.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,1],
  48.          [1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1],
  49.          [1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1],
  50.          [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,8,1,1]]]
  51.  
  52.  
  53.  
  54.  
  55. virusgruppe = pygame.sprite.Group()
  56. spillergruppe = pygame.sprite.Group()
  57. antibacgruppe = pygame.sprite.Group()
  58. veggruppe = pygame.sprite.Group()
  59. dispensergruppe = pygame.sprite.Group()
  60. utganggruppe = pygame.sprite.Group()
  61.  
  62.  
  63. font = pygame.font.SysFont('Comic Sans MS',72)
  64. gameovertekst = font.render('GAME OVER',True,(255,0,0))
  65. gameoverrect = gameovertekst.get_rect()
  66. gameoverrect.center = (width/2,height/2)
  67.  
  68. levelferdigtekst = font.render('LEVEL COMPLETE',True,(0,255,0))
  69. levelferdigrect = levelferdigtekst.get_rect()
  70. levelferdigrect.center = (width/2,height/2)
  71.  
  72. ferdigtekst = font.render('VICTORY!',True,(0,0,255))
  73. ferdigrect = ferdigtekst.get_rect()
  74. ferdigrect.center = (width/2,height/2)
  75.  
  76.  
  77. class Utgang(pygame.sprite.Sprite):
  78.     def __init__(self,x,y):
  79.         pygame.sprite.Sprite.__init__(self)
  80.         self.image = pygame.image.load('exit.png').convert_alpha()
  81.         self.rect = self.image.get_rect()
  82.         self.rect.x = x
  83.         self.rect.y = y
  84.  
  85. class Dispenser(pygame.sprite.Sprite):
  86.     def __init__(self,x,y):
  87.         pygame.sprite.Sprite.__init__(self)
  88.         self.image = pygame.image.load('dispenser.png').convert_alpha()
  89.         self.rect = self.image.get_rect()
  90.         self.rect.x = x
  91.         self.rect.y = y
  92.  
  93. class Vegg(pygame.sprite.Sprite):
  94.     def __init__(self,x,y):
  95.         pygame.sprite.Sprite.__init__(self)
  96.         self.image = pygame.image.load('wall.png').convert_alpha()
  97.         self.rect = self.image.get_rect()
  98.         self.rect.x = x
  99.         self.rect.y = y
  100.  
  101.  
  102. class Antibac(pygame.sprite.Sprite):
  103.     def __init__(self,x,y):
  104.         pygame.sprite.Sprite.__init__(self)
  105.         self.image = pygame.image.load('antibac.png').convert_alpha()
  106.         self.rect = self.image.get_rect()
  107.         self.rect.x = x
  108.         self.rect.y = y
  109.  
  110.  
  111. class Spiller(pygame.sprite.Sprite):
  112.     def __init__(self):
  113.         pygame.sprite.Sprite.__init__(self)
  114.         self.image = pygame.image.load('mann.png').convert_alpha()
  115.         self.rect = self.image.get_rect()
  116.         self.rect.x = 64
  117.         self.rect.y = 64
  118.         self.fartx = 0
  119.         self.farty = 0
  120.         self.antall_antibac = 0
  121.    
  122.     def reset(self):
  123.         self.fartx = 0
  124.         self.farty = 0
  125.         self.antall_antibac = 0
  126.    
  127.     def update(self):
  128.         # Flytter høyre/venstre og sjekker kollisjon
  129.         self.rect.x += self.fartx
  130.         veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
  131.         if veggtreffliste:
  132.             if self.fartx > 0:
  133.                 self.rect.right = veggtreffliste[0].rect.left
  134.             else:
  135.                 self.rect.left = veggtreffliste[0].rect.right
  136.                
  137.        
  138.         # Flytter opp/ned og sjekker kollisjon
  139.         self.rect.y += self.farty
  140.         veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
  141.         if veggtreffliste:
  142.             if self.farty > 0:
  143.                 self.rect.bottom = veggtreffliste[0].rect.top
  144.             else:
  145.                 self.rect.top = veggtreffliste[0].rect.bottom
  146.                
  147.         dispensertreffliste = pygame.sprite.spritecollide(self,dispensergruppe,False)
  148.         if dispensertreffliste:
  149.             self.antall_antibac += 5
  150.             dispensertreffliste[0].kill()
  151.            
  152.         utgangtreffliste = pygame.sprite.spritecollide(self,utganggruppe,False)
  153.         if utgangtreffliste:
  154.             global levelferdig
  155.             levelferdig = True
  156.             global levelnr
  157.             levelnr += 1
  158.             restart()
  159.    
  160. ############################################
  161. class Virus(pygame.sprite.Sprite):
  162.     def __init__(self, x, y, fx, fy):
  163.         pygame.sprite.Sprite.__init__(self)
  164.         self.image = pygame.image.load('virus.png').convert_alpha()
  165.         self.rect = self.image.get_rect()
  166.         self.rect.x = x
  167.         self.rect.y = y
  168.         self.fartx = fx
  169.         self.farty = fy
  170.        
  171.     def update(self):
  172.         # Flytter høyre/venstre og sjekker kollisjon
  173.         self.rect.x += self.fartx
  174.         veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
  175.         if veggtreffliste:
  176.             if self.fartx > 0:
  177.                 self.rect.right = veggtreffliste[0].rect.left
  178.             else:
  179.                 self.rect.left = veggtreffliste[0].rect.right
  180.            
  181.             self.fartx *= -1    
  182.        
  183.         # Flytter opp/ned og sjekker kollisjon
  184.         self.rect.y += self.farty
  185.         veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
  186.         if veggtreffliste:
  187.             if self.farty > 0:
  188.                 self.rect.bottom = veggtreffliste[0].rect.top
  189.             else:
  190.                 self.rect.top = veggtreffliste[0].rect.bottom
  191.            
  192.             self.farty *= -1
  193.        
  194.         # Sjekker om viruset treffer YTTERKANT av skjermen
  195.         if self.rect.right > width or self.rect.x < 0:
  196.             self.fartx = self.fartx * -1
  197.            
  198.         if self.rect.bottom > height or self.rect.y < 0:
  199.             self.farty = self.farty * -1
  200. #############################################        
  201.  
  202. def restart():
  203.     global gameover
  204.     global levelferdig
  205.  
  206.     gameover = False
  207.     levelferdig = False
  208.    
  209.     for virus in virusgruppe:
  210.         virus.kill()
  211.     for dispenser in dispensergruppe:
  212.         dispenser.kill()
  213.     for vegg in veggruppe:
  214.         vegg.kill()
  215.     for antibac in antibacgruppe:
  216.         antibac.kill()
  217.     for utgang in utganggruppe:
  218.         utgang.kill()
  219.     spiller.reset()
  220.  
  221.     # LAGER VIRUS
  222.     for i in range(0):
  223.         virus = Virus(random.randint(0,width),random.randint(0,height),random.randint(1,8),random.randint(1,8))
  224.         virusgruppe.add(virus)
  225.  
  226.     # LAGER LEVEL (Murstein, Dispenser, Utgangen)
  227.     if levelnr < len(levels):
  228.         for y,rad in enumerate(levels[levelnr]):
  229.             for x,verdi in enumerate(rad):
  230.                 if verdi == 1:
  231.                     vegg = Vegg(x*32,y*32)
  232.                     veggruppe.add(vegg)
  233.                 if verdi == 2:
  234.                     dispenser = Dispenser(x*32,y*32)
  235.                     dispensergruppe.add(dispenser)
  236.                 if verdi == 9:
  237.                     utgang = Utgang(x*32,y*32)
  238.                     utganggruppe.add(utgang)
  239.                 if verdi == 8:
  240.                     spiller.rect.x = x*32
  241.                     spiller.rect.y = y*32
  242.     else:
  243.         global ferdig
  244.         ferdig = True
  245.                                
  246.    
  247.    
  248.    
  249. spiller = Spiller()
  250. spillergruppe.add(spiller)
  251. restart()
  252.  
  253.  
  254. ############## HOVEDLØKKE ################
  255. while running:
  256.    
  257.     trykketliste = pygame.key.get_pressed()
  258.    
  259.     spiller.farty = 0
  260.     spiller.fartx = 0
  261.    
  262.     if trykketliste[pygame.K_UP] and not gameover:
  263.         spiller.farty = -3        
  264.     if trykketliste[pygame.K_DOWN] and not gameover:
  265.         spiller.farty = 3
  266.     if trykketliste[pygame.K_LEFT] and not gameover:
  267.         spiller.fartx = -3
  268.     if trykketliste[pygame.K_RIGHT] and not gameover:
  269.         spiller.fartx = 3
  270.  
  271.  
  272.     spillertruffet = pygame.sprite.groupcollide(spillergruppe,virusgruppe,False,False, pygame.sprite.collide_mask)
  273.     if spillertruffet:
  274.         gameover = True
  275.    
  276.     virustruffet = pygame.sprite.groupcollide(virusgruppe,antibacgruppe,True, True, pygame.sprite.collide_mask)              
  277.    
  278.    
  279.     virusgruppe.update()
  280.     spillergruppe.update()
  281.     antibacgruppe.update()
  282.     veggruppe.update()
  283.     dispensergruppe.update()
  284.     utganggruppe.update()
  285.  
  286.    
  287.     screen.fill((255,255,255))
  288.     antibacgruppe.draw(screen)
  289.     veggruppe.draw(screen)
  290.     utganggruppe.draw(screen)
  291.     virusgruppe.draw(screen)
  292.     dispensergruppe.draw(screen)
  293.     if gameover:
  294.         screen.blit(gameovertekst,gameoverrect)
  295.     if ferdig:
  296.         screen.blit(ferdigtekst,ferdigrect)
  297.      
  298.    
  299.     spillergruppe.draw(screen)
  300.    
  301.     clock.tick(30)
  302.     pygame.display.update()
  303.     for event in pygame.event.get():
  304.         if event.type == pygame.QUIT:
  305.             running = False
  306.         if event.type == pygame.KEYUP:
  307.             if event.key == pygame.K_a:
  308.                 if spiller.antall_antibac > 0:
  309.                     antibac = Antibac(spiller.rect.x, spiller.rect.y)
  310.                     antibacgruppe.add(antibac)
  311.                     spiller.antall_antibac -= 1
  312.             if event.key == pygame.K_n:
  313.                 levelnr = 0
  314.                 restart()
  315.                
  316.  
  317. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement