Problem?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Code: Alles auswählen

import pygame, sys
pygame.init()
screen = pygame.display.set_mode ((640, 480))
screen.fill ((255,255,255))
pygame.draw.circle (screen, (255,0,0),(100,100),30,0)
pygame.display.flip()
while True:
    for evevnt in pygame.event.get():
        if event.type == pygamge.QUIT:
            sys.exit()
Wenn ich das Programm ausführe, kommt die Meldung: NameError: name 'even' is not defined.

Was ist eigentlich besser:

SPE oder der ganzen normale Python Shell?

Mich regt das immer auf, wenn das Programm nicht das macht was ich will :K

Noch ein weiteres Problem:

Gibt es irgendein kostenloses E-Book wo es um Python für Fortgeschrittene geht? Weil zur Zeit tappe ich etwas auf der Stelle, was das Programmier Wissen angeht. Leider ist an der Stelle auch mein Buch:

Hello World - Programmieren für Kids und andere Anfänger

zu Ende.

Ich will endlich richtig 3D Programmieren können, oder zumindest wissen wie es geht. Manchmal verliere ich einfach die Lust, weiterzumachen, da das ganze für mich ziemlich komplex wirkt und ich an manchem Stellen nicht weiterweis.

Mit freundlichen Grüßen

Weltbesiedler
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Vielleicht solltest du Fehlermeldungen besser kopieren als sie abzuschreiben.
Weltbesiedlder hat geschrieben:evevnt
Das Leben ist wie ein Tennisball.
BlackJack

@Weltbesiedler: Die Fehlermeldung passt nicht zum Quelltext. Du postest hier nicht den gesamten Traceback. Und wenn Du *den* Fehler (und den anderen der gleichen Kategorie) nicht selber findest, dann solltest Du vielleicht die Finger vom programmieren lassen. :roll:

Mal ehrlich, wo glaubst Du denn wo `event` bei Dir definiert wird? Oder `pygamge`!?
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Inzwischen habe ich den Code gelöscht, weil er eh ein Kack war.

So neues Problem:

Code: Alles auswählen

import pygame, sys
from pygame import *
pygame.init()
screen = pygame.display.set_mode ([1920, 1080],FULLSCREEN)
screen.fill ((255,255,255))
color = (255,255,0)
y = (40,40)
radius = (10)
pygame.draw.circle(screen,color,y,radius,1)
color1 = (255,0,255)
x = (60,60)
radius1 = (10)
pygame.draw.circle(screen,color1,x,radius1,1)
pygame.display.flip()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                      sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.k_f:
                    y = (10,10)
                    pygame.draw.circle(screen,color,y,radius,1)
                    pygame.display.flip()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.k_u:
                    x = (30,30)
                    pygame.draw.circle(screen,color1,x,radius1,1)
                    pygame.display.flip()
Tracebakc (most recent call last):

if event.key == pygame.k_f:
AttributeError: "module" object has no attribute "k_f"

Ich würde nur sehr un gerne das Programmieren aufhören. Oben ist die gesamte Fehlermeldung
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Weltbesiedler hat geschrieben:Ich würde nur sehr un gerne das Programmieren aufhören
Wie kommst du denn darauf? Das ist nichts, das man von heute auf morgen lernt.
Aber: Schlamperei ist fehl am platz, man muss genau arbeiten. Da ist auch dein Problem:

Code: Alles auswählen

import pygame, sys
from pygame import *
Macht zusammen keinen Sinn, entscheide dich (am besten fuer die 1. Zeile).

Und du musst auch die richtigen Module verwenden. `k_f` ist nicht in `pygame` (oder `pygame.pygame`), sondern `pygame.key` (als `K_f`).
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Wenn ich die untere Zeile wegmache, funktioniert der Fullscreen-Befehl nicht mehr.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Ich weis halt nicht, was diese einzelnen Befehle überhaupt machen, also das mit dem import und so, ich schreib meistens alles von meinem Buch ab und versuche es dann etwas zu verändern, was man, wie man hier sieht, nicht wirklich gelingt.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Weltbesiedler hat geschrieben:Wenn ich die untere Zeile wegmache, funktioniert der Fullscreen-Befehl nicht mehr.
Und warum nicht? Welche Fehlermeldung bekommst du?
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

screen = pygame.display.set_mode ([1920, 1080], FULLSCREEN)
NameError: name "Fullscreen" is not defined
Script terminated
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Weltbesiedler hat geschrieben:Ich weis halt nicht, was diese einzelnen Befehle überhaupt machen, [...] ich schreib meistens alles von meinem Buch ab und versuche es dann etwas zu verändern, was man, wie man hier sieht, nicht wirklich gelingt.
Überrascht mich nicht wirklich. Vielleicht solltest du deine Lernmethode ändern. Dann hast du sehr wahrscheinlich auch mehr Erfolg und damit auch mehr Spaß.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Weltbesiedler hat geschrieben:Ich weis halt nicht, was diese einzelnen Befehle überhaupt machen, also das mit dem import und so, ich schreib meistens alles von meinem Buch ab und versuche es dann etwas zu verändern, was man, wie man hier sieht, nicht wirklich gelingt.
Dann solltest du dir die Grundlagen mit dem Tutorial beibringen und bei Unklarheiten nachfragen.

Fuer den konkreten Fall:
`import modul` erzeugt einen neuen Namen `modul` ueber den man auf alle Namen, die in dem Modul `modul` definiert sind, zugreifen kann.
`from modul import *` macht alle Namen die in `modul` existieren (es sei denn sie fangen mit Unterstrichen an) direkt zugaenglich - und ueberschreiben damit schon bestehende Namen oder koennen ueberschrieben werden, der Grund warum man das nicht nutzen sollte.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Aber was ist den die richtige Lernmethode? Ich hab mir das Buch schon 2 Mal durchgelesen. Ich bräuchte ein Tutorial für Graphisches Programmieren mit Python und Pygame. Ich sag es euch: Ich bin kurz davor auf Java bzw. C++ umzusteigen, ob das aber einfach wird, bezweifle ich :K
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

Versuch' mal jeden Schritt deines Quellcodes nachzuvollzeihen. Sollte etwas in deinem Buch nicht erklärt sein, kannst Du die Suchmaschine deines Vertrauens anwerfen. So hats bei mir ziemlich gut geklappt.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Weltbesiedler hat geschrieben:screen = pygame.display.set_mode ([1920, 1080], FULLSCREEN)
NameError: name "Fullscreen" is not defined
Script terminated
Schau mal, beim Programmieren wirst du es häufiger mit Fehlermeldungen zu tun bekommen. Wie willst du das Problem jemals lösen können, wenn du es nicht einmal schaffst die Fehlermeldung korrekt anzugeben. Python kann sich laut deinem gezeigten Code hier niemals über Fullscreen, sondern höchstens über FULLSCREEN beschwert haben.

Jetzt sollte sich dir die Frage stellen, warum FULLSCREEN als fehlend bezeichnet wird. Dazu solltest du erst einmal wissen woher FULLSCREEN kommt. Du hast die Dokumentation von Pygame offensichtlich nicht gelesen, also weißt du es nicht.

Du hast aber einen anderen Weg es herauszufinden. Welche Änderung hast du am Code vorgenommen. Du hast den *-Import von pygame entfernt. Das sollte den logischen Schluss nahelegen, dass FULLSCREEN von pygame bereitgestellt wird. Folglich sähe der Versuch der Fehlerbeseitigung so aus, dass du FULLSCREEN durch pygame.FULLSCREEN ersetzt.


Es gibt Leute die absolut kein Verständnis für Programmierung entwickeln und es gibt Leute die einfach zu viel auf einmal wollen. Bei dir bin ich mir noch nicht sicher, was es ist. Versuch bitte die Grundlagen zu verstehen. Dazu gehört auch, dass du mal selber versuchst einem Fehler auf die Spur zu kommen. Nur so kannst du wirklich lernen. Python ist eine wunderbare Sprache für den Einstieg. Bei Perl oder C++ hättest du wahrscheinlich längst aufgegeben.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Ich danke euch schon mal alle für die hilfreichen Tipps. Aber wie soll ich denn das Problem lösen, wenn ich den Sinn nicht verstanden habe. Kennt ihr vielleicht einige Tutorials, die mir helfen könnten?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wenn du etwas nicht verstanden hast, dann schau in die dazugehörige Dokumentation und blättere nicht einfache eine Buchseite weiter. Wenn dir das nichts hilft, dann frage die Suchmaschine deiner Wahl. Und solltest du dann immer noch nicht weiter kommen, dann kannst du immer noch hier dein Problem posten. Programmieren lernst du nicht durch Lesen und Abschreiben, du musst schon ein wenig eigene Arbeit investieren.

Um es noch einmal deutlich zu machen: deine Probleme sind so grundlegend, dass du unbedingt das besagte Tutorial durcharbeiten solltest. Danach kannst du dich an Pygame machen. Ein Wechsel auf Java oder C++ wird nichts bringen, dort wirst du die selben - und wahrscheinlich noch ein paar mehr - haben.
Das Leben ist wie ein Tennisball.
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

Schau dir das mal an: http://de.wikibooks.org/wiki/Python_unter_Linux:_PyGame
oder auch immer wieder zu empfehlen das Galileo Open Book Python: http://openbook.galileocomputing.de/python/
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Wuschli hat geschrieben:oder auch immer wieder zu empfehlen das Galileo Open Book Python: http://openbook.galileocomputing.de/python/
Wenn du der Meinung bist, dass das Open Book zu empfehlen ist, dann solltest du mal die Suchfunktion nach Gegenmeinungen befragen. Die mäßige Qualität wurde hier an der ein oder anderen Stelle schon oft genug diskutiert.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

So ich habe meinen Quellcode nun etwas modifiziert, nun tauchen weitere Probleme auf, was damit anfängt, dass ich den Fehlercode nicht einmal verstehe:

Code: Alles auswählen

import pygame, sys
pygame.init()
screen = pygame.display.set_mode ([1920, 1080],pygame.FULLSCREEN)
screen.fill ((255,255,255))
color = (255,255,0)
y = (40,40)
radius = (10)
pygame.draw.circle(screen,color,y,radius,1)
color1 = (255,0,255)
x = (60,60)
radius1 = (10)
pygame.draw.circle(screen,color1,x,radius1,1)
pygame.display.flip()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                      sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_f:
                    y = (10,10)
                    pygame.draw.circle(screen,color,y,radius,1)
                    pygame.display.flip()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_u:
                    x = (30,30)
                    pygame.draw.circle(screen,color1,x,radius1,1)
                    pygame.display.flip()
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_u:
                x = x + 1
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_f:
                y = y + 1
        
                
        pygame.draw.circle(screen, color,y, radius,1)
        pygame.draw.circle(screen, color1,x, radius1,1)
    pygame.display.update()
Traceback (most recent call last):

x = x +1
TypeError: can only concatenate tuple (not "int" ) to tuple
Script terminated
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Weltbesiedler hat geschrieben:x = x +1
TypeError: can only concatenate tuple (not "int" ) to tuple
Was ist genau dein Problem? Welche Wörter oder welche Bedeutung verstehst du nicht?
Antworten