ich hab mal versucht das chimp-'spiel', dass bei pygame dabei ist zu verändern. da hab ich das problem, dass wenn ich ein zweites objekt (wie der chimpanse) einfüge, reagiert es nicht auf den schuss...
ausserdem sollte die position von dem zweiten objekt weiter unten sein...
wär schön wenn sich das jemand mal anguckt...:
Danke, lionking
Code: Alles auswählen
import os, pygame
from pygame.locals import *
import random
if not pygame.mixer: print 'Achtung kein Sound'
def load_image(name, colorkey=None):
fullname = os.path.join('daten', name)
try:
image = pygame.image.load(fullname)
except pygame.error, message:
print 'Konnte bild nicht laden:', fullname
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()
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('daten', name)
try:
sound = pygame.mixer.Sound(fullname)
except pygame.error, message:
print 'Konnte Sound nicht laden:', fullname
raise SystemExit, message
return sound
class Fadenkreuz(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image,self.rect = load_image('fadenkreuz.bmp',-1)
self.schiessen = 0
def update(self):
pos = pygame.mouse.get_pos()
self.rect.midtop = pos
def trifft(self, target):
if not self.schiessen:
self.schiessen = 1
zielbereich = self.rect.inflate(-5,-5)
return zielbereich.colliderect(target.rect)
def geschossen(self):
self.schiessen = 0
class Ziel(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image('ziel.bmp',-1)
screen = pygame.display.get_surface()
self.area = screen.get_rect()
self.move = 9
self.dizzy = 0
def pos(self, posx, posy):
self.rect.topleft = posx, posy
def update(self):
if self.dizzy:
self._spin()
else:
self._walk()
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))
self.image = pygame.transform.flip(self.image, 1, 0)
self.rect = newpos
def _spin(self):
"spin the monkey image"
center = self.rect.bottom
self.dizzy = self.dizzy + 10
if self.dizzy >= 100:
self.dizzy = 0
self.image = self.original
else:
rotate = pygame.transform.scale
self.image = rotate(self.original, (self.dizzy,0))
self.rect = self.image.get_rect()
self.rect.bottom = center
def getroffen(self):
if not self.dizzy:
self.dizzy = 1
self.original = self.image
def main():
pygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption('.....------Spiel.1------.....')
pygame.mouse.set_visible(0)
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250, 250, 250))
screen.blit(background, (0, 0))
pygame.display.flip()
clock = pygame.time.Clock()
daneben_sound = load_sound('daneben.wav')
treffer_sound = load_sound('treffer.wav')
fadenkreuz = Fadenkreuz()
ziel = Ziel()
ziel.pos(10,10)
ziel1 = Ziel()
ziel1.pos = (200,10)
allsprites = pygame.sprite.RenderPlain((fadenkreuz, ziel, ziel1))
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type== KEYDOWN and event.key == K_ESCAPE:
return
elif event.type == MOUSEBUTTONDOWN:
if fadenkreuz.trifft(ziel):
treffer_sound.play()
ziel.getroffen()
else:
daneben_sound.play()
if fadenkreuz.trifft(ziel1):
treffer_sound.play()
ziel.getroffen()
else:
daneben_sound.play()
elif event.type == MOUSEBUTTONUP:
fadenkreuz.geschossen()
allsprites.update()
screen.blit(background,(0,0))
allsprites.draw(screen)
pygame.display.flip()
if __name__ == '__main__': main()