programmeren

in python

Jaar 2 - Module 1 - Les 4: Omdraaien & Voedsel verplaatsen

Het thema van dit jaar is PyGame

 

thema jaar 2: Pygame

simulatie

In de simulatie van dit blok ga jij een dier kiezen en een bijbehorend voedsel.

vandaag gaan we leren

 

  • Je dier ook visueel laten omdraaien aan de rand

  • Het voedsel verplaatsen door het veld

demo (vorige week)

Stuiteren

Nog even een herhaling van vorige les.

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Wat doet deze code?

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Zet de code even op pauze

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Wat doet deze code?

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Kijkt of het dier al bij de rechterkant is

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Wat doet deze code?

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Stelt de snelheid in (maar beweegt niets!)

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Wat doet deze code?

Stuiteren

Nog even een herhaling van vorige les.

Verplaatst de rechthoek van het dier met stapjes uit variabele snelheid

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Wat doet deze code?

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Nog even een herhaling van vorige les.

Draait de snelheid om, het dier gaat nu de andere kant op

snelheid = [1, 0]

while dier_leeft:
  
  #alle andere codes hier

  #beweeg de schildpad
  schildpad_rechthoek = schildpad_rechthoek.move(snelheid)
  
  if schildpad_rechthoek.right > 600:
    snelheid[0] = -snelheid[0]

  time.sleep(0.1)

print('Helaas, je schildpad is overleden')

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

schildpad = pygame.transform.rotozoom(schildpad_origineel, 0, 95)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

schildpad = pygame.transform.rotozoom(schildpad_origineel, 0, 95)

Roteer en zoom het plaatje

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

schildpad = pygame.transform.rotozoom(schildpad_origineel, 0, 95)

Plaatje om te transformeren 

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

schildpad = pygame.transform.rotozoom(schildpad_origineel, 0, 95)

0 graden roteren

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

We hebben eerder al transformaties gezien in Pygame, zoals deze:

schildpad = pygame.transform.rotozoom(schildpad_origineel, 0, 95)

95% zoomen

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

schildpad_origineel = pygame.transform.flip(schildpad_origineel, True, False)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

Flip het plaatje

schildpad_origineel = pygame.transform.flip(schildpad_origineel, True, False)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

Plaatje om te flippen

schildpad_origineel = pygame.transform.flip(schildpad_origineel, True, False)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

Flippen we links-recht?

schildpad_origineel = pygame.transform.flip(schildpad_origineel, True, False)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

Er zijn nog meer transformaties, ook flip:

Flippen we boven-onder?

schildpad_origineel = pygame.transform.flip(schildpad_origineel, True, False)

Stuiteren

Het dier stuitert nu wel aan de rand, maar dan loopt hij daarna achteruit! Dat is niet zo mooi, dat gaan we vandaag oplossen.

 

De flipcode moet natuurlijk op dezelfde plek staan waar het dier ook omdraait. 

 

Zet jij die zo op de juiste plek?

demo

voedsel Bewegen

In de natuur beweegt ook het voedsel. Een plant verwelkt na een tijdje, en een konijntje hopt weg. 

voedsel Bewegen

In de natuur beweegt ook het voedsel. Een plant verwelkt na een tijdje, en een konijntje hopt weg. 

 

Wij laten het voedsel steeds op een andere plek verschijnen.

Die plek gaan we steeds willekeurig kiezen.

voedsel Bewegen

Zo laten we het voedsel verspringen:

import random

while dier_leeft:
  
  sla_x = random.randint(0,500)
  sla_y = random.randint(0,500)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

voedsel Bewegen

Zo laten we het voedsel verspringen:

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

Laad de module random in

voedsel Bewegen

Zo laten we het voedsel verspringen:

Kies een willekeurige x (links-rechts)

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

voedsel Bewegen

Zo laten we het voedsel verspringen:

Kies een willekeurige y (boven-onder)

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

voedsel Bewegen

Zo laten we het voedsel verspringen:

Zet de sla op de willekeurige plek

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

voedsel Bewegen

Zo laten we het voedsel verspringen:

Zet de sla op de willekeurige plek

Bij jou is dat natuurlijk een ander voedsel!

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

demo

voedsel Bewegen

Dat werkte wel maar... Er wordt wel heel veel gesprongen!

voedsel Bewegen

Dat werkte wel maar... Er wordt wel heel veel gesprongen!

 

Dat moet eigenlijk langzamer.

voedsel Bewegen

Dat werkte wel maar... Er wordt wel heel veel gesprongen!

 

Dat moet eigenlijk langzamer.

Dan denk je misschien...: Dat kan met time.sleep()

 

Laten we dat eens proberen!

demo

voedsel Bewegen

Sleep zet het hele programma op pauze, dus ook de schildpad.

 

 

voedsel Bewegen

Sleep zet het hele programma op pauze, dus ook de schildpad.

 

Dat willen we niet, we willen dat de schildpad doorloopt terwijl de sla rustig, af en toe, verspringt.

 

 

voedsel Bewegen

Sleep zet het hele programma op pauze, dus ook de schildpad.

 

Dat willen we niet, we willen dat de schildpad doorloopt terwijl de sla rustig, af en toe, verspringt.

 

Daarvoor gaan we een nieuw code leren, die af en toe aan gaat.

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Begin te tellen bij 0

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Iedere stap doen we er eentje bij

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Teken alle plaatjes zoals eerst
 

}

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Teken alle plaatjes zoals eerst
(ook de sla)

}

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Iedere 10 stappen doen we deze codes

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

Dan gaat de sla naar een andere plek

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

Soms iets doen

Met deze code kun je af en toe iets doen, maar niet de hele tijd.

En begin weer op 0

spring_teller = 0

while dier_leeft:

  spring_teller = spring_teller + 1

  #teken de plaatjes
  pygame.display.flip()
  screen.fill(background_color)
  screen.blit(schildpad, schildpad_rechthoek)
  screen.blit(sla, sla_rechthoek)

  if spring_teller == 10:
    sla_x = random.randint(100,500)
    sla_y = random.randint(100,200)
    sla_rechthoek.center = (sla_x, sla_y)   
    spring_teller = 0

demo

voedsel Bewegen

Dat werkte wel maar... Er wordt wel heel veel gesprongen!

import random

while dier_leeft:
  
  sla_x = random.randint(100,400)
  sla_y = random.randint(100,200)
  sla_rechthoek.center = (sla_x, sla_y)
  screen.blit(sla, sla_rechthoek)
  
  #alle andere codes hier

print('Helaas, je schildpad is overleden')

Zet de sla op de willekeurige plek

Bij jou is dat natuurlijk een ander voedsel!

zodadelijk op de computer...

opdrachten deel b

opdrachten deel b

opdrachten deel b

Python Klas 2 - Module 2 - Les 4

By Felienne

Python Klas 2 - Module 2 - Les 4

Leerdoel Module: PyGame gebruiken om een simulatie te maken Lesdoel: Plaatje flippen en voedsel verplaatsen

  • 1,023