Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame, math, random
- pygame.init()
- clock = pygame.time.Clock()
- width = 800
- height = 608
- screen = pygame.display.set_mode((width, height)) # Setter opp vinduet
- running = True
- gameover = False
- levelferdig = False
- levelnr = 0
- ferdig = False
- 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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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]],
- [[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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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],
- [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]]]
- virusgruppe = pygame.sprite.Group()
- spillergruppe = pygame.sprite.Group()
- antibacgruppe = pygame.sprite.Group()
- veggruppe = pygame.sprite.Group()
- dispensergruppe = pygame.sprite.Group()
- utganggruppe = pygame.sprite.Group()
- font = pygame.font.SysFont('Comic Sans MS',72)
- gameovertekst = font.render('GAME OVER',True,(255,0,0))
- gameoverrect = gameovertekst.get_rect()
- gameoverrect.center = (width/2,height/2)
- levelferdigtekst = font.render('LEVEL COMPLETE',True,(0,255,0))
- levelferdigrect = levelferdigtekst.get_rect()
- levelferdigrect.center = (width/2,height/2)
- ferdigtekst = font.render('VICTORY!',True,(0,0,255))
- ferdigrect = ferdigtekst.get_rect()
- ferdigrect.center = (width/2,height/2)
- class Utgang(pygame.sprite.Sprite):
- def __init__(self,x,y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('exit.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Dispenser(pygame.sprite.Sprite):
- def __init__(self,x,y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('dispenser.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Vegg(pygame.sprite.Sprite):
- def __init__(self,x,y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('wall.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Antibac(pygame.sprite.Sprite):
- def __init__(self,x,y):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('antibac.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- class Spiller(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('mann.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = 64
- self.rect.y = 64
- self.fartx = 0
- self.farty = 0
- self.antall_antibac = 0
- def reset(self):
- self.fartx = 0
- self.farty = 0
- self.antall_antibac = 0
- def update(self):
- # Flytter høyre/venstre og sjekker kollisjon
- self.rect.x += self.fartx
- veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
- if veggtreffliste:
- if self.fartx > 0:
- self.rect.right = veggtreffliste[0].rect.left
- else:
- self.rect.left = veggtreffliste[0].rect.right
- # Flytter opp/ned og sjekker kollisjon
- self.rect.y += self.farty
- veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
- if veggtreffliste:
- if self.farty > 0:
- self.rect.bottom = veggtreffliste[0].rect.top
- else:
- self.rect.top = veggtreffliste[0].rect.bottom
- dispensertreffliste = pygame.sprite.spritecollide(self,dispensergruppe,False)
- if dispensertreffliste:
- self.antall_antibac += 5
- dispensertreffliste[0].kill()
- utgangtreffliste = pygame.sprite.spritecollide(self,utganggruppe,False)
- if utgangtreffliste:
- global levelferdig
- levelferdig = True
- global levelnr
- levelnr += 1
- restart()
- ############################################
- class Virus(pygame.sprite.Sprite):
- def __init__(self, x, y, fx, fy):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load('virus.png').convert_alpha()
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = y
- self.fartx = fx
- self.farty = fy
- def update(self):
- # Flytter høyre/venstre og sjekker kollisjon
- self.rect.x += self.fartx
- veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
- if veggtreffliste:
- if self.fartx > 0:
- self.rect.right = veggtreffliste[0].rect.left
- else:
- self.rect.left = veggtreffliste[0].rect.right
- self.fartx *= -1
- # Flytter opp/ned og sjekker kollisjon
- self.rect.y += self.farty
- veggtreffliste = pygame.sprite.spritecollide(self,veggruppe,False)
- if veggtreffliste:
- if self.farty > 0:
- self.rect.bottom = veggtreffliste[0].rect.top
- else:
- self.rect.top = veggtreffliste[0].rect.bottom
- self.farty *= -1
- # Sjekker om viruset treffer YTTERKANT av skjermen
- if self.rect.right > width or self.rect.x < 0:
- self.fartx = self.fartx * -1
- if self.rect.bottom > height or self.rect.y < 0:
- self.farty = self.farty * -1
- #############################################
- def restart():
- global gameover
- global levelferdig
- gameover = False
- levelferdig = False
- for virus in virusgruppe:
- virus.kill()
- for dispenser in dispensergruppe:
- dispenser.kill()
- for vegg in veggruppe:
- vegg.kill()
- for antibac in antibacgruppe:
- antibac.kill()
- for utgang in utganggruppe:
- utgang.kill()
- spiller.reset()
- # LAGER VIRUS
- for i in range(0):
- virus = Virus(random.randint(0,width),random.randint(0,height),random.randint(1,8),random.randint(1,8))
- virusgruppe.add(virus)
- # LAGER LEVEL (Murstein, Dispenser, Utgangen)
- if levelnr < len(levels):
- for y,rad in enumerate(levels[levelnr]):
- for x,verdi in enumerate(rad):
- if verdi == 1:
- vegg = Vegg(x*32,y*32)
- veggruppe.add(vegg)
- if verdi == 2:
- dispenser = Dispenser(x*32,y*32)
- dispensergruppe.add(dispenser)
- if verdi == 9:
- utgang = Utgang(x*32,y*32)
- utganggruppe.add(utgang)
- if verdi == 8:
- spiller.rect.x = x*32
- spiller.rect.y = y*32
- else:
- global ferdig
- ferdig = True
- spiller = Spiller()
- spillergruppe.add(spiller)
- restart()
- ############## HOVEDLØKKE ################
- while running:
- trykketliste = pygame.key.get_pressed()
- spiller.farty = 0
- spiller.fartx = 0
- if trykketliste[pygame.K_UP] and not gameover:
- spiller.farty = -3
- if trykketliste[pygame.K_DOWN] and not gameover:
- spiller.farty = 3
- if trykketliste[pygame.K_LEFT] and not gameover:
- spiller.fartx = -3
- if trykketliste[pygame.K_RIGHT] and not gameover:
- spiller.fartx = 3
- spillertruffet = pygame.sprite.groupcollide(spillergruppe,virusgruppe,False,False, pygame.sprite.collide_mask)
- if spillertruffet:
- gameover = True
- virustruffet = pygame.sprite.groupcollide(virusgruppe,antibacgruppe,True, True, pygame.sprite.collide_mask)
- virusgruppe.update()
- spillergruppe.update()
- antibacgruppe.update()
- veggruppe.update()
- dispensergruppe.update()
- utganggruppe.update()
- screen.fill((255,255,255))
- antibacgruppe.draw(screen)
- veggruppe.draw(screen)
- utganggruppe.draw(screen)
- virusgruppe.draw(screen)
- dispensergruppe.draw(screen)
- if gameover:
- screen.blit(gameovertekst,gameoverrect)
- if ferdig:
- screen.blit(ferdigtekst,ferdigrect)
- spillergruppe.draw(screen)
- clock.tick(30)
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- if event.type == pygame.KEYUP:
- if event.key == pygame.K_a:
- if spiller.antall_antibac > 0:
- antibac = Antibac(spiller.rect.x, spiller.rect.y)
- antibacgruppe.add(antibac)
- spiller.antall_antibac -= 1
- if event.key == pygame.K_n:
- levelnr = 0
- restart()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement