[python-nl] probleeemje

Floris van Manen vm at klankschap.nl
Fri Nov 28 11:39:38 CET 2014


inderdaad, maak een kip-class en vervolgens zoveel instances van kippen als nodig.
Elke kip heeft dan een eigen status.
De main loop controleert telkens de status van elke kip.

Overigens zou ik nooit numerieke constanten her en der in de code plaatsen.
Geeft de grenzen een naam en definieer die ergens aan het begin.
Xmin = 0
Xmax = 800
Ymin = 0
Ymax = 400

of 

Xrange = (0, 800)
Yrange = (0, 400)

Dan kun je ook nog eens het hok verplaatsen als het nodig is ;-)



.F



> On 28 Nov 2014, at 11:21, Bart Post <bart.post at gmail.com> wrote:
> 
> Een andere oplossing is om bij te houden welke kippen al aangebrand zijn, en dat aan elke if/elif toe te voegen, zodat je ze maar één keer kunt aansteken. Dan kan de loop blijven lopen, maar z wordt maar één keer per kip opgehoogd. 
> 
> Voorbeeldcode als ik niet op mijn mobiel ben.
> 
> Grts, 
> Bart 
> 
> On Fri, Nov 28, 2014, 01:21 Marc Stevens <marcs at ziggo.nl> wrote:
> Beste Reinoud,
>  
> Het probleem is al opgelost.
> Ik had het ‘print z’  commando ingegeven en had niet in de gaten dat de muis op gebied stond (100,100) waar de z met een werd opgehoog en dit uitprintte.
> Dat heb ik verholpen door de voorwaarden uit te breiden met  ‘and click[0]==1’ . Dan moet je eerst klikken met de muis als je op dat specifieke gebied staat.
> Alleen wordt de lus zo vaak ververst dat z al meteen na 1 muis klik naar waarde 6 springt en het na het eindscherm. Dit is waarschijnlijk te verhelpen door na de pygame lus het commando ‘clock.tick(15)’ bij te voegen.
> Hierbij is het probleem voorzover verholpen. Deze laatste bijgevoegde code is de juiste. eind goed al goed.
>  
> Alsnog bedankt voor de moeite,
>                                         Marc Stevens
>  
>  
> import pygame
> from pygame.locals import *
>  
> pygame.init()
> screen = pygame.display.set_mode((1200,1000))
> lucifer = pygame.image.load("lucifer.png")
> plofkip=pygame.image.load("plofkip.png")
> aangebrandekip=pygame.image.load("aangebrande-kip.png")
> kerstdiner=pygame.image.load("kerstdiner.png")
> x = y = z = 0
>    
> running = True
> while running:
>     for event in pygame.event.get():
>         if event.type == QUIT:
>             running = False
>     mouse=pygame.mouse.get_pos()
>     click=pygame.mouse.get_pressed()
>     print (z)
>     screen.fill((0,0,0))
>     screen.blit(plofkip,(100,100))
>     screen.blit(plofkip,(800,100))
>     screen.blit(plofkip,(400,600))
>     screen.blit(lucifer, (mouse))
>     if x<100 and y<100 and click[0]==1:
>         screen.blit(aangebrandekip,(100,100))
>         z=z+1
>     elif x>800 and y<100 and click[0]==1:
>         screen.blit(aangebrandekip,(800,100))
>         z=z+1
>     elif 350<x<450 and 550<y<650 and click[0]==1:
>         screen.blit(aangebrandekip,(400,600))
>         z=z+1
>     elif z>3:
>         screen.blit(kerstdiner,(0,0))
>        
>     pygame.display.update()
>  
> pygame.quit()
>  
> From: Reinoud van Leeuwen
> Sent: Friday, November 28, 2014 12:44 AM
> To: Dutch Python developers and users
> Subject: Re: [python-nl] probleeemje
>  
> Wat je wilt is erg onduidelijk, maar ik vermoed dat je 'elif z>3' wilt vervangen door 'if z>3'
>  
> Reinoud
> On 28 Nov 2014, at 00:00, Marc Stevens <marcs at ziggo.nl> wrote:
> 
>> Beste lui,
>>  
>> Ik  mail voor de zoveelste keer over dit programmaatje dat ik heb geschreven, maar ik geef niet op.
>> Na verschillende keren de code aan te passen blijkt dit het beste te werken. En ik heb de clou!
>> In de while loop heb ik  ‘print z’ voor de gein ingevoegd en wat blijkt: Hij doorloopt de lus telkens en telt  van nul op naar oneindig hoever je maar kunt tellen!
>> Vandaar dat ‘elif z>3’ of ‘while z>3’ niet werkt. Hoe kan ik dat een halt toe roepen?
>> Ik heb al verschillende mail verstuurd en heb de code verscheidende malen herzien. Maar ben door jullie telkens op de verkeerde been gezet. (Al dan niet opzettelijk)
>> Nu zou ik hieraan eindelijk  een einde  willen breien, zodat ik hier een punt achter kan zetten.
>> Waarschijnlijk wordt de lus van pygame telkens opnieuw gelezen en tel hij dan 1 bij z op, terwijl niet aan de if of elif voorwaarde wordt voldaan!
>> De vraag is : hoe doorbreek ik dat probleem?
>>  
>>                                               In afwachting op uw reactie,
>>  
>>                                                                                 Groetjes Marc Stevens
>>  
>>  
>>  
>> __________________________________________
>> Python-nl mailing list
>> Python-nl at python.org
>> https://mail.python.org/mailman/listinfo/python-nl
> 
> _______________________________________________
> Python-nl mailing list
> Python-nl at python.org
> https://mail.python.org/mailman/listinfo/python-nl
> 
> _______________________________________________
> Python-nl mailing list
> Python-nl at python.org
> https://mail.python.org/mailman/listinfo/python-nl
> _______________________________________________
> Python-nl mailing list
> Python-nl at python.org
> https://mail.python.org/mailman/listinfo/python-nl



More information about the Python-nl mailing list