es geht bei meiner Frage letztendlich um pygame, allerdings glaube ich, dass mein Problem, mit dem ich nicht weiterkomme, ein grundlegendes ist, daher schildere ich es zunächst einmal hier. Wenn falsch, bitte verschieben.
Ich versuche seit einiger Zeit Python zu erlernen. Nur aus Spaß und Hobby. Ich habe einige Tutorials durchgearbeitet (z. B. pythonbuch.com und python-lernen.de) und auf Youtube Anleitungen gesehen und die gestellten Aufgaben gelöst. Auch hier habe ich schon als Gast einige Hilfen gefunden. Es macht Spaß! Ich werde kein begnadeter Programmierer werden, dafür reicht mein mathematisches Know How wohl nicht aus. Aber das muss ich auch nicht. Dennoch möchte ich weiter lernen und hoffe, ihr könnt (und wollt) helfen. Ich habe mich lange gesträubt, hier zu posten, da ich es selber lösen wollte, aber jetzt häng ich schon seit Tagen fest und komm einfach nicht vom Fleck.
Ich versuche mich aktuell in pygame. Später soll daraus ein Spiel werden, man bewegt ein Quadrat mit den Pfeiltasten, von rechts kommen mehrere Quadrate an zufälliger Position ins Bild und wenn man eins davon berührt, hat man verloren. Bis dahin ist es aber noch etwas hin.
Ich bin soweit, dass ich ein Quadrat mit den Pfeiltasten bewegen kann und ein weiteres von rechts zufällig durch das Bild läuft. Jetzt möchte ich noch zahlreiche weitere Quadrate von rechts kommen lassen. Das kann ich auch erreichen, indem ich weitere Quadrate in den Loop schreibe... Aber das kann ja nicht richtig sein, da es doch völlig an OOP vorbeigeht.
Nachdem was ich gelesen habe, muss ich eine Klasse erstellen, welche die Eigenschaften der zufälligen Quadrate definiert, verbunden mit einer Funktion, welche die Bewegung der Quadrate festlegt. Sodass ich dann im Loop "nur noch" angeben muss, wie viele Quadrate aus der Klasse erstellt werden und sich bewegen sollen.
Hier mal der Code des "Spiels" bisher:
Code: Alles auswählen
import pygame
import sys
import random
#Fenster
pygame.init()
screen = pygame.display.set_mode([1000, 500])
pygame.display.set_caption('Quadrat')
clock = pygame.time.Clock()
#Fensterumrandung
rand_oben = pygame.draw.rect(screen, (0, 0, 0), (0, 0, 1000, 1))
rand_rechts = pygame.draw.rect(screen, (0, 0, 0), (1000, 0, 1, 500))
rand_unten = pygame.draw.rect(screen, (0, 0, 0), (0, 500, 1000, 1))
rand_links = pygame.draw.rect(screen, (0, 0, 0), (0, 0, 1, 500))
#Variablen
x = 5
y = 5
x2 = 970
y2 = random.randint(5, 475)
#Loop
go = True
while go:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
quadrat1 = pygame.Rect(x, y, 25, 25)
quadrat2 = pygame.Rect(x2, y2, 25, 25)
tastendruck = pygame.key.get_pressed()
if tastendruck[pygame.K_UP] and not quadrat1.colliderect(rand_oben):
y -= 5
if tastendruck[pygame.K_RIGHT] and not quadrat1.colliderect(rand_rechts):
x += 5
if tastendruck[pygame.K_DOWN] and not quadrat1.colliderect(rand_unten):
y += 5
if tastendruck[pygame.K_LEFT] and not quadrat1.colliderect(rand_links):
x -= 5
if x2 <= 970 and not x2 == 0:
x2 = x2 - 5
else:
x2 = 970
y2 = random.randint(5, 475)
screen.fill((0, 0, 0))
quadrat1 = pygame.draw.rect(screen, (255, 255, 255), (x, y, 25, 25))
quadrat2 = pygame.draw.rect(screen, (255, 0, 0), (x2, y2, 25, 25))
pygame.display.update()
clock.tick(60)
Ich denke mir, es läuft auf eine Klasse hinaus, in etwa so:
Code: Alles auswählen
class quadrat:
def __init__(self, x, y, breite, hoehe):
self.x = x
self.y = y
self.breite = breite
self.hoehe = hoehe
def bewegen(self, x, y):
if self.x <= 970 and not self.x == 0:
self.x = self.x - 5
else:
self.x = 970
self.y = random.randint(5, 475)
Es wäre toll, wenn der ein oder andere die Zeit findet, mich zu unterstützen. Insbesondere so, dass ich verstehe, was passiert. Wenn es noch Tutorials gibt, die anschaulich verdeutlichen, was passiert und was ich machen muss um mit Klassen und Funktionen zu arbeiten, dann gerne auch so. Ich kämpfe mich lieber selber durch und verstehe wie es geht, als dass ich einfach nur Codezeilen kopiere. Ich habe schon viel gesucht, aber bisher hat Google mir nicht weitergeholfen.
Gruß und Dank!