[python-nl] probleeemje

Bart Post bart.post at gmail.com
Fri Nov 28 11:35:25 CET 2014


Voorbeeldcode:
Ik zou bovenaan nog toevoegen:

kipNogNietAangebrand = [True, True, True]

Dan zou de andere code veranderen naar:

    if x<100 and y<100 and click[0]==1 and kipNogNietAangebrand[0]:
        screen.blit(aangebrandekip,(100,100))
        z=z+1
        kipNogNietAangebrand[0] = False
    elif x>800 and y<100 and click[0]==1 and kipNogNietAangebrand[1]:
        screen.blit(aangebrandekip,(800,100))
        z=z+1
        kipNogNietAangebrand[1] = False
    elif 350<x<450 and 550<y<650 and click[0]==1 and
kipNogNietAangebrand[2]:
        screen.blit(aangebrandekip,(400,600))
        z=z+1
        kipNogNietAangebrand[2] = False
    elif z>3:
        screen.blit(kerstdiner,(0,0))

Dan hoeft het scherm niet 15 tikken te wachten.

Disclaimer: ik heb de code niet uitgeprobeerd, ik heb geen python bij de
hand. Anders zou ik ook de z weglaten, en in plaats van testen of z>3,
testen of alle kippen aangebrand zijn.

Overigens, zorgt die test er niet voor dat je nu nog een keer extra moet
klikken op een kip als alle kippen zijn aangebrand?

Grts,
Bart

On Fri Nov 28 2014 at 11:21:15 AM Bart Post <bart.post op 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 op 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 <reinoud.v op n.leeuwen.net>
>> *Sent:* Friday, November 28, 2014 12:44 AM
>> *To:* Dutch Python developers and users <python-nl op python.org>
>> *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 op 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 op python.org
>> https://mail.python.org/mailman/listinfo/python-nl
>>
>>  ------------------------------
>> _______________________________________________
>> Python-nl mailing list
>> Python-nl op python.org
>> https://mail.python.org/mailman/listinfo/python-nl
>>
>> _______________________________________________
>> Python-nl mailing list
>> Python-nl op python.org
>> https://mail.python.org/mailman/listinfo/python-nl
>>
>
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <http://mail.python.org/pipermail/python-nl/attachments/20141128/136e21b5/attachment-0001.html>


More information about the Python-nl mailing list