PyGame: Suche Hilfe und Tips
Hoffe es gehört (zumindest vorerst) hierher.
Folgendes:
Mein Interssen sind eher Spiele zu proggramieren.
Und für solche soll eben PyGame am besten geeignet sein, wenn meine Informationen nicht täuschen.
Das Problem:
Fehlende Seiten, Fehlendes Wissen darüber und ... schlechte Englischkenntnisse.
Das suche ich:
- Deutsche Seiten, wo einiges darüber erklärt wird.
- Sonstige Infos? Z.B. sind die Grundaufrufen gleich, wie bei Tkinter, nur eben andere Bezeichnungen?
- weiter Fragen ect., welche sich aber erst später ergeben werden. Zur Zeit ... will ich überhaupt mal was machen können.
Installation habe ich inzwischen dank Hilfe, schon hinbekommen.
Danke für Eure Hilfe im vorraus.
Folgendes:
Mein Interssen sind eher Spiele zu proggramieren.
Und für solche soll eben PyGame am besten geeignet sein, wenn meine Informationen nicht täuschen.
Das Problem:
Fehlende Seiten, Fehlendes Wissen darüber und ... schlechte Englischkenntnisse.
Das suche ich:
- Deutsche Seiten, wo einiges darüber erklärt wird.
- Sonstige Infos? Z.B. sind die Grundaufrufen gleich, wie bei Tkinter, nur eben andere Bezeichnungen?
- weiter Fragen ect., welche sich aber erst später ergeben werden. Zur Zeit ... will ich überhaupt mal was machen können.
Installation habe ich inzwischen dank Hilfe, schon hinbekommen.
Danke für Eure Hilfe im vorraus.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
Hi,
auch wenn du das vielleicht nicht hören möchtest, aber ohne Englisch hast du wenig’ Chancen. Mein Vorschlag: Einfach mal die Englische Doku ausprobieren! Langenscheidt daneben legen und Stück für Stück übersetzen. Du wirst sehen, dass die ersten Programme mühsam sind, aber es wird auch immer einfacher. Außerdem hat niemand behauptet programmieren sei einfach…
und sollten trotzdem mal Probleme auftauchen, dann kannst du hier ja Fragen.
auch wenn du das vielleicht nicht hören möchtest, aber ohne Englisch hast du wenig’ Chancen. Mein Vorschlag: Einfach mal die Englische Doku ausprobieren! Langenscheidt daneben legen und Stück für Stück übersetzen. Du wirst sehen, dass die ersten Programme mühsam sind, aber es wird auch immer einfacher. Außerdem hat niemand behauptet programmieren sei einfach…
und sollten trotzdem mal Probleme auftauchen, dann kannst du hier ja Fragen.
greetings
sebi
sebi
Erwin hat geschrieben:Das suche ich:
- Deutsche Seiten, wo einiges darüber erklärt wird.
Wenn Du damit meinst, ob Funktions-/Methodenaufrufe auch aus dem Namen mit folgenden Klammern und eventuell Parametern dazwischen bestehen, dann ja.- Sonstige Infos? Z.B. sind die Grundaufrufen gleich, wie bei Tkinter, nur eben andere Bezeichnungen?
PyGame ist kein GUI Toolkit sondern eher auf niedrigerer Ebene angesiedelt. Du bekommst im Grunde eine Zeichenfläche zur Vefügung auf der Du beliebige Grafiken platzieren kannst und Funktionen an die Hand, um Maus, Joystick und Tastatur auszuwerten und Töne/Musik in mehreren Kanälen abzuspielen. Und ein paar nützliche Funktionen um Grafiken zu manipulieren und Rechtecke auf Überlappungen oder "enthalten sein" zu überprüfen. Ausserdem ein paar Basisklassen um so etwas wie Sprites umzusetzen. Dazu ist Objektorientierung ein wichtiger Punkt.
Also ein paar Seiten hatte ich teilweise inzwischen schon verstanden.
Zumindest ist mir es gelungen, mit PyGame ein Fenster (640x480) zu erstellen. Aber das war es dann schon, bzw. als ich das Fenster schließen wollte, teilte mir das BS (Windows XP) mit, daß das Programm nicht reagiert und fragte, ob es sofort beenden soll.
Zumindest ist mir es gelungen, mit PyGame ein Fenster (640x480) zu erstellen. Aber das war es dann schon, bzw. als ich das Fenster schließen wollte, teilte mir das BS (Windows XP) mit, daß das Programm nicht reagiert und fragte, ob es sofort beenden soll.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
Wie wärs mit ner kleinen Starthilfe? Für jemanden der noch nie mit der SDL gearbeitet hat, finde ich die Doku, die ich gefunden hab nämlich nicht so toll.
Code: Alles auswählen
#!/usr/bin/env python
import pygame
def main():
print "Los gehts"
pygame.init()
pygame.display.init()
screen = pygame.display.set_mode( (640,480) )
pygame.display.set_caption( "Fenster Titel" )
running = 1
while running:
events = pygame.event.get()
for event in events:
#print event
if event.type == pygame.QUIT:
running = 0
if event.type == pygame.KEYDOWN:
print "Taste wurde gedrückt"
pygame.display.flip()
pygame.display.quit()
print "Bye"
if __name__ == "__main__":
main()
Danke, ProgChild.
Dein Beispiel hat funktioniert.
Aber es gab beim Abspeichern eine Meldung und nach bestätigung hat er mir folgende Zeile reingeschrieben:
Was hat es damit auf sich?
Und was mich auch interessieren würde.
Warum klappt der kopierte Beispiel-Code nicht, bzw. hängt sich auf:
Dein Beispiel hat funktioniert.
Aber es gab beim Abspeichern eine Meldung und nach bestätigung hat er mir folgende Zeile reingeschrieben:
Code: Alles auswählen
# -*- coding: cp1252 -*-
Und was mich auch interessieren würde.
Warum klappt der kopierte Beispiel-Code nicht, bzw. hängt sich auf:
Code: Alles auswählen
#!/usr/bin/python
import pygame
from pygame.locals import *
def main():
# Initialise screen
pygame.init()
screen = pygame.display.set_mode((150, 50))
pygame.display.set_caption('Basic Pygame program')
# Fill background
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250, 250, 250))
# Display some text
font = pygame.font.Font(None, 36)
text = font.render("Hello There", 1, (10, 10, 10))
textpos = text.get_rect()
textpos.centerx = background.get_rect().centerx
background.blit(text, textpos)
# Blit everything to the screen
screen.blit(background, (0, 0))
pygame.display.flip()
# Event loop
while 1:
for event in pygame.event.get():
if event.type == QUIT:
return
screen.blit(background, (0, 0))
pygame.display.flip()
if __name__ == '__main__': main()
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil es sonst Probleme mit dem ü-Umlaut in 'gedrückt' gibt, Python weiß nicht, welches Encoding das sein soll.Erwin hat geschrieben:Aber es gab beim Abspeichern eine Meldung und nach bestätigung hat er mir folgende Zeile reingeschrieben:Was hat es damit auf sich?Code: Alles auswählen
# -*- coding: cp1252 -*-
Tut's doch nicht:Erwin hat geschrieben:Und was mich auch interessieren würde.
Warum klappt der kopierte Beispiel-Code nicht, bzw. hängt sich auf:
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import pygame
from pygame.locals import *
def main():
# Initialise screen
pygame.init()
screen = pygame.display.set_mode((150, 50))
pygame.display.set_caption('Basic Pygame program')
# Fill background
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250, 250, 250))
# Display some text
font = pygame.font.Font(None, 36)
text = font.render("Hello There", 1, (10, 10, 10))
textpos = text.get_rect()
textpos.centerx = background.get_rect().centerx
background.blit(text, textpos)
# Blit everything to the screen
screen.blit(background, (0, 0))
pygame.display.flip()
# Event loop
while True:
for event in pygame.event.get():
if event.type == QUIT:
return
screen.blit(background, (0, 0))
pygame.display.flip()
if __name__ == '__main__':
main()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wegem Umlaut also ... .
Habe den ganze Code kopiert und ausprobiert:
Beim beenden heißt es immer noch, daß das Programm nicht reagiert (also BS-Mitteilung).
Sehe nur eine Veränderung: Die 2. Zeile.Leonidas hat geschrieben:...
Was ich gemacht habe: Einrückung nach meinem Coding-Stil (siehe Styleguide) korrgiert, Kopfzeilen umgeschreiben, 1 gegen True eingetauscht. Funktioniert beim ersten mal ohne jegliche Fehler.
Habe den ganze Code kopiert und ausprobiert:
Beim beenden heißt es immer noch, daß das Programm nicht reagiert (also BS-Mitteilung).
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Okay, dann genauer:
- aus habe ich
Code: Alles auswählen
#!/usr/bin/python
gemacht, damit habe ich also erstmal den Interpreter nicht mehr auf einen festen Pfad. Danach habe ich das Encoding auf latin-1 gesetzt. Das mache ich aus gewöhnung, weil man damit gleich mal einige Fehler ausmerzen kann.Code: Alles auswählen
#!/usr/bin/env python # -*- encoding: latin-1 -*-
- ich habe den Quelltext komplett neu eingerückt, wobei ich gegebenfalls vorhandene Tabs gegen 4 Leerzeichen getauscht habe.
- aus wurde bei mir
Code: Alles auswählen
while 1:
Code: Alles auswählen
while True:[/url] weil mir das logischer erscheint (aber zu while 1 aquivalent ist).[/list]
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das Skript hat den Fehler, das nirgends `pygame.quit()` aufgerufen wird und somit auch PyGame nicht ordentlich beendet wird. Das macht nichts wenn man das Skript wirklich als eigenständiges Programm startet, weil dann das Interpreterende auch PyGame beendet. Wenn man das Skript aber aus IDLE oder IPython oder einer ähnlichen Umgebung heraus startet, dann bleibt der Interpreter "am Leben" und der PyGame Teil hängt. In der Python-Shell manuell `pygame.quit()` eintippen sollte helfen.
Genau das war der Fehler.BlackJack hat geschrieben:Das Skript hat den Fehler, das nirgends `pygame.quit()` aufgerufen wird und somit auch PyGame nicht ordentlich beendet wird. Das macht nichts wenn man das Skript wirklich als eigenständiges Programm startet, weil dann das Interpreterende auch PyGame beendet. Wenn man das Skript aber aus IDLE oder IPython oder einer ähnlichen Umgebung heraus startet, dann bleibt der Interpreter "am Leben" und der PyGame Teil hängt. In der Python-Shell manuell `pygame.quit()` eintippen sollte helfen.
Danke.
Als eigenständiges Programm?
Also als Exe.Datei?
Aber für ein Turitoral ist dies ein unverzeichlicher Fehler, finde ich (es sei denn, es wird wo in Englisch erwähnt ... ?).
Jedenfalls habe ich jetzt wieder etwas Hoffnung.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich denke BlackJack meint, dass das Programm vom Pythoninterpreter direkt ausgeführt wird (also ohne IDLE oder IPython oder so), so wie bei einem Doppelklick auf das Programm oder einem Start mit 'python programm.py'.Erwin hat geschrieben:Als eigenständiges Programm?
Also als Exe.Datei?
BlackJack: Toll, darauf wäre ich nicht gekommen, Respekt!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Achja, die Möglichkeit gibt es ja auch noch; stimmt.Leonidas hat geschrieben:...
Ich denke BlackJack meint, dass das Programm vom Pythoninterpreter direkt ausgeführt wird (also ohne IDLE oder IPython oder so),...
Habe es getestet.
Ohne dem Idle funktioniert es dann auch ohne der Beendenzeile (pygame.quit()).
Also braucht man es nur, wenn man mit der Idle arbeitet?
Wieder eine, aber nur kleine, Hürde genommen.
Es werden vermutlich noch mehre Fragen auftauchen.
Zwar habe ich eine Möglichkeit gefunden, die vielen englischen Texte übersetzen zu lassen, aber zum einen ist die Gramatik fürchterlich, zum anderem werden auch die Befehle leider gleich mit übersetzt.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es hinzuzufügen ist sowieso ratsam, egal ob man nun mit IDLE arbeitet oder nicht, schaden tuts nicht.Erwin hat geschrieben:Achja, die Möglichkeit gibt es ja auch noch; stimmt.
Habe es getestet.
Ohne dem Idle funktioniert es dann auch ohne der Beendenzeile (pygame.quit()).
Also braucht man es nur, wenn man mit der Idle arbeitet?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nur durch lesen der Doku bin ich nicht darauf gekommen -- ich hatte das Problem selbst mal mit einem Program. Das hatte zwar einen Aufruf von `pygame.quit()`, der wurde aber nicht immer ausgeführt (if-Abfragen etwas blöd verschachtelt).Leonidas hat geschrieben:BlackJack: Toll, darauf wäre ich nicht gekommen, Respekt!
Weis Jemand, was der eigentliche Sinn von:
und
ist?
Danke im vorraus.
Code: Alles auswählen
pygame.init()
Code: Alles auswählen
from pygame.locals import *
Danke im vorraus.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Erwin hat geschrieben:Weis Jemand, was der eigentliche Sinn von:
Code: Alles auswählen
pygame.init()
Der letzte Absatz in der Doku ist Schrott, deswegen habe ich ihn umgebaut. Für die Übersetzung lege ich keine Hand und auch keine Füße ins Feuer, es ist fast schon ein Uhr, da darf mein Englisch sich schon eine Auszeit genehmigen.pygame-doc | leonidas-übersetzung hat geschrieben:pygame.init() -> gelungen, mißlungen
Initialisiere alle importierten pygame Module. Einschließlich pygame Modulen, die nicht zeil der Basismodule sein (wie Schrift und Bilder).
Es wirft keine Ausnahmen, sondern zählt stattdessen still die Module auf, die nicht initialisiert werden konnten. Der Rückgabewert enthält die nicht initialisieren Module und ihre Anzahl.
Du kannst immer Module die dur brauchst per-Hand initialisieren. Die Module die Initialisierung benötigen haben immer eine init() und quit() Methode eingebaut, die du direkt aufrufen kannst. Sie haben auch eine get_init() Funktion, die du zum doppelten Prüfen der Initialisierung nutzen kannst. Angemerkt sei, dass die manuellen init() Methoden bei Fehlern eine Ausnahme werfen. Auf den meisten Platformen muss das Display-Modul vor den anderem Modulen initialisiert werden. Dieses init() wird es für dich erledigen, jedoch wenn du es per Hand machen willst solltest du dir dieser Beschränkung bewusst sein.
Wie auch mit den Manuellen init() Funktionen ist es auch problemlos möglich dieses init() so oft wie du willst aufzurufen.
Das importiert aus pygame.locals alle Konstanten, wie QUIT oder K_SPACE, insgesammt 224 Namen (pygame 1.6 unter Windows auf Python 2.4).Erwin hat geschrieben:undist?Code: Alles auswählen
from pygame.locals import *
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Also so ganz komme ich mit dem init() immer noch nicht mit.
Soll das etwa heißen, das manche Dinge eben extra aufgerufen werden müssen, wie zb. bei Tkinter das erstellen eines Buttons mittels '.place', was bei PyGame aber halt 'init()' heißt, und ich mit dem allgemeinen Befehl mir das jeweilige xx.init() ersparen kann?
Und was dem Local betrifft ... Konstanten?
In wie fern sind die den wichtig?
Braucht man die überhaupt?
Soll das etwa heißen, das manche Dinge eben extra aufgerufen werden müssen, wie zb. bei Tkinter das erstellen eines Buttons mittels '.place', was bei PyGame aber halt 'init()' heißt, und ich mit dem allgemeinen Befehl mir das jeweilige xx.init() ersparen kann?
Und was dem Local betrifft ... Konstanten?
In wie fern sind die den wichtig?
Braucht man die überhaupt?
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Schließlich ist die Auswahl ja groß genug.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Der Vergleich mit Tkinter hinkt.. gewaltig. Muss man bei einem Segelschiff die Kupplung betätigen, wenn man den Gang wechseln will? Nein, denn eine Jacht hat weder eine Kupplung noch eine Gangschaltung. Es ist einfach so: bevor due Pygame startest, muss es sich sozusagen.. vorbereiten. Und init() sagt pygame: "bereite dich vor". Danach macht pygame sozusagen einen Systemcheck, prüft ob Flügel dran sind, genügend Sprit und sagt dann: "Ja, alles ok", oder aber "Ja, aber der Autpilot ist ausgefallen" (letzteres ist mir noch nie passiert, dass pygame Probleme hatte). Und aufrufen musst du init() nur einmal, obwohl du auch von Hand alles nochmal nachprüfen kannst was du zwar kannst, aber nicht musst.Erwin hat geschrieben:Also so ganz komme ich mit dem init() immer noch nicht mit.
Soll das etwa heißen, das manche Dinge eben extra aufgerufen werden müssen, wie zb. bei Tkinter das erstellen eines Buttons mittels '.place', was bei PyGame aber halt 'init()' heißt, und ich mit dem allgemeinen Befehl mir das jeweilige xx.init() ersparen kann?
Nein, du kannst auch ohne diese Konstanten auskommen, nehmen wir doch mal einen Ausschnitt aus dem Beispielprogramm und entfernen die Konstanten (d.h. wir setzen die Werte ein):Erwin hat geschrieben:Und was dem Local betrifft ... Konstanten?
In wie fern sind die den wichtig?
Braucht man die überhaupt?
Code: Alles auswählen
while True:
for event in pygame.event.get():
if event.type == 12:
return
screen.blit(background, (0, 0))
pygame.display.flip()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice