Seite 1 von 1

Moorhuhn ähnliches spiel braucht eine schussfunktion

Verfasst: Donnerstag 18. Juni 2009, 21:41
von Dr.Tran
Folgendes:
Ich ein Spiel in dem man Schafe abschießen muss programiert.
Ich hab ein Schaf, dass sich mit rect.move bewegt, ein Fadenkreuz, das auf der Maus-Position liegt.
Mir fehlt aber das wichtigste nähmlich die Schuss-Funktion.
Ich krieg es einfach diese 3 Dinge in eine schleife einzubauen:

Wenn Schaf_pos = Mauszeigerposition und Mausklick, dann Schaf stoppen und Bild mit sheep_rt_dh.bmp ersetzten.

Code: Alles auswählen

import pygame
from pygame.locals import *
import pygame, sys
pygame.init()
window = pygame.display.set_mode((800, 600))
pygame.display.set_caption ("Schaf-Grippe")
screen = pygame.display.get_surface()
pygame.mouse.set_visible(0)

#Hintergrund
bg = pygame.image.load("gras.bmp")

#Schaf-Bilder mit colorkeys:

#rechts
sheep_rt = pygame.image.load("sheep_rt.bmp")
sheep_rtrect = sheep_rt.get_rect()

#rechts-tod
sheep_rt_dh = pygame.image.load("sheep_rt_dh.bmp")
sheep_rt_dhrect = sheep_rt_dh.get_rect()

#fadenkreuz
aimpoint = pygame.image.load("ap.bmp")
aimpointrect = aimpoint.get_rect()

sheep_rt.set_colorkey((0, 255, 0), RLEACCEL)
sheep_rt_dh.set_colorkey((0, 225, 0), RLEACCEL)
aimpoint.set_colorkey((0, 255, 0), RLEACCEL)

clock = pygame.time.Clock()
    
keepGoing = True
while keepGoing:

    #Time
    clock.tick(30)
    #Bewegungen

    speed0 = [0, 0]
    speed = [6, 0]

    sheep_rtrect = sheep_rtrect.move(speed)
    sheep_rt_dhrect =sheep_rt_dhrect.move(speed0)       

    for event in pygame.event.get():
        mouseX, mouseY = pygame.mouse.get_pos ()
        mpos = pygame.mouse.get_pos()
        pos = (mouseX -60, mouseY -60)

    screen.blit(bg, (0, 0))
    screen.blit(sheep_rt, sheep_rtrect)
    screen.blit(sheep_rt_dh, sheep_rt_dhrect)
    screen.blit(aimpoint, (pos)) 
    pygame.display.flip()
Ich bin wirklich ratlos und würde mich über jede Hilfe freuen!
Daher:
Danke im Vorraus an jeden der mir hilft oder es versucht... :)

Verfasst: Freitag 19. Juni 2009, 22:03
von str1442
Du solltest dir erstmal mehr Grundlagen aneignen. Das offizielle python Tutorial auf docs.python.org und das Nutzen der Suchfunktion hier im Forum sollten dir da behilflich sein. Ebenso wird PEP8 eine Hilfe sein. while keepGoing riecht sich nach dem "while !done" Codesmell. Deine forschleife greift auf Events gar nicht zu. Die Namen sind das totale Chaos und sehen aus wie zusammenkopiert. Und bei while keepGoing hat sich wohl auch kurz der Javaprogrammier eingeschlichen.

Verfasst: Freitag 10. Juli 2009, 17:51
von SyrischerRaubelefant
Teste doch einfach ob die Mausposition mit dem rect des Schafes kollidiert, wenn ja, benutze für das schaf ein bild eines toten schafs.

btw: sorge dafür dass als Mausposition die Mitte des Fadenkreuzes genommen wird.

also rect.x + rect.w / 2 und rect.y + rect.h / 2