programmeren

in python

Jaar 2 - Module 1 - Les 4: Collision Detection - Deel 2

welkom!

Ik heb op je feedback gereageerd.
Neem even de tijd om dat te lezen.

welkom!

Zet je vel nu weer als naambordje neer

vandaag gaan we leren

 

  • Code van week 3 samen bespreken

  • Nadenken over extra elementen in je simulatie

klassenregels in 009

  • Als er iemand aan het woord is, is de rest stil
     
  • Hou je hand op tot iemand de beurt krijgt van mij
    • Het is handig als niet iedereen door elkaar praat

nu even opfrissen!

demo (vorige week begin)

Helemaal bovenaan laden we PyGame en time in

#laad modules in
import pygame
import time

Stukken code pygame

Boven aan het programma stel je het speelveld in.

#stel het speelveld in
breedte = 800
hoogte = 600
screen = pygame.display.set_mode((breedte, hoogte)) 

#maak een variabele met RGB-code voor zwart
backgroundColor = 0, 0, 0 

Stukken code pygame

Dan laad je het plaatje van de muis
(bij jou natuurlijk een ander dier!)

#laad het plaatje van de muis in
muis = pygame.image.load("muis.png")
#dan vragen we de rechthoek op van het plaatje
muis_rechthoek = muis.get_rect()
#zet de snelheid goed, dit is naar rechts
muis_snelheid = [0, 1]

Stukken code pygame

Nu bijna dezelfde code voor de leeuw

#laad het plaatje van de leeuw in
leeuw = pygame.image.load("leeuw-a.png")
#dan vragen we de rechthoek op van het plaatje
leeuw_rechthoek = leeuw.get_rect()
#zet de snelheid goed, dit is naar beneden
leeuw_snelheid = [1, 0]

Stukken code pygame

Dan komt er een lus, met while True:

while True:
  # doe de hele tijd terwijl het spel draait alles
  # in de while True:

Stukken code pygame

Alles wat er in de lus zit, moet beginnen met 2 spaties.

Dat wordt steeds weer herhaald.

In de lus zitten verschillende stukken code.

while True:

  muis_rechthoek = muis_rechthoek.move(muis_snelheid)
  screen.blit(muis, muis_rechthoek)

Stukken code pygame

Deze code beweegt de muis met de muis_snelheid.
Daarna wordt de muis getekend.

In de lus zitten verschillende stukken code.

while True:

  muis_rechthoek = muis_rechthoek.move(muis_snelheid)
  screen.blit(muis, muis_rechthoek)

Stukken code pygame

Deze code beweegt de muis met de muis_snelheid.
Daarna wordt de muis getekend.

In de lus zitten verschillende stukken code.

while True:

  if muis_rechthoek.bottom < 0:
      muis_snelheid[1] = - muis_snelheid[1]

  if muis_rechthoek.bottom > 600:
      muis_snelheid[1] = - muis_snelheid[1]

  if muis_rechthoek.right < 0:
      muis_snelheid[0] = - muis_snelheid[0]

  if muis_rechthoek.right > 800:
      muis_snelheid[0] = - muis_snelheid[0]

Stukken code pygame

Deze code kijkt of de muis de zijkanten  raakt, en draait dan om.

Dezelfde twee stukken staan er voor de leeuw.

Stukken code pygame

Dezelfde twee stukken staan er voor de leeuw.

Stukken code pygame

while True:
  # hier staat dus bij jou de code voor de muis
  
  leeuw_rechthoek = leeuw_rechthoek.move(leeuw_snelheid)
  screen.blit(leeuw, leeuw_rechthoek)

Deze code beweegt de leeuw met de leeuw_snelheid.
Daarna wordt de leeuw getekend.

Stukken code pygame

Deze code kijkt of de leeuw de zijkanten  raakt, en draait dan om.

while True:

  if leeuw_rechthoek.bottom < 0:
      leeuw_snelheid[1] = - leeuw_snelheid[1]

  if leeuw_rechthoek.bottom > 600:
      leeuw_snelheid[1] = - leeuw_snelheid[1]

  if leeuw_rechthoek.right < 0:
      leeuw_snelheid[0] = - leeuw_snelheid[0]

  if leeuw_rechthoek.right > 800:
      leeuw_snelheid[0] = - leeuw_snelheid[0]

Dezelfde twee stukken staan er voor de leeuw.

Stukken code pygame

while True:
  #alle code voor het bewegen van de leeuw en de muis
  
  time.sleep(10 / 1000)

Als laatste staat er nog code in de lus om even te wachten.

Anders gaat je simulatie te snel.

Nieuwe code van vorige week

Net als vorige week oefenen we de codes weer op de werkbladen in 011.

 

Denk eraan! Begin niet meteen met programmeren, maar lees eerst de code en leg goed uit wat die code doet. 

deze codes oefenen

Schrijf steeds per blok op wat de code doet.

Net als vorige week oefenen we de codes weer op de werkbladen in 011.

deze codes oefenen

Schrijf steeds per blok op wat de code doet.

Net als vorige week oefenen we de codes weer op de werkbladen in 011.

Als het goed is, wordt dat steeds makkelijker.

"collision detection"

Vorige week hebben we er codes bij gezet voor voedsel en collision detection.

demo

"collision detection"

Vorige week hebben we er codes bij gezet voor voedsel en collision detection.

kaas = pygame.image.load("kaas.png")
kaas_rechthoek = kaas.get_rect()

Code om een nieuw element in te laden:

"collision detection"

Vorige week hebben we er codes bij gezet voor voedsel en collision detection.

kaas = pygame.image.load("kaas.png")
kaas_rechthoek = kaas.get_rect()

Code om een nieuw element in te laden:

Proefwerkvraag...!

"collision detection"

Vorige week hebben we er codes bij gezet voor voedsel en collision detection.

kaas = pygame.image.load("kaas.png")
kaas_rechthoek = kaas.get_rect()

Code om een nieuw element in te laden:

Vergeet niet om nieuwe elementen ook te "blitten" (tekenen)

screen.blit(kaas, kaas_rechthoek)

"collision detection"

Vorige week hebben we er codes bij gezet voor voedsel en collision detection.

"collision detection"

Dit is de code om te bekijken of de muis de kaas raakt,

en de muis laten groeien. We bekijken het stap voor stap.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Raakt de muis_rechthoek de kaas_rechthoek?

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Als de muis de kaas raakt, print dan 'hap hap'.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

We maken variabelen x en y aan, en slaan daarin de grootte van de muis op.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

We maken variabele center aan, en slaan daarin de locatie van de muis op (het middelpunt).

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Maak nu de x en de y een klein beetje groter.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Laat het muisplaatje opnieuw in.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Stel nu de grootte van de muis in met de nieuwere,
iets grotere x en y.

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Vraag weer de rechthoek op (omdat de muis nu groter is)

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Zet de muis op hetzelfde midden (dat is mooier)

while True:
  #hier staat bij jou alle code om te bewegen
  if muis_rechthoek.colliderect(kaas_rechthoek):
    print('hap hap')
    #de muis wordt groter:
    x, y = muis_rechthoek.size
    center = muis_rechthoek.center
    x, y = int(x * 1.05), int(y * 1.05)
    muis = pygame.image.load("muis.png")
    muis = pygame.transform.scale(muis, (x, y))
    muis_rechthoek = muis.get_rect()
    muis_rechthoek.center = center
  else:
    print('ik heb honger')

"collision detection"

Er is nog wel iets niet helemaal in de haak!

demo

"collision detection"

Er is nog wel iets niet helemaal in de haak!

 

De muis blijft de kaas aanraken, dus de muis blijft groeien. Dat ga jij straks oplossen.

klassenregels in 011

  • Blijf op je plek
     
  • Heb je een vraag?
    • Lees eerst de hele opgave!
    • Plak je roze postit op je monitor
  • Wil je aftekenen?
    • Kijk eens goed of je alle bullet points hebt!
    • Plak je gele postit op je monitor
  • Scherm op zwart?
    • Verplaats je stoel naar het midden van de klas
    • Draai je gezicht naar voren

zodadelijk op de computer...

Python Klas 2 - Module 1 - Les 4

By Felienne

Python Klas 2 - Module 1 - Les 4

  • 29
Loading comments...

More from Felienne