#!/usr/bin/env python import os, sys import pygame from pygame import sprite from pygame.locals import * if not pygame.font: print 'Warning, fonts disabled' if not pygame.mixer: print 'Warning, sound disabled' class BaseSprite(sprite.Sprite): def __init__(self, image, (x,y)): sprite.Sprite.__init__(self) self.image = image width, height = self.image.get_size() self.rect = Rect(x, y, width, height) class BaseMouse(BaseSprite): def __init__(self, image, (x,y)): BaseSprite.__init__(self, image, (x,y)) self.x, self.y = x, y pygame.event.set_grab(True) pygame.mouse.set_visible(False) def update(self): """update the mouse position.""" # TODO: Fix this so that things can be configured, SUCH AS: mouse sensitivity, mouse inversion, etc. deltax, deltay = pygame.mouse.get_rel() self.x += deltax self.y += deltay self.rect.top = self.y self.rect.left = self.x # pygame.mouse.set_pos(self.x, self.y) def testmouse(): # Set up Pygame/the screen. pygame.init() screen = pygame.display.set_mode((640, 480)) pygame.display.set_caption('Mouse test') background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((0, 0, 0)) # Clock to fix max FPS! clock = pygame.time.Clock() # Create Mouse sprite mouseimg = pygame.image.load("cursor.png") mouse = BaseMouse(mouseimg, (320, 240)) # Create group of all sprites (the mouse) sprites = sprite.Group(mouse) while True: clock.tick(60) for event in pygame.event.get(): if event.type == QUIT: return elif event.type == KEYDOWN and event.key == K_ESCAPE: return background.fill((0, 0, 0)) sprites.update() sprites.draw(background) screen.blit(background, (0, 0)) pygame.display.flip() if __name__ == "__main__": testmouse()