import pygame, os.path, sys from pygame.locals import * from random import randint
def load_image(name, colorkey=None): try: image = pygame.image.load(name) except pygame.error: print ('Cannot load image:', name) raise SystemExit(str(geterror())) image = image.convert() if colorkey is not None: if colorkey is -1: colorkey = image.get_at((0,0)) image.set_colorkey(colorkey, RLEACCEL) return image class IMG: pass class NPC: #A container class for the NPCs def __init__(self, image): self.image = image self.pos = [(38,38),(119,63),(181,21),(35,189),(119,157),(169,219),(15,323),(95,303),(183,319)] def update(self): pass def draw(self, screen, k): self.rect = self.pos[k] screen.blit(self.image, self.rect) class Mice(NPC): #The bad guy! def __init__(self): NPC.__init__(self, IMG.MICE) class Dog(NPC): #The pet dog! def __init__(self): NPC.__init__(self, IMG.DOG) class Cat(NPC): #The neighbour's cat! def __init__(self): NPC.__init__(self, IMG.CAT) def main(): pygame.init() screen = pygame.display.set_mode((240,380)) pygame.display.set_caption("Hit The Mice!") background = load_image('ground.jpg') screen.blit(background, (0,0)) pygame.display.flip() flag = False score = 0 allowed_time = 600 #change this variable to control the speed of the game. In miliseconds. time_to_run = 200 #change this variable to play longer. hit = False life = 3 score = 0 time_elapsed = 0 IMG.MICE = load_image('mice.png', -1) IMG.MICE=pygame.transform.scale(IMG.MICE, (50,50)) IMG.DOG = load_image('dog.png', -1) IMG.DOG=pygame.transform.scale(IMG.DOG, (50,50)) IMG.CAT = load_image('cat.png', -1) IMG.CAT=pygame.transform.scale(IMG.CAT, (50,50)) actors = [Mice(), Mice(), Mice(), Mice(), Dog(), Cat()] while True: screen.blit(background, (0,0)) r = randint(0,5) k = randint(0,8) actors[r].draw(screen,k) pygame.display.update() time = pygame.time.Clock() time_passed = 0 while True: time_passed = time.tick()+time_passed time_elapsed = time.tick()+time_elapsed if time_passed > allowed_time: break for event in pygame.event.get(): if event.type == QUIT: sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: flag = True break pressed_key = pygame.key.get_pressed() if pressed_key[K_q] and k==0: hit = True break if pressed_key[K_w] and k==1: hit = True break if pressed_key[K_e] and k==2: hit = True break if pressed_key[K_a] and k==3: hit = True break if pressed_key[K_s] and k==4: hit = True break if pressed_key[K_d] and k==5: hit = True break if pressed_key[K_z] and k==6: hit = True break if pressed_key[K_x] and k==7: hit = True break if pressed_key[K_c] and k==8: hit = True break if life < 0: break if flag is True: break if hit is True: if r==4 or r==5: life = life-1 else: score = score+1 print(score) if time_elapsed > time_to_run: break hit = False background = pygame.Surface(screen.get_size()).convert() background.fill((255,255,0)) score = str(score) score = "Your score is "+ score print(score) while True: for event in pygame.event.get(): if event.type == QUIT: sys.exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: sys.exit() screen.blit(background, (0,0)) my_font = pygame.font.SysFont("arial", 28) score_surface = my_font.render(score, True, (0,0,0)) screen.blit(score_surface, (34, 24)) my_font_1 = pygame.font.SysFont("arial", 16) quit_surface = my_font_1.render("Press esc to Quit", True, (0,0,0)) screen.blit(quit_surface, (64, 300)) pygame.display.flip() if __name__ == '__main__':main()