Hallo,
wie angekündigt habe ich den Code nun OOP-gerecht aufbereitet. Die Steuerung habe ich logischerweise genauso programmiert wie im Kauderwelschcode, aber jetzt funktioniert sie schon wieder nicht mehr. Aber es ist genau das Selbe.
Erst der Kauderwelschcoe:
Code: Alles auswählen
import pygame, os, sys
from pygame.locals import*
pygame.init()
landschaft = pygame.image.load('Soil01.bmp')
hintergrund = pygame.transform.scale(landschaft, (900, 700))
karte = hintergrund.get_rect()
spieler = pygame.image.load('Hopsy.bmp')
player = spieler.get_rect()
black = 0, 0, 0
size = width, height = 900,700
screen = pygame.display.set_mode(size)
screen.fill(black)
move_up = False
move_down = False
move_right = False
move_left = False
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
if event.key == K_UP:
move_down = False
move_right = False
move_left = False
move_up = True
if event.key == K_DOWN:
move_up = False
move_right = False
move_left = False
move_down = True
if event.key == K_LEFT:
move_down = False
move_up = False
move_right = False
move_left = True
if event.key == K_RIGHT:
move_down = False
move_up = False
move_left =False
move_right = True
if move_up:
player = player.move(0, -2)
if move_down:
player = player.move(0, 2)
if move_right:
player = player.move(2, 0)
if move_left:
player = player.move(-2, 0)
if event.type == MOUSEBUTTONDOWN:
isplaying = pygame.mixer.music.get_busy()
if isplaying == False:
pygame.mixer.music.load('Shot1.wav')
pygame.mixer.music.play()
screen.blit(hintergrund, karte)
screen.blit(spieler, player)
pygame.display.flip()
und nun der OOP-Code:
Code: Alles auswählen
import pygame, os, sys
from pygame.locals import*
pygame.init()
class spieler:
def __init__(self):
self.graphic = pygame.image.load('Hopsy.bmp')
self.image = self.graphic.get_rect()
life = 100
self.move_up = False
self.move_down = False
self.move_right = False
self.move_left = False
def steuern(self):
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygmae.quit()
if event.key == K_w:
self.move_down = False
self.move_right= False
self.move_left = False
self.move_up = True
if event.key == K_s:
self.move_up = False
self.move_right = False
self.move_left = False
self.move_down = True
if event.key == K_d:
self.move_up = False
self.move_down = False
self.move_left = False
self.move_right = True
if event.key == K_a:
self.move_up = False
self.move_down = False
self.move_right = False
self.move_left = True
if self.move_up:
self.image = self.image.move(0, -2)
if self.move_down:
self.image = self.image.move(0, 2)
if self.move_right:
self.image = self.image.move(2, 0)
if self.move_left:
self.image = self.image.move(-2, 0)
def erscheinen(self):
screen.blit(self.graphic, self.image)
landschaft = pygame.image.load('Soil01.bmp')
hintergrund = pygame.transform.scale(landschaft, (900, 700))
karte = hintergrund.get_rect()
fighter = spieler()
black = 0, 0, 0
size = width, height = 900, 700
screen = pygame.display.set_mode(size)
screen.fill(black)
while True:
fighter.steuern()
screen.blit(hintergrund, karte)
fighter.erscheinen()
pygame.display.flip()
Die Steuerung ist doch beide male genau gleich umgesetzt. Warum funktioniert sie nur im Kauderwelschcode?