Welche Erwartungen habt ihr?
Die PrÀsentation gibt es auf:
https://maytastix.de/pygame
# pygame in unser Projekt hinzufĂŒgen
import pygame
# pygame in unser Projekt hinzufĂŒgen
import pygame
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
# pygame in unser Projekt hinzufĂŒgen
import pygame
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
Der obere Teil wird einmal ausgefĂŒhrt wĂ€hrend der untere Teil die ganze Zeit ausgefĂŒhrt wird
# Code der einmal aufgefĂŒhrt wird
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Code der immer lÀuft
pygame.display.flip()
clock.tick(60)
pygame.quit()
screen.fill("red") fÀrbt eine ganze FlÀche mit einer Farbe ein
# Code der einmal aufgefĂŒhrt wird
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Code der immer lÀuft
screen.fill("red")
pygame.display.flip()
clock.tick(60)
pygame.quit()
# Code der einmal aufgefĂŒhrt wird
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Code der immer lÀuft
screen.fill("blue")
pygame.display.flip()
clock.tick(60)
pygame.quit()
Mehr Farben:
https://www.pygame.org/docs/ref/color_list.html?highlight=colorsBisschen SpaĂ mit Farben und dann geht es weiter mit Formen.
Erstmal easy Formen, dann wirds bissl cooler đ±
# Code der einmal aufgefĂŒhrt wird
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Code der immer lÀuft
screen.fill("black")
pygame.draw.rect(screen, "brown" , (100, 250, 75,75))
pygame.draw.rect(screen, "brown" , (100, 250, 75,75), 4)
pygame.draw.circle(screen, "red" , (300, 250), 75)
pygame.draw.polygon(screen, "green", ((400,325),(500,325), (450 , 100)))
pygame.draw.ellipse(screen, "violet" , (550, 250, 75,100))
pygame.display.flip()
clock.tick(60)
pygame.quit()
So siehts dann aus
# Code der einmal aufgefĂŒhrt wird
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
Erstmal eine neue Klasse anlegen
# Code der einmal aufgefĂŒhrt wird
class Ball(pygame.sprite.Sprite):
def __init__(self, x, y, radius) :
# gröĂe der FlĂ€che hintergrund
self.surface = pygame.Surface((radius*2, radius*2), pygame.SRCALPHA)
# ZeichenflÀche Farbe Position Radius
pygame.draw.circle(self.surface, "red", (radius, radius), radius)
#Rechteck der ZeichenflÀche
self.rect = self.surface.get_rect()
self.rect.centerx = x
self.rect.centery = y
#Zeichnet das Object
def draw(self, surface):
surface.blit(self.surface, self.rect)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
Eine Klasse muss dann angelegt werden
# Code der einmal aufgefĂŒhrt wird
class Ball(pygame.sprite.Sprite):
def __init__(self, x, y, radius) :
# gröĂe der FlĂ€che hintergrund
self.surface = pygame.Surface((radius*2, radius*2), pygame.SRCALPHA)
# ZeichenflÀche Farbe Position Radius
pygame.draw.circle(self.surface, "red", (radius, radius), radius)
#Rechteck der ZeichenflÀche
self.rect = self.surface.get_rect()
self.rect.centerx = x
self.rect.centery = y
#Zeichnet das Object
def draw(self, surface):
surface.blit(self.surface, self.rect)
#Erstellt ein neues Kreisrundes Object in der Mitte vom Bildschirm
ball = Ball(screen.get_width()/2, screen.get_height()/2, 40)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
Dann können wir sie Zeichnen
# Code der einmal aufgefĂŒhrt wird
class Ball(pygame.sprite.Sprite):
def __init__(self, x, y, radius) :
# gröĂe der FlĂ€che hintergrund
self.surface = pygame.Surface((radius*2, radius*2), pygame.SRCALPHA)
# ZeichenflÀche Farbe Position Radius
pygame.draw.circle(self.surface, "red", (radius, radius), radius)
#Rechteck der ZeichenflÀche
self.rect = self.surface.get_rect()
self.rect.centerx = x
self.rect.centery = y
#Zeichnet das Object
def draw(self, surface):
surface.blit(self.surface, self.rect)
#Erstellt ein neues Kreisrundes Object in der Mitte vom Bildschirm
ball = Ball(screen.get_width()/2, screen.get_height()/2, 40)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
#Malt das Kreisrunde Objekt
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Wie verÀndere ich die Position vom Kreis?
AnschlieĂend wie verĂ€ndere ich die Farbe?
Und kann ich die Farbe auch von auĂen Ă€ndern?
class Ball(pygame.sprite.Sprite):
def __init__(self, x, y, radius, color) :
# gröĂe der FlĂ€che hintergrund
self.surface = pygame.Surface((radius*2, radius*2), pygame.SRCALPHA)
# ZeichenflÀche Farbe Position Radius
pygame.draw.circle(self.surface, color, (radius, radius), radius)
#Rechteck der ZeichenflÀche
self.rect = self.surface.get_rect()
self.rect.centerx = x
self.rect.centery = y
self.color = color
#Zeichnet das Object
def draw(self, surface):
surface.blit(self.surface, self.rect)
#Erstellt ein neues Kreisrundes Object in der Mitte vom Bildschirm
ball = Ball(50, 80, 40, "blue")
Erstmal wie verĂ€ndere ich eine Position von auĂen?
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ball.rect.centerx = 500
ball.rect.centery = 300
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Wie frage ich eine Taste ab?
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centerx = 500
ball.rect.centery = 300
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Wenn ich jetzt drĂŒcke
bewegt sich mein Kreis aufeinmal woanders hin.
Aber wie kann ich den Kreis
von seiner aktuellen Position aus bewegen?
Indem ich auf entweder das x oder das y eine Zahl addiere oder subtrahiere
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery -= 1
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Um weitere Tasten abzufragen fĂŒge ich ein weiteres if ein
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery += 1
if keys[pygame.K_DOWN]:
ball.rect.centery -= 1
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Warum wird das so komisch gezeichnet?
Weil wir den alten Kreis nicht ĂŒberzeichnen
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill("black")
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery -= 1
if keys[pygame.K_DOWN]:
ball.rect.centery += 1
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
FĂŒge Abfragen fĂŒr die Bewegung nach rechts und links hinzu
Lösung
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill("black")
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery -= 1
if keys[pygame.K_DOWN]:
ball.rect.centery += 1
if keys[pygame.K_RIGHT]:
ball.rect.centerx += 1
if keys[pygame.K_LEFT]:
ball.rect.centerx -= 1
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Horizontale Kollision abfragen
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill("black")
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery -= 1
if keys[pygame.K_DOWN]:
ball.rect.centery += 1
if ball.rect.left < 0:
ball.rect.left = 0
if ball.rect.right > screen.get_width():
ball.rect.right = screen.get_width()
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Vertikale Kollision abfragen
ball = Ball(50, 80, 40, "blue")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill("black")
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
ball.rect.centery -= 1
if keys[pygame.K_DOWN]:
ball.rect.centery += 1
if ball.rect.left < 0:
ball.rect.left = 0
if ball.rect.right > screen.get_width():
ball.rect.right = screen.get_width()
if ball.rect.top < 0:
ball.rect.top = 0
if ball.rect.bottom > screen.get_height():
ball.rect.bottom = screen.get_height()
ball.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Jetzt coden wir richtiges Ping Pong!
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
ball = Ball(screen.get_width()/2,screen.get_height()/2,40,"red")
ball.x_velocity = 1
ball.y_velocity = 1
schlÀger = Paddle(40, 60, 10, 100, "violet")
schlÀger2 = Paddle(screen.get_width()-50, 60, 10, 100, "yellow")
spielestand = Counter(20,20, "freesansbold.ttf")
spielestand2 = Counter(screen.get_width()-20,20, "freesansbold.ttf")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
pygame.quit()
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
ball = Ball(screen.get_width()/2,screen.get_height()/2,40,"red")
ball.x_velocity = 1
ball.y_velocity = 1
schlÀger = Paddle(40, 60, 10, 100, "violet")
schlÀger2 = Paddle(screen.get_width()-50, 60, 10, 100, "yellow")
spielestand = Counter(20,20, "freesansbold.ttf")
spielestand2 = Counter(screen.get_width()-20,20, "freesansbold.ttf")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ball.update()
ball.draw(screen)
schlÀger.draw(screen)
schlÀger2.draw(screen)
spielestand.draw(screen)
spielestand2.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
ball = Ball(screen.get_width()/2,screen.get_height()/2,40,"red")
ball.x_velocity = 1
ball.y_velocity = 1
schlÀger = Paddle(40, 60, 10, 100, "violet")
schlÀger2 = Paddle(screen.get_width()-50, 60, 10, 100, "yellow")
spielestand = Counter(20,20, "freesansbold.ttf")
spielestand2 = Counter(screen.get_width()-20,20, "freesansbold.ttf")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ball.update()
ball.draw(screen)
schlÀger.draw(screen)
schlÀger2.draw(screen)
spielestand.draw(screen)
spielestand2.draw(screen)
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
if schlÀger.rect.top > 0:
schlÀger.rect.centery -= 5
if keys[pygame.K_s]:
if schlÀger.rect.bottom < screen.get_height():
schlÀger.rect.centery += 5
if keys[pygame.K_UP]:
if schlÀger2.rect.top > 0:
schlÀger2.rect.centery -= 5
if keys[pygame.K_DOWN]:
if schlÀger2.rect.bottom < screen.get_height():
schlÀger2.rect.centery += 5
pygame.display.flip()
clock.tick(60)
pygame.quit()
# pygame in unser Projekt hinzufĂŒgen
import pygame
from pingpong.PingPong import Ball, Paddle, Counter
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
ball = Ball(screen.get_width()/2,screen.get_height()/2,40,"red")
ball.x_velocity = 1
ball.y_velocity = 1
schlÀger = Paddle(40, 60, 10, 100, "violet")
schlÀger2 = Paddle(screen.get_width()-50, 60, 10, 100, "yellow")
spielestand = Counter(20,20, "freesansbold.ttf")
spielestand2 = Counter(screen.get_width()-20,20, "freesansbold.ttf")
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ball.update()
ball.draw(screen)
schlÀger.draw(screen)
schlÀger2.draw(screen)
spielestand.draw(screen)
spielestand2.draw(screen)
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
if schlÀger.rect.top > 0:
schlÀger.rect.centery -= 5
if keys[pygame.K_s]:
if schlÀger.rect.bottom < screen.get_height():
schlÀger.rect.centery += 5
if keys[pygame.K_UP]:
if schlÀger2.rect.top > 0:
schlÀger2.rect.centery -= 5
if keys[pygame.K_DOWN]:
if schlÀger2.rect.bottom < screen.get_height():
schlÀger2.rect.centery += 5
if ball.rect.bottom > screen.get_height() or ball.rect.top < 0:
ball.y_velocity *= -1
if ball.rect.colliderect(schlÀger.rect) or ball.rect.colliderect(schlÀger2.rect):
ball.x_velocity *= -1
if ball.rect.left > screen.get_width() - 40 :
spielestand.increase()
ball.reset_position()
if ball.rect.right < 0:
spielestand2.increase()
ball.reset_position()
pygame.display.flip()
clock.tick(60)
pygame.quit()
Habt ihr noch fragen?
Was fandet ihr gut?
Was lief nicht so gut?
Free Code Camp
https://www.youtube.com/@freecodecampThe Coding Train
https://www.youtube.com/@TheCodingTrainCode Combat
https://codecombat.com/Jugendhackt
https://jugendhackt.org/