Program s jedním "hráčem" sledujícím myšku

Stáhněte si data.zip se soubory.

Je tam pár obrázků s rozměry 64x64 k volnému použití a pár zvuků. Více zvuků do hry můžete stáhnout např. z http://www.freesound.org.


#!/usr/bin/env python
#coding:utf8    ## důležité: určuje kódování souboru; nutno zvolit cp1250 nebo utf8 dle editoru
import os, sys, random
import pygame
from pygame.locals import *

if not pygame.font: print 'Warning, fonts disabled'
if not pygame.mixer: print 'Warning, sound disabled'


def load_image(name, colorkey=None):
    """ Pomůcka k načtení obrázku """
    image = pygame.image.load(os.path.join('data', name)).convert()
    image.set_colorkey(image.get_at((1,1)), RLEACCEL)
    return image, image.get_rect()
class Player(pygame.sprite.Sprite):
    """moves a Player on the screen, following the mouse"""
    def __init__(self, my_image):
        pygame.sprite.Sprite.__init__(self) #call Sprite initializer
        self.image, self.rect = load_image(my_image+'.png', -1)

    def update(self):
        "move the Player based on the mouse position"
        pos = pygame.mouse.get_pos()
        self.rect.midtop = pos


## Inicializace programu
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption('Hra')
pygame.mouse.set_visible(0)

## Příprava kreslicí plochy
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255,255,255))


Player1 = Player("gordon")
allsprites = pygame.sprite.RenderPlain((Player1))

clock = pygame.time.Clock()
while 1:
    clock.tick(25)
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit(0)
        elif event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                sys.exit(0)
            if event.key == K_s:
                ## Při stisku tlačítka "s" zobrazí skóre
                font = pygame.font.Font(None, 25)
                text = font.render("Score: 0:0", 1, (10, 10, 10))
                textpos = text.get_rect(centerx=background.get_width()/2)
                background.blit(text, textpos)
                ## Taky můžeme hýbat hráčem, ale to teď dělá myš
                #Player1.rect.midtop = (Player1.rect.midtop[0]-10, Player1.rect.midtop[1])
                #print Player1.rect.midtop
        elif event.type == MOUSEBUTTONDOWN:
            pass
            ## akce při stisku myši
        elif event.type == MOUSEBUTTONUP:
            pass
            ## akce při puštění myši
    allsprites.update()
    screen.blit(background, (0, 0))
    allsprites.draw(screen)
    pygame.display.flip()