# -*- coding: cp1252 -*- import os, sys, pygame pygame.init() pygame.mixer.init() from time import sleep # RANDOM settings #size = width, height = 700, 700 speed = [2, 2] black = 0, 0, 0 ## Assignments SP = 1 screen = pygame.display.set_mode((700, 700)) background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) # SOUND LOADING def load_sound(name): class NoneSound: def play(self): pass if not pygame.mixer or not pygame.mixer.get_init(): return NoneSound() fullname = os.path.join('sound', name) try: sound = pygame.mixer.Sound(fullname) except pygame.error, message: print 'cannot find\load sound: ', fullname raise SystemExit, message return sound # IMAGE LOADING def load_ball(name, colorkey=None): fullname = os.path.join('image', name) try: image = pygame.image.load(fullname) except pygame.error, message: print 'Cannot load image:', name raise SystemExit, message 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, image.get_rect() # Classes class crosshair(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image, self.rect = load_ball('crosshair.gif', -1) self.firing = 0 def update(self): pos = pygame.mouse.get_pos() self.rect.midtop = pos if self.firing: self.rect.move_ip(5, 10) def fire(self, target): if not self.firing: self.firing = 1 hitbox = self.rect.inflate(-5, -5) return hitbox.colliderect(target.rect) def unfire(self): self.firing = 0 sleep(0.26) load_sound('cock.wav') class ball(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image, self.rect = load_ball('ball.bmp', -1) screen = pygame.display.get_surface() self.area = screen.get_rect() self.rect.topleft = 10, 10 self.move = 9 self.hit = 0 def update(self): if self.hit: self._hit() else: self._walk() self.image = load_ball('ball.bmp') def _walk(self): newpos = self.rect.move((self.move, 0)) if self.rect.left < self.area.left or \ self.rect.right > self.area.right: self.move = -self.move newpos = self.rect.move((self.move, 0)) ## if not self.area.contains(newpos): ## if self.rect.left < self.area.left or \ ## self.rect.right > self.area.right: ## self.move = -self.move ## newpos = self.rect.move((self.move, 0)) ## if self.rect.top < self.area.top or \ ## self.rect.bottom > self.area.bottom: ## self.move = -self.move ## self.rect = newpos def _hit(self): if self.hit: self.image = load_ball('BS1.gif') sleep(0.25) self.image = load_ball('BS4.gif') def punched(self): if not self.hit: self.hit = 1 self.original = self.image allsprites = pygame.sprite.RenderPlain((crosshair(), ball())) def ControllerTick(): for event in pygame.event.get(): if event.type == pygame.QUIT: load_sound('gameover.wav') sleep(1.2) sys.exit() SP = 0 elif event.type == pygame.MOUSEBUTTONDOWN: load_sound('M3_Fire.wav') #FIRE_sound.play() if crosshair.fire(crosshair(), ball()): load_sound('bodysplat.wav') #Bsplatter_sound.play() ball.punched(ball()) elif event.type == pygame.MOUSEBUTTONUP: crosshair.unfire(crosshair()) def ViewTick(): PS = pygame.Surface allsprites.update() screen.blit(background, (0, 0)) screen.draw(allsprites) <-- changed pygame.display.flip() def main(): pygame.init() #screen = pygame.display.set_mode((700, 700)) pygame.display.set_caption('BALL') pygame.mouse.set_visible(0) ## background = pygame.Surface(screen.get_size()) ## background = background.convert() ## background.fill((250, 250, 250)) if pygame.font: font = pygame.font.Font('4yeostamp.ttf', 40) text = font.render("Made by lillEkU", 1, (10, 10, 10)) TP = text.get_rect() background.blit(text, TP) #screen.blit(background, (0, 0)) #pygame.display.flip() B = ball() CH = crosshair() #allsprites = pygame.sprite.RenderPlain((crosshair(), ball())) clock = pygame.time.Clock() SP = 1 while (SP==1): clock.tick(60) if ControllerTick() == 0: return ViewTick() #if __name__ == '__main__': main() if SP == 1: main() ------------------------------------------------------ END OF CODE ------------------------------------------------------ ERROR MESSAGE: Traceback (most recent call last): File "H:\programmer-python\SICKball\ball.py", line 176, in ? main() File "H:\programmer-python\SICKball\ball.py", line 172, in main ViewTick() File "H:\programmer-python\SICKball\ball.py", line 141, in ViewTick allsprites.draw(PS,screen) TypeError: draw() takes exactly 2 arguments (3 given) ---------------------------------------------------------- PS = pygame.Surface if i write : allsprites.draw(screen) i get a message saying that "the first argument must be pygame.Surface"