Steuerung bleibt hängen

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Samstag 24. November 2007, 18:07

Hallo,

ich habe mir gedacht, vielleicht liegt der Fehler auch in der endlosschleife. Bloß wo?
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Sonntag 25. November 2007, 12:31

Hallo,

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:
                     pygame.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

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()
    if fighter.move_up:
        fighter.image = fighter.image.move(0, -2)
    if fighter.move_down:
        fighter.image = fighter.image.move(0, 2)
    if fighter.move_right:
        fighter.image = fighter.image.move(2, 0)
    if fighter.move_left:
        fighter.image = fighter.image.move(-2, 0)
    screen.blit(hintergrund, karte)
    screen.blit(fighter.graphic, fighter.image)
    pygame.display.flip()


Das bringt auch nichts. Gibt es den niemand der so eine Situation auch schon mal hatte und helfen könnte?
BlackJack

Beitragvon BlackJack » Sonntag 25. November 2007, 13:08

Also bei mir funktioniert der letzte Quelltext.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Sonntag 25. November 2007, 13:14

Hallo BlackJack,

hast du irgendwas dran verändert?
BlackJack

Beitragvon BlackJack » Sonntag 25. November 2007, 14:53

Die Dateinamen für die Bilder. ;-)
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Sonntag 25. November 2007, 15:09

*umkipp* Bei mir, dem Coder funktioniert es nicht, aber bei dir?
Wie ist das möglich!!! :shock: :evil: :x
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Sonntag 2. Dezember 2007, 18:44

Was meint ihr? Sol ich überhaupt an dem OOP-Code weiterentwickeln oder nicht?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 2. Dezember 2007, 23:51

Wo ist da OOP? Du hast da eine Klasse (die sich im übrigen nicht an die Namenskonventionen hält) aber das Konzept ist nicht objektorientiert sondern "ich pack es mal in Klassen".
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Montag 3. Dezember 2007, 16:13

Hallo Leonidas,

nun ja, ich wüsste nicht wie man es sonst machen könnte. Mehr als eine Klasse hab ich ja noch nicht.
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Beitragvon Vingdoloras » Montag 3. Dezember 2007, 17:23

Was genau ist denn OOP? Ich weiß zwar, dass es Objektorientiertes Programmieren heißt, aber ist Python nicht fast generell OOP?
Ich hab in nem Buch gelesen, dass in Python alles ein Objekt ist, sei es die Formatierung(String, Integer etc...) oder eine Variable.
Doch in den Büchern, die ich gelesen habe, wird in dem Kapitel OOP das Benutzen von Klassen und allem, was wan über sie wissen muss, eingeführt. Mehr nicht. Naja, am Anfang des Kapitels steht sowas wie
Das Buch 'Python 2.x' hat geschrieben:Der wesentliche Unterschied zum ... prozeduralen Programmieren besteht darin, dass man sich nicht mehr fragt, wie ein Problem gelöst wird, sindern womit es gelöst wird. Es ist nicht mehr so wichtig, dass man über Funktionen genau beschreiben muss, wie das Problem gelöst wird.

Nunja, ich versteh nun nicht so ganz, was das bedeuten soll, kannst du mir (bzw uns, Imperator scheint das ja auch noch nicht so ganz zu wissen) das nochmal erklären bitte?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 3. Dezember 2007, 18:47

Ok, da das aber länger wird habe ich dafür den Thread "Was ist OOP eigentlich?" gestartet und meine Bemerkungen dazu geschrieben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Dienstag 4. Dezember 2007, 15:11

Danke! Du hast mir sehr geholfen! Nicht-OOP ich komme wieder!
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Beitragvon Vingdoloras » Dienstag 4. Dezember 2007, 15:26

Hmm, du könntest eine weitere Klasse erstellen, die du "Bewegung"
(parameter self und figur, wobei figur die Figur ist, die dann bewegt wird)nennst und in diese Klasse die ganze Steuerung stecken.
Dann wäre alles, was mit der Bewegung zu tun hat, in der Klasse Bewegung und alles, was noch zur Figur kommt (solltest du das Programm noch erweitern wollen), zum beispiel was er sagt oder so... Wenn du dann zur Bewegung noch einen weiteren optionalen Parameter "steuerungsart" forderst, mit dem man einstellen kann, ob die jeweilige Figur mit w/a/s/d oder mit Oben/Links/Unten/Links gesteuert wird, dann könnte man vielleicht ein Spiel für zwei Leute oder sogar mehr machen...
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Beitragvon Imperator » Dienstag 4. Dezember 2007, 18:59

Das wäre aber absolut unsinnig. Dann würde genau das, was in Leonidas`Thread angesprochen würde eintreten und außerdem umständlicher als bisher.
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Beitragvon Vingdoloras » Mittwoch 5. Dezember 2007, 15:41

Was würde eintreten?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder